我在音频编码器上遇到问题。我使用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);
答案 0 :(得分:0)
答案 1 :(得分:0)
问题是android应该支持所有设备上的某些编解码器,但这种情况从未发生过。我遇到了这个问题,并发布了一个问题here,让您了解我是如何克服它的。
每个设备都应该能够使用AudioEncoder.AMR_NB或AudioEncoder.DEFAULT,但事实并非如此。你最好的选择IMO是遍历AudioEncoder类中可用的编码器,并测试编解码器是否在prepare()或start()上失败。如果是,则递增计数器并继续循环。在我的情况下,我使用ErrorListener来捕获错误或成功,并将默认编码器常量设置为共享设置。