gpt4 book ai didi

java - 我用 MediaRecorder 录制的文件无法播放

转载 作者:行者123 更新时间:2023-11-30 11:30:04 29 4
gpt4 key购买 nike

我正在使用 MediaRecoder 录制声音,但录制完成后无法播放。我尝试使用 Google Play 音乐、ES 媒体播放器,甚至将其上传到电脑并尝试使用 Winamp 打开它。没有播放它!

//AUDIO RECORDER
recorder = new MediaRecorder();
recorder.reset();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
{
externalStoragePath = Environment.getExternalStorageDirectory().getAbsolutePath();
externalOutputPath = externalStoragePath + File.separator + "/Android/data/com.whizzappseasyvoicenotepad/test.mp3";
recorder.setOutputFile(externalOutputPath);
}
else
{
storagePath = Environment.getDataDirectory().getAbsolutePath();
recorder.setOutputFile(storagePath + "/Android/data/com.whizzappseasyvoicenotepad/test.mp3");
}

甚至尝试通过单击按钮在应用程序中打开它:

public void testPlay (View v) throws IllegalArgumentException, SecurityException, IllegalStateException, IOException{
mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(externalOutputPath);
mediaPlayer.prepare();
mediaPlayer.start();
}

但这会使应用程序崩溃。但这不是主要问题,主要问题是我无法播放该文件。编码有问题吗?

我还尝试将其从 .mp3 更改为 .3gp,但没有成功。然后我还尝试删除 .mp3 和 .3gp,只留下“test”作为名称,然后它甚至没有将其识别为音频文件。

哦,如果有人想要应用程序崩溃时的 logcat:

07-31 16:51:43.953: E/AndroidRuntime(26918): java.lang.IllegalStateException: Could not execute method of the activity
07-31 16:51:43.953: E/AndroidRuntime(26918): Caused by: java.lang.reflect.InvocationTargetException
07-31 16:51:43.953: E/AndroidRuntime(26918): Caused by: java.io.IOException: setDataSourceFD failed.: status=0x80000000

不过,应用崩溃目前并不是问题所在。首先我要解决音频文件无法播放的问题。但是,如果您知道它崩溃的原因,我也将不胜感激!

最佳答案

我仍然不确定问题出在哪里,但我认为我停止录制的方式有问题(整个尝试,捕获东西)。我只是重写了整个代码并将 MediaRecorder 放在两种不同的方法中。 startRecording() 和 stopRecording() 方法。现在它完美运行了!

开始录音()

public void startRecording (){
recorder = new MediaRecorder();
recorder.reset();
recorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
{
externalStoragePath = Environment.getExternalStorageDirectory().getAbsolutePath();
externalOutputPath = externalStoragePath + File.separator + "/Android/data/com.whizzappseasyvoicenotepad/test.mp3";
recorder.setOutputFile(externalOutputPath);
}
else
{
storagePath = Environment.getDataDirectory().getAbsolutePath();
recorder.setOutputFile(storagePath + "/Android/data/com.whizzappseasyvoicenotepad/test.mp3");
}
recorder.setOnErrorListener(errorListener);
recorder.setOnInfoListener(infoListener);

try {
recorder.prepare();
recorder.start();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

停止录音()

public void stopRecording() {
if (null != recorder) {
recorder.stop();
recorder.reset();
recorder.release();

recorder = null;
}
}

关于java - 我用 MediaRecorder 录制的文件无法播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17975561/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com