Android mediarecording错误启动失败-19 runTimeException

我的媒体logging遇到问题。 我正在尝试使用前置摄像头进行录制。 这给了我一个错误(但预览正在工作)。 每当我使用后视镜,一切正常,我觉得这很奇怪。 可能是什么问题,可能是什么解决scheme? 我的代码和错误如下所示。

编辑。 使用vga前置摄像头录制似乎不起作用。 这怎么可能? 虽然与HTC相机应用程序是可能的logging。

提前感谢你。

protected void startRecording() throws Exception { mrec = new MediaRecorder(); mCamera.unlock(); mrec.setCamera(mCamera); mrec.setVideoSource(MediaRecorder.VideoSource.CAMERA); mrec.setAudioSource(MediaRecorder.AudioSource.MIC); mrec.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH)); //mrec.setPreviewDisplay(surfaceHolder.getSurface()); File picDirectory = new File(Environment.getExternalStorageDirectory() +"/TrouwApp"); picDirectory.mkdirs(); File mediaStorageDir = new File(Environment.getExternalStorageDirectory() +"/TrouwApp", "Videos"); // Create the storage directory if it does not exist if (! mediaStorageDir.exists()){ if (! mediaStorageDir.mkdirs()){ Log.d("MyCameraApp", "failed to create directory"); } } mrec.setOutputFile( mediaStorageDir.getPath() + File.separator + date + "_" + videonr+ ".3gp"); mrec.prepare(); mrec.start();//line 136 Log.d(TAG, "Recording started!!"); } 

添加到清单中的行:

 <uses-feature android:name="android.hardware.camera" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

