我目前在Android上使用audioTrack和audioRecord类。
我使用纯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更改为其他受支持的编解码器之一?
当我尝试改变音频格式上的编码_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的新代码后,没有出现过缓冲区溢出。