rmo*_*ney 4 java audio android mediarecorder
在我的应用程序中,我使用 MediaRecorder 在 m4a(AAC 编码)中录制音频。我所有的录音都被缩短了(大约半秒)。就我的申请而言,拥有整个文件很重要。这是一个错误还是我遗漏了什么?
记录代码:
//set up recorder
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_RECOGNITION);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setAudioChannels(1);
recorder.setAudioSamplingRate(16000);
recorder.setOutputFile(fileName);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
//begin recording
recorder.prepare();
recorder.start();
Run Code Online (Sandbox Code Playgroud)
停止记录代码:
//stop recording
recorder.stop();
recorder.release();
recorder = null;
Run Code Online (Sandbox Code Playgroud)
这似乎是 Android 基于 AAC 的音频编码器中的一个错误。我发现唯一有效的解决方案是使用基于 AMR 的音频编码器。不幸的是,AMR_WB 对于人声以外的任何东西听起来都不是很好。
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB);
Run Code Online (Sandbox Code Playgroud)
据我所知,唯一的其他选择是使用 AudioRecord,这要困难得多。