错误日志:

  08-25 23:25:25.332:V / MediaRecorderJNI(4989):设置
 08-25 23:25:25.362:V / MediaRecorder(4989):构造函数
 08-25 23:25:25.402:V / MediaRecorder(4989):doCleanUp
 08-25 23:25:25.402:V / MediaRecorder(4989):setListener
 08-25 23:25:25.402:V / MediaRecorderJNI(4989):setMediaRecorder E:mr = mr
 08-25 23:25:25.402:V / MediaRecorderJNI(4989):setMediaRecorder X
 08-25 23:25:25.402:V / MediaRecorderJNI(4989):getMediaRecorder E
 08-25 23:25:25.402:V / MediaRecorderJNI(4989):JNIMediaRecorderListener :: setCamera
 08-25 23:25:25.402:V / MediaRecorder(4989):setCamera(0x16c2290,0x1c08dc8)
 08-25 23:25:25.402:V / MediaRecorderJNI(4989):process_media_recorder_call
 08-25 23:25:25.402:V / MediaRecorderJNI(4989):setVideoSource(1)
 08-25 23:25:25.402:V / MediaRecorderJNI(4989):getMediaRecorder E
 08-25 23:25:25.402:V / MediaRecorder(4989):setVideoSource(1)
 08-25 23:25:25.402:V / MediaRecorder(4989):调用init(),因为媒体logging器尚未初始化
 08-25 23:25:25.402:V / MediaRecorder(4989):init
 08-25 23:25:25.412:V / MediaRecorderJNI(4989):process_media_recorder_call
 08-25 23:25:25.412:V / MediaRecorderJNI(4989):setAudioSource(1)
 08-25 23:25:25.412:V / MediaRecorderJNI(4989):getMediaRecorder E
 08-25 23:25:25.412:V / MediaRecorder(4989):setAudioSource(1)
 08-25 23:25:25.412:V / MediaRecorderJNI(4989):process_media_recorder_call
 08-25 23:25:25.502:V / MediaRecorderJNI(4989):setOutputFormat(2)
 08-25 23:25:25.502:V / MediaRecorderJNI(4989):getMediaRecorder E
 08-25 23:25:25.502:V / MediaRecorder(4989):setOutputFormat(2)
 08-25 23:25:25.502:V / MediaRecorderJNI(4989):process_media_recorder_call
 08-25 23:25:25.502:V / MediaRecorderJNI(4989):setVideoFrameRate(30)
 08-25 23:25:25.502:V / MediaRecorderJNI(4989):getMediaRecorder E
 08-25 23:25:25.502:V / MediaRecorder(4989):setVideoFrameRate(30)
 08-25 23:25:25.502:V / MediaRecorderJNI(4989):process_media_recorder_call
 08-25 23:25:25.502:V / MediaRecorderJNI(4989):setVideoSize(1920,1088)
 08-25 23:25:25.502:V / MediaRecorderJNI(4989):getMediaRecorder E
 08-25 23:25:25.502:V / MediaRecorder(4989):setVideoSize(1920,1088)
 08-25 23:25:25.502:V / MediaRecorderJNI(4989):process_media_recorder_call
 08-25 23:25:25.502:V / MediaRecorderJNI(4989):setParameter()
 08-25 23:25:25.502:V / MediaRecorderJNI(4989):getMediaRecorder E
 08-25 23:25:25.502:V / MediaRecorder(4989):setParameters(video-param-encoding-bitrate = 12000000)
 08-25 23:25:25.512:V / MediaRecorderJNI(4989):process_media_recorder_call
 08-25 23:25:25.512:V / MediaRecorderJNI(4989):setVideoEncoder(2)
 08-25 23:25:25.512:V / MediaRecorderJNI(4989):getMediaRecorder E
 08-25 23:25:25.512:V / MediaRecorder(4989):setVideoEncoder(2)
 08-25 23:25:25.512:V / MediaRecorderJNI(4989):process_media_recorder_call
 08-25 23:25:25.512:V / MediaRecorderJNI(4989):setParameter()
 08-25 23:25:25.512:V / MediaRecorderJNI(4989):getMediaRecorder E
 08-25 23:25:25.512:V / MediaRecorder(4989):setParameters(audio-param-encoding-bitrate = 96000)
 08-25 23:25:25.512:V / MediaRecorderJNI(4989):process_media_recorder_call
 08-25 23:25:25.512:V / MediaRecorderJNI(4989):setParameter()
 08-25 23:25:25.512:V / MediaRecorderJNI(4989):getMediaRecorder E
 08-25 23:25:25.512:V / MediaRecorder(4989):setParameters(audio-param-number-of-channels = 1)
 08-25 23:25:25.512:V / MediaRecorderJNI(4989):process_media_recorder_call
 08-25 23:25:25.512:V / MediaRecorderJNI(4989):setParameter()
 08-25 23:25:25.512:V / MediaRecorderJNI(4989):getMediaRecorder E
 08-25 23:25:25.512:V / MediaRecorder(4989):setParameters(audio-param-sampling-rate = 48000)
 08-25 23:25:25.512:V / MediaRecorderJNI(4989):process_media_recorder_call
 08-25 23:25:25.512:V / MediaRecorderJNI(4989):setAudioEncoder(3)
 08-25 23:25:25.512:V / MediaRecorderJNI(4989):getMediaRecorder E
 08-25 23:25:25.512:V / MediaRecorder(4989):setAudioEncoder(3)
 08-25 23:25:25.512:V / MediaRecorderJNI(4989):process_media_recorder_call
 08-25 23:25:25.542:V / MediaRecorderJNI(4989):setOutputFile
 08-25 23:25:25.542:V / MediaRecorderJNI(4989):getMediaRecorder E
 08-25 23:25:25.542:V / MediaRecorder(4989):setOutputFile(60,0,0)
 08-25 23:25:25.542:V / MediaRecorderJNI(4989):process_media_recorder_call
 08-25 23:25:25.542:V / MediaRecorderJNI(4989):准备
 08-25 23:25:25.542:V / MediaRecorderJNI(4989):getMediaRecorder E
 08-25 23:25:25.542:V / MediaRecorder(4989):准备
 08-25 23:25:25.542:V / MediaRecorderJNI(4989):process_media_recorder_call
 08-25 23:25:25.542:V / MediaRecorderJNI(4989):开始
 08-25 23:25:25.552:V / MediaRecorderJNI(4989):getMediaRecorder E
 08-25 23:25:25.552:V / MediaRecorder(4989):开始
 08-25 23:25:25.562:E / MediaRecorder(4989):开始失败:-19
 08-25 23:25:25.562:V / MediaRecorderJNI(4989):process_media_recorder_call
 08-25 23:25:25.562:E / MediaRecorder(4989):启动失败。
 08-25 23:25:25.562:E / MediaRecorder(4989):尝试删除损坏的文件:/mnt/sdcard/TrouwApp/Videos/25-8-2013_0.3gp
 08-25 23:25:25.562:D / videoActivity(4989):错误启动失败。
 08-25 23:25:25.562:D / videoActivity(4989):错误java.lang.RuntimeException:启动失败。
 08-25 23:25:25.562:D / videoActivity(4989):错误java.lang.RuntimeException:启动失败。
 08-25 23:25:25.562:V / MediaRecorderJNI(4989):release
 08-25 23:25:25.562:V / MediaRecorderJNI(4989):setMediaRecorder E:mr = null
 08-25 23:25:25.562:V / MediaRecorderJNI(4989):setMediaRecorder X
 08-25 23:25:25.562:V / MediaRecorder(4989):setListener
 08-25 23:25:25.562:V / MediaRecorder(4989):release
 08-25 23:25:25.562:V / MediaRecorder(4989):析构函数
 08-25 23:25:25.562:D / videoActivity(4989):START RECORDING ERROR
 08-25 23:25:25.562:W / System.err(4989):java.lang.RuntimeException:启动失败。
 08-25 23:25:25.572:W / System.err(4989):在android.media.MediaRecorder._start(本机方法)
 08-25 23:25:25.572:W / System.err(4989):在android.media.MediaRecorder.start(MediaRecorder.java:712)
 08-25 23:25:25.572:W / System.err(4989):at com.example.trouwapp.VideoActivity.startRecording(VideoActivity.java:136)
 08-25 23:25:25.572:W / System.err(4989):at com.example.trouwapp.VideoActivity.onClick(VideoActivity.java:246)
 08-25 23:25:25.572:W / System.err(4989):在android.view.View.performClick(View.java:3549)
 08-25 23:25:25.572:W / System.err(4989):在android.view.View $ PerformClick.run(View.java:14393)
 08-25 23:25:25.582:W / System.err(4989):在android.os.Handler.handleCallback(Handler.java:605)
 08-25 23:25:25.582:W / System.err(4989):在android.os.Handler.dispatchMessage(Handler.java:92)
 08-25 23:25:25.582:W / System.err(4989):在android.os.Looper.loop(Looper.java:154)
 08-25 23:25:25.582:W / System.err(4989):在android.app.ActivityThread.main(ActivityThread.java:4945)
 08-25 23:25:25.582:W / System.err(4989):在java.lang.reflect.Method.invokeNative(Native方法)
 08-25 23:25:25.582:W / System.err(4989):在java.lang.reflect.Method.invoke(Method.java:511)
 08-25 23:25:25.582:W / System.err(4989):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784)
 08-25 23:25:25.582:W / System.err(4989):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
 08-25 23:25:25.592:W / System.err(4989):在dalvik.system.NativeStart.main(本地方法)
 08-25 23:25:55.582:V / MediaRecorderJNI(4989):native_reset
 08-25 23:25:55.582:V / MediaRecorderJNI(4989):getMediaRecorder E
 08-25 23:25:55.582:V / MediaRecorderJNI(4989):release
 08-25 23:25:55.582:V / MediaRecorderJNI(4989):setMediaRecorder E:mr = null
 08-25 23:25:55.582:V / MediaRecorderJNI(4989):setMediaRecorder X
 08-25 23:25:56.002:D / AndroidRuntime(4989):closures虚拟机
 08-25 23:25:56.002:W / dalvikvm(4989):threadid = 1:线程退出与未捕获的exception(组= 0x40ac8228) 

