Cha*_*nya 21 java sockets android dataoutputstream
对于我的应用程序,我需要在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);
}
Run Code Online (Sandbox Code Playgroud)
上面的DataOutputStream获得如下:
BufferedOutputStream buff = new BufferedOutputStream(out1); //out1 is the socket's outputStream
DataOutputStream dataOutputStreamInstance = new DataOutputStream (buff);
Run Code Online (Sandbox Code Playgroud)
请你看看,让我知道我在这里做错了什么?
谢谢,
我得到了这个工作,有一些帮助,只有部分.
我从http://emeadev.blogspot.com/2009/09/raw-audio-manipulation-in-android.html上的代码开始,将File的流更改为Socket的流,并将isAvailable()更改为if(inputStream) .read(byteArray)!= -1).
现在正在通过TCP实时流式传输音频.
然而,
我听到的另一端是噪音,我现在正在寻找AudioRecorder和AudioTrack的正确参数集 - 频率,频道配置和编码,音频源等.
如果您对此有任何疑问,请告诉我.
谢谢,
编辑:这是我的一个愚蠢的错误.除了上面提到的所有内容之外,在播放器端使用inputStream,在记录器端使用outputStream,使用字节数组而不是短路,它将起作用.:)
| 归档时间: |
|
| 查看次数: |
16408 次 |
| 最近记录: |