[英]Android mediarecording error start failed -19 runTimeException
我的媒體記錄存在問題。 我正在嘗試使用前置攝像頭進行錄制。 這給了我一個錯誤(但預覽工作)。 每當我使用后置攝像頭時一切正常,我認為這很奇怪。 可能是什么問題,可能是什么解決方案? 我的代碼和錯誤如下所示。
編輯。 使用vga前置攝像頭錄制似乎不起作用。 這怎么可能? 雖然可以使用HTC相機應用程序錄制。
提前感謝你。
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): setup 08-25 23:25:25.362: V/MediaRecorder(4989): constructor 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): Call init() since the media recorder is not initialized yet 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): prepare 08-25 23:25:25.542: V/MediaRecorderJNI(4989): getMediaRecorder E 08-25 23:25:25.542: V/MediaRecorder(4989): prepare 08-25 23:25:25.542: V/MediaRecorderJNI(4989): process_media_recorder_call 08-25 23:25:25.542: V/MediaRecorderJNI(4989): start 08-25 23:25:25.552: V/MediaRecorderJNI(4989): getMediaRecorder E 08-25 23:25:25.552: V/MediaRecorder(4989): start 08-25 23:25:25.562: E/MediaRecorder(4989): start failed: -19 08-25 23:25:25.562: V/MediaRecorderJNI(4989): process_media_recorder_call 08-25 23:25:25.562: E/MediaRecorder(4989): start failed. 08-25 23:25:25.562: E/MediaRecorder(4989): try to delete broken file: /mnt/sdcard/TrouwApp/Videos/25-8-2013_0.3gp 08-25 23:25:25.562: D/videoActivity(4989): ERROR start failed. 08-25 23:25:25.562: D/videoActivity(4989): ERROR java.lang.RuntimeException: start failed. 08-25 23:25:25.562: D/videoActivity(4989): ERROR java.lang.RuntimeException: start failed. 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): destructor 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: start failed. 08-25 23:25:25.572: W/System.err(4989): at android.media.MediaRecorder._start(Native Method) 08-25 23:25:25.572: W/System.err(4989): at 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): at android.view.View.performClick(View.java:3549) 08-25 23:25:25.572: W/System.err(4989): at android.view.View$PerformClick.run(View.java:14393) 08-25 23:25:25.582: W/System.err(4989): at android.os.Handler.handleCallback(Handler.java:605) 08-25 23:25:25.582: W/System.err(4989): at android.os.Handler.dispatchMessage(Handler.java:92) 08-25 23:25:25.582: W/System.err(4989): at android.os.Looper.loop(Looper.java:154) 08-25 23:25:25.582: W/System.err(4989): at android.app.ActivityThread.main(ActivityThread.java:4945) 08-25 23:25:25.582: W/System.err(4989): at java.lang.reflect.Method.invokeNative(Native Method) 08-25 23:25:25.582: W/System.err(4989): at 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): at dalvik.system.NativeStart.main(Native Method) 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): Shutting down VM 08-25 23:25:56.002: W/dalvikvm(4989): threadid=1: thread exiting with uncaught exception (group=0x40ac8228)
找到了解決方案。 由於我正在使用前置攝像頭,我需要從前置攝像頭獲取攝像機配置文件。 通過這樣做我實現了:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.