2012-03-29 89 views
1

我已将录制的音频原始PCM保存到文件rxrawpcm.pcm,之后我试图播放PCM文件但无法播放录制的PCM?我没有听到录制的语音听力只有嗡嗡声无法播放录制的原始PCM文件

配置

AudioRecorder和AudioTrack配置

Stream Type  :STREAM_VOICE_CALL 
Sample Rate  : 8000 
Audio Format :PCM_16BIT 
MODE  :MODE_STREAM 
Channel Config :CHANNEL_CONFIGURATION_MONO 

记录

byte[] buffer=new byte[1600]; 
int read = audioRecord.read(buffer, 0,buffer.length); 
if(recordAudio){ 
if(out!=null){ 
out.write(buffer); 
} 

玩家身边

FileInputStream fis=new FileInputStream(rxFile); 
byte[] buffer=new byte[1600]; 

while(fis.read(buffer)!=-1){ 
audioPlayer.write(buffer, 0, buffer.length); 
} 
+0

为了回放数据,您需要确保采样率,位深度,通道数量(通常是单声道/交错立体声)和字节序都是一致的。 – 2012-03-29 11:29:25

+0

嗨,你可以再次检查我的问题 – 2012-03-29 12:16:42

回答

1

您的缓冲区大小可能太小。您应该使用getMinBufferSize方法来确定不会导致缓冲区溢出的最小缓冲区大小。在这个问题Android AudioRecord class - process live mic audio quickly, set up callback function的顶级投票答案演示了如何正确设置适当的缓冲区大小的录音。

+0

其实我能够播放音频回来。但只有当从文件播放它给我麻烦。我已经设置缓冲区大小为8320. – 2012-03-29 12:55:12

+0

它也看起来像你正在写整个读取缓冲区,当你应该使用读取计数只写入字节数你已阅读。 'out.write(buffer,0,read);' – 2012-03-29 14:08:17

+0

这是一个简单的任务,但我dono为什么我没有得到正确的输出 – 2012-03-29 14:40:31