安卓:通过 TCP 套接字流式传输音频
对于我的应用程序,我需要在Android手机上录制来自MIC的音频,并通过TCP将其发送到另一部Android手机,在那里需要播放它。
我正在使用和类。这适用于文件 - 使用 将音频写入文件,并使用 从中读取。AudioRecord
AudioTrack
DataOutputStream
DataInputStream
但是,如果我从套接字而不是文件获取相同的流,并尝试写入它,则会出现异常。
我不明白可能出什么问题。任何帮助将不胜感激。
编辑:即使我尝试使用更大的缓冲区大小(65535字节,160000字节),问题也是一样的。
这是代码:
录音机:
int bufferSize = AudioRecord.getMinBufferSize(11025, , AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT);
AudioRecord recordInstance = new AudioRecord(MediaRecorder.AudioSource.MIC, 11025, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize);
byte[] tempBuffer = new byte[bufferSize];
recordInstance.startRecording();
while (/*isRecording*/) {
bufferRead = recordInstance.read(tempBuffer, 0, bufferSize);
dataOutputStreamInstance.write(tempBuffer);
}
上面的 DataOutputStream 通过以下方式获得:
BufferedOutputStream buff = new BufferedOutputStream(out1); //out1 is the socket's outputStream
DataOutputStream dataOutputStreamInstance = new DataOutputStream (buff);
你能不能看一看,让我知道我在这里做错了什么?
谢谢