我正在尝试使用媒体录制器录制视频。 当我尝试录制视频时,它会使用以下logcat崩溃。
05-20 14:28:43.432:E / MediaRecorder(4281):开始失败:-38 05-20 14:28:43.432:D / AndroidRuntime(4281):关闭VM 05-20 14:28:43.432:W / dalvikvm(4281):threadid = 1:线程退出 未捕获的异常(组= 0x415c5d88)05-20 14:28:43.462: E / AndroidRuntime(4281):致命异常:主05-20 14:28:43.462: E / AndroidRuntime(4281):进程:com.abc.def,PID: 4281 05-20 14:28:43.462:E / AndroidRuntime(4281): java.lang.IllegalStateException 05-20 14:28:43.462: E / AndroidRuntime(4281):在android.media.MediaRecorder.start(Native 方法)05-20 14:28:43.462:E / AndroidRuntime(4281):at com.abc.def.PrivateChatDialog.startVideoRecording(PrivateChatDialog.java:1413) 05-20 14:28:43.462:E / AndroidRuntime(4281):at com.abc.def.PrivateChatDialog $ 3.onClick(PrivateChatDialog.java:198) 05-20 14:28:43.462:E / AndroidRuntime(4281):at android.view.View.performClick(View.java:4569)05-20 14:28:43.462: E / AndroidRuntime(4281):at android.view.View $ PerformClick.run(View.java:18570)05-20 14:28:43.462:E / AndroidRuntime(4281):at android.os.Handler.handleCallback(Handler.java:743)05-20 14:28:43.462:E / AndroidRuntime(4281):at android.os.Handler.dispatchMessage(Handler.java:99)05-20 14:28:43.462:E / AndroidRuntime(4281):at android.os.Looper.loop(Looper.java:136)05-20 14:28:43.462: E / AndroidRuntime(4281):at android.app.ActivityThread.main(ActivityThread.java:5212)05-20 14:28:43.462:E / AndroidRuntime(4281):at java.lang.reflect.Method.invokeNative(Native Method)05-20 14:28:43.462:E / AndroidRuntime(4281):at java.lang.reflect.Method.invoke(Method.java:515)05-20 14:28:43.462: E / AndroidRuntime(4281):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:786) 05-20 14:28:43.462:E / AndroidRuntime(4281):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)05-20 14:28:43.462:E / AndroidRuntime(4281):at dalvik.system.NativeStart.main(原生方法)
这是我用来捕捉视频的代码。
protected void startVideoRecording() throws IOException {
if(mrec==null)
mrec = new MediaRecorder(); // Works well
mCamera.unlock();
mrec.setCamera(mCamera);
mrec.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mrec.setAudioSource(MediaRecorder.AudioSource.MIC);
mrec.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_LOW));
mrec.setPreviewDisplay(surfaceHolder.getSurface());
mrec.setOutputFile(getVideoFileName());
mrec.setVideoSize(320, 280);
mrec.prepare();
mrec.start();
videoRecording = true;
}
我已经尝试了很多并且搜索了很多但是找不到解决方案。 我找到了was this SO question
但是我没有录制音频的后台服务。 请帮我找一个解决方案。 谢谢。
答案 0 :(得分:0)
我修改了这个函数如下:
public void startVideoRecording() throws IOException {
mrec = new MediaRecorder(); // Works well
mCamera.unlock();
mrec.setCamera(mCamera);
mrec.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mrec.setAudioSource(MediaRecorder.AudioSource.MIC);
mrec.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mrec.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
mrec.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
mrec.setPreviewDisplay(surfaceHolder.getSurface());
mrec.setOrientationHint(90);
String path = getVideoFileName();
mrec.setOutputFile(path);
mrec.prepare();
mrec.start();
videoRecording = true;
}
此后应用程序崩溃了,然后重新启动手机就行了,现在一切正常。