8

Występuje problem z moją notacją multimedialną. Próbuję użyć przedniego aparatu, by go odzyskać. Daje mi to błąd (ale podgląd działa). Ilekroć korzystam z tylnej kamery wszystko działa dobrze, myślę, że to bardzo dziwne. Jaki może być problem i jakie może być rozwiązanie? Mój kod i błędy są pokazane poniżej.Błąd rozpoczęcia nagrywania multimediów w systemie Android nie powiodło się -19 runTimeException

Edytuj. Nagrywanie z przednim aparatem vga wydaje się nie działać. Jak to jest możliwe? Chociaż możliwe jest nagrywanie za pomocą aplikacji aparatu HTC.

Dziękując z góry.

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!!"); 
} 

linie dodane do manifestu:

<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" /> 

ErrorLog:

 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)
+0

Co jest mCamera? – grant

Odpowiedz

19

znaleziono rozwiązanie. Ponieważ korzystam z przedniego aparatu, potrzebuję uzyskać profil kamery z przedniego aparatu. osiągnąłem Thas w ten sposób:

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

Zamiast tego:

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

Preferuj używanie Camera.CameraInfo.CAMERA_FACING_FRONT jako 1 – jDourlens

+2

Nie, ID kamery i CameraInfo.facing to dwie różne rzeczy! Aby uzyskać prawidłowy identyfikator, powinieneś wykonać iterację po informacjach o aparacie i sprawdzić, czy CameraInfo.facing jest równe CAMERA_FACING_FRONT. – LukaCiko

-2

spróbuj tego:

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 
+0

To jest dokładnie to samo –