MediaRecorder Error: setAudioSource in invalid state(4)

1 人关注

我一直试图让一个自定义的相机屏幕工作,但由于某些原因,下面的代码似乎不起作用。我的结果是 RuntimeException ,由一个错误引起,说。 setAudioSource called in an invalid state(4)

The following is the code in question:

 Preview.getRecorderInstance().setVideoSource(MediaRecorder.VideoSource.CAMERA);
 Preview.getRecorderInstance().setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
 Preview.getRecorderInstance().setAudioSource(MediaRecorder.AudioSource.MIC);
 Preview.getRecorderInstance().setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
 Preview.getRecorderInstance().setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
 Preview.getRecorderInstance().setOutputFile(Environment.getExternalStorageDirectory().getAbsolutePath()
                            + "/test" + System.currentTimeMillis() + ".mp4"
 Preview.getRecorderInstance().prepare();
 Preview.getRecorderInstance().start();

Preview.getRecorderInstance()获得与Preview类(它是SurfaceView的一个子类,旨在显示相机预览)绑定的单子媒体记录器。

My permissions: <uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission.RECORD_AUDIO"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

我希望得到任何帮助,因为我在这方面没有任何进展,我在 stackoverflow 上看了类似的问题。看完回复后,我没能解决这个问题。

android
runtimeexception
mediarecorder
android-mediarecorder
arun1997
arun1997
发布于 2016-01-31
2 个回答
Bien Pham
Bien Pham
发布于 2016-01-31
已采纳
0 人赞同

只需遵循MediaRecord的官方文件。你的代码可能没有遵循指示。函数调用的顺序必须是正确的。

        mediaRecorder = new MediaRecorder();
    mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    mediaRecorder.setOutputFile(_path);
    
Bob Snyder
Bob Snyder
发布于 2016-01-31
0 人赞同