我目前在Android中使用AudioTrack和AudioRecord类。Android AudioRecord和AudioTrack编解码器选项?
我用的是纯PCM数据,但我想知道我的选择是对其他的编解码器?
从this page看来我只能编码和使用AMR窄带解码?
我目前设置音频类别如下:
arec = new AudioRecord(MediaRecorder.AudioSource.MIC,
11025,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT,
buffersize);
atrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL,
11025,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT,
buffersize,
AudioTrack.MODE_STREAM);
所以我的问题是我如何更改从PCM编码到其他支持的编解码器之一?
当我尝试改变的AudioFormat ENCODING_PCM_16BIT我只得到默认或无效编码的选项与PCM选项。如果任何人的任何或任何帮助都知道这里非常感谢
到Android上的编码和解码音频教程的所有链接都将是巨大的。
感谢
编辑:我已经改变了我的代码如下:
arec = new AudioRecord(MediaRecorder.AudioSource.MIC,
11025,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
**MediaRecorder.AudioEncoder.AMR_NB**,
buffersize);
atrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL,
11025,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
**MediaRecorder.AudioEncoder.AMR_NB**,
buffersize,
AudioTrack.MODE_STREAM);
的代码运行正常,但我不知道它实际上编码音频作为AMR_NB,如果这是不是一个正确的方法来做到这一点?
使用原始PCM当我得到一个缓冲区溢出但没有因为使用新代码与MediaRecorder.AudioEncoder.AMR_NB用来代替AudioFormat.PCM
这是因为你发布你的问题很长一段时间,但也许它仍然是自己感兴趣的人......你是不是对编码AMR_NB。标志只是int域。 MediaRecorder.AudioEncoder.AMR_NB是0x01 ...与AudioFormat.ENCODING_DEFAULT相同。所以你只是使用默认编码。 – hacksteak25 2011-04-22 20:21:21