2014-02-24 47 views
6

我正在使用mp4Parser isoviewer-1.0-RC-35.jar來合併使用android MediaRecorder錄製的剪輯。剪輯似乎通過聽音軌正確組合,但視頻停留在一幀,時間代碼在播放時保持爲零。mpeg4視頻與mp4Parser相結合 - android產生靜態視頻

在時間單獨剪輯創建

mediaRecorder = new MediaRecorder(); 

     myCamera.lock(); 

     myCamera.unlock(); 

     String clipLocation = file.getAbsolutePath(); 
     _moviePaths.add(clipLocation); 
     // Please maintain sequence of following code. 

     // If you change sequence it will not work. 
     mediaRecorder.setCamera(myCamera); 
     mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); 
     mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 

     if (facingBack) { 
      mediaRecorder.setOrientationHint(90); 
     } else { 
      mediaRecorder.setOrientationHint(270); 
     } 

     // Log.v("cam","supported vid sizes: "+ 
     // myCamera.getParameters().getSupportedVideoSizes()); 
     CamcorderProfile profile = CamcorderProfile 
       .get(CamcorderProfile.QUALITY_720P); 

     // mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
     //mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); 
     // mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
     mediaRecorder.setMaxDuration(g.kMaxVideoDurationInMiliseconds);// 15seconds 
     mediaRecorder.setProfile(profile); 
     mediaRecorder.setPreviewDisplay(surfaceHolder.getSurface()); 
     mediaRecorder.setOutputFile(path + filename); 
     mediaRecorder.prepare(); 
     startTimer(); 
     mediaRecorder.start(); 

    } 

方法,我用的夾子結合

媒體錄像機代碼:

protected void combineClips() throws IOException{ 

     for(int i=0; i<_moviePaths.size();i++){ 

       Movie tm = MovieCreator.build(_moviePaths.get(i)); 
       _clips.add(tm); 

     } 

     List<Track> videoTracks = new LinkedList<Track>(); 
     List<Track> audioTracks = new LinkedList<Track>(); 

      for (Movie m : _clips) { 
       for (Track t : m.getTracks()) { 
        if (t.getHandler().equals("soun")) { 
         audioTracks.add(t); 
        } 
        if (t.getHandler().equals("vide")) { 
         videoTracks.add(t); 
        } 
       } 
      } 

      Movie result = new Movie(); 
      Log.v("cam", "adding:"+audioTracks.size()+" audio tracks and "+videoTracks.size()+" video tracks"); 
      if (audioTracks.size() > 0) { 
       result.addTrack(new AppendTrack(audioTracks.toArray(new Track[audioTracks.size()]))); 
      } 
      if (videoTracks.size() > 0) { 
       result.addTrack(new AppendTrack(videoTracks.toArray(new Track[videoTracks.size()]))); 
      } 

      Container out = new DefaultMp4Builder().build(result); 

      FileChannel fc = new RandomAccessFile(String.format(videoFolder.getPath()+"/output.mp4"), "rw").getChannel(); 
      out.writeContainer(fc); 
      fc.close(); 

    } 

回答

7

顯然,這個問題有一些東西需要與庫:isoviewer-1.0-RC-35.jar。我用isoviewer-1.0-RC-27.jar替換它,現在一切都只是花花公子!

+0

謝謝。它解決了我的問題...絕對應得的upvote但你有沒有注意到,當我們從一個視頻轉移到另一個最終output.mp4時出現空白屏幕......你有沒有想出任何方法來克服 –

+0

不,我沒有注意到.. – erik

+0

@erik,同時將正面錄製的視頻和背面錄製成單個文件。顯示不同旋轉的輸出文件。如何更改這兩個視頻相同的旋轉?我最近三天掙扎着。請幫幫我 –