0

我在音频编码器上遇到问题。我使用 MediaRecorder 录制声音。但是,我发现我的设备必须使用默认的 audioEncoder 才能成功录制语音。

如何检查默认音频编码器的类型?

谢谢。

更新:

private MediaRecorder mRecorder = null;
public void startRecording(String aOutputFileName, int aOutputformat, int       aAudioEncoder) 
{
    if(null == mRecorder){
        mRecorder = new MediaRecorder();
        mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        mRecorder.setOutputFormat(aOutputformat);
        mRecorder.setOutputFile(aOutputFileName);
        mRecorder.setAudioEncoder(aAudioEncoder);

        try {
            mRecorder.prepare();
            mRecorder.start();
        } 
        catch (IOException e) {
            e.printStackTrace();
            Log.e(LOG_TAG, "prepare() failed");
        }

    }
}

调用函数:

mVoiceRecorder.startRecording(mFileName, MediaRecorder.OutputFormat.THREE_GPP, MediaRecorder.AudioEncoder.DEFAULT);
4

2 回答 2

0

您可以通过以下方式指定所需的音频编解码器:

MediaRecorder.setAudioEncoder()

所有 Android 设备都至少支持这些编解码器,因此请选择您想要的。

于 2012-08-07T07:00:21.113 回答
0

问题是 android 应该支持所有设备上的某些编解码器,但从未发生过。我遇到了这个问题,并在这里发布了一个问题,让您了解我如何克服它。

每个设备都应该能够使用 AudioEncoder.AMR_NB 或 AudioEncoder.DEFAULT 但事实并非如此。您最好的选择是 IMO 循环遍历 AudioEncoder 类中可用的编码器,并测试编解码器是否在 prepare() 或 start() 上失败。如果是,则增加一个计数器并继续循环。在我的情况下,我使用 ErrorListener 来捕获错误或成功并将默认编码器常量设置为共享设置。

于 2012-09-11T12:27:41.623 回答