Related of "Android mediarecording错误启动失败-19 runTimeException"

find解决scheme。 由于我使用前置摄像头,因此需要从前置摄像头获取摄像机configuration文件。 我通过这样做了thas:

 mrec.setProfile(CamcorderProfile.get(1, CamcorderProfile.QUALITY_HIGH)); 

而不是这个:

 mrec.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH)); 

尝试这个:

 StartRecording = false; if( mrec == null ) { mrec = new MediaRecorder(); mCamera.unlock(); mrec.setCamera(mCamera); File picDirectory = new File(Environment.getExternalStorageDirectory() +"/TrouwApp"); picDirectory.mkdirs(); File mediaStorageDir = new File(Environment.getExternalStorageDirectory() +"/TrouwApp", "Videos"); mrec.setAudioSource(MediaRecorder.AudioSource.MIC); mrec.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); //you forgot this mrec.setOutputFile( mediaStorageDir.getPath() + File.separator + date + "_" + videonr+ ".3gp"); mrec.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); //you forgot this also mrec.setVideoSource(MediaRecorder.VideoSource.CAMERA); mrec.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH)); } if(!StartRecording) { Log.d(TAG, "Recording stopped!!"); try { mrec.prepare(); mrec.start(); StartRecording = true; } catch (IOException e) { e.printStackTrace(); } } else { Log.d(TAG, "Recording started!!"); StartRecording = false; mrec.stop(); mrec.reset(); mrec.release(); mrec = null; }//else