14

Ho scritto un opensource camera per Google Glass ma alcune delle persone che lo hanno utilizzato hanno segnalato che il video registrato non viene salvato correttamente per i video lunghi.Android Media Recorder non registra video lunghi su Google Glass

Non sono riuscito a trovare informazioni per quanto riguarda tale limitazione nella documentazione Android

Così momento del check-out ho scoperto che per i video superiori 26 minutes, il file video ottenuto salvato in vetro e le sue dimensioni era intorno 2.7 GB ma la sua durata era 0:00. E non è stato possibile riprodurlo con nessun video player.

Quindi mi chiedo come mai? Perché il video viene registrato correttamente per duration < 26 minutes e viene incasinato per i video più lunghi.

Codice per avviare il video di registrazione è

/** 
* Initialize video recorder to record video 
*/ 
private void initRecorder() { 
    try { 
     File dir = new File(Environment.getExternalStorageDirectory() 
       + File.separator + Environment.DIRECTORY_PICTURES 
       + File.separator + "My Videos"); 
     if (!dir.exists()) { 
      dir.mkdirs(); 
     } 
     videofile = new File(dir, "video.mp4"); 
     recorder.setCamera(mCamera); 

     // Step 2: Set sources 
     recorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER); 
     recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); 

     // Step 3: Set a CamcorderProfile (requires API Level 8 or higher) 
     recorder.setProfile(CamcorderProfile 
       .get(CamcorderProfile.QUALITY_HIGH)); 
     // Step 4: Set output file 
     recorder.setOutputFile(videofile.getAbsolutePath()); 
     // Step 5: Set the preview output 
     recorder.setPreviewDisplay(mPreview.getHolder().getSurface()); 
     // Step 6: Prepare configured MediaRecorder 
     recorder.setMaxDuration(3600* 1000); 
     recorder.setMaxFileSize(-1); 
     recorder.setOnErrorListener(new OnErrorListener() { 

      @Override 
      public void onError(MediaRecorder mr, int what, int extra) { 
      Log.e("Error Recording", what+" Extra "+extra); 

      } 
     }); 
     recorder.setOnInfoListener(new OnInfoListener() { 

      @Override 
      public void onInfo(MediaRecorder mr, int what, int extra) { 
       if (what == MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED) { 
        endVideoRecording(); 
       } 

      } 
     }); 

     recorder.prepare(); 
     recorder.start(); 
     mOverlay.setMode(Mode.RECORDING); 

    } catch (Exception e) { 
     if (e != null && e.getMessage() != null) 
      Log.e("Error Starting CuXtom Camera for video recording", 
        e.getMessage()); 
    } 
} 

risposta

4

Secondo la mia ricerca, sembra che il vetro di Google è solo in grado di registrare video in 2GB dimensioni, quindi se si desidera registrare qualsiasi video la cui dimensione potrebbe essere maggiore allora ti consiglierei di dividere il video in parti più piccole e alla fine unirlo con mp4 parser