Android 以AMR文件格式录制音频
我想以AMR文件格式录制音频。我目前正在使用以下代码录制音频:Android 以AMR文件格式录制音频,android,audio-recording,mediarecorder,Android,Audio Recording,Mediarecorder,我想以AMR文件格式录制音频。我目前正在使用以下代码录制音频: outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + "Sample.3gp"; myRecorder = new MediaRecorder(); myRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); myRecorder.setOutputFormat(MediaReco
outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + "Sample.3gp";
myRecorder = new MediaRecorder();
myRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
myRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
myRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
myRecorder.setOutputFile(outputFile);
但它会生成.3gp文件。如何获取.amr文件?
将outputfile更改为Sample.amr有效。但这是正确的方法吗?请帮忙
编辑
它现在已经解决了
这是我愚蠢的错误:我使用了myRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR\u NB)代码>
应该是-
myRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
因此,以下代码用于以AMR格式录制:
outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + "Sample.amr";
myRecorder = new MediaRecorder();
myRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
myRecorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB);
myRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
myRecorder.setOutputFile(outputFile);
指
请尝试以下代码:
Log.i(TAG,"Record start");
String outputFile;
MediaRecorder myRecorder;
outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + "Sample.amr";
Log.i(TAG,"file name: " + outputFile);
myRecorder = new MediaRecorder();
myRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
myRecorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB);
myRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
myRecorder.setOutputFile(outputFile);
try {
myRecorder.prepare();
myRecorder.start();
} catch (IOException e) {
e.printStackTrace();
}
try {
Thread.sleep(30*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
myRecorder.stop();
myRecorder.release();
Log.i(TAG,"Record finished");
要点:
输出文件名使用“.amr”后缀。输出格式使用OutputFormat.AMR\u NB参数李>
编码器使用AudioEncoder.AMR\u NB
参数
谢谢但我已经试过了。当我们开始录制时,它会强制关闭应用程序,错误为:start failed-22 java.lang.RuntimeException:start failedId您先调用prepare,然后调用start。如果您可以共享整个文件,这会很有帮助。请检查我编辑的版本,它在moto g设备上工作。你的设备是什么?可能是设备问题。是的,我先打电话准备,然后再开始。我已经扎根三星Galaxy Ace(OS Cyanogen mod 7-2.3.7)。是因为它的根吗?我会在其他设备上进行测试,然后回复您。谢谢,嘿,谢谢!它现在正在工作。那是我愚蠢的错误。我使用了myRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB)代码>