我可以检查默认音频编码器吗?

时间:2012-08-07 06:25:07

标签: android audio voice encoder

我在音频编码器上遇到问题。我使用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);

2 个答案:

答案 0 :(得分:0)

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

MediaRecorder.setAudioEncoder()

所有Android设备至少支持these codecs,因此请选择您想要的设备。

答案 1 :(得分:0)

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

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