2014-11-03 85 views
1

我試圖使用MP4Parser將簡單的3秒的視頻添加到現有視頻,但由於某種原因,我無法在合併發生後播放視頻。當我試圖從我的畫廊播放視頻時,我收到了臭名昭着的「對不起,此視頻無法播放」錯誤。任何人都有類似的經歷嗎?我正在測試一臺運行4.4 KitKat的HTC OneAndroid MP4Parser無法播放視頻

下面是我的方法,將.mp4剪輯合併到一個剪輯中,取自MP4Parser本身的AppendExample。

private void createFinalOutputVideo() { 

    CameraHelper helper = new CameraHelper(this); 
    File outFile = helper.getOutputMediaFile(CameraHelper.MEDIA_TYPE_VIDEO); 


    try { 


     Movie[] movies = new Movie[2]; 
     movies[0] = MovieCreator.build(mVideoPath); 
     movies[1] = MovieCreator.build(mOutroPath); 


     Log.d("ShareActivity", "Video 1 path " + mVideoPath); 
     Log.d("ShareActivity", "Video 2 path " + mOutroPath); 

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

     for (Movie m : movies) { 
      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(); 
     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(outFile.getPath()), "rw").getChannel(); 


     out.writeContainer(fc); 
     fc.close(); 

     Toast.makeText(this, "Merge successful! Output path is " + outFile.getAbsolutePath(), Toast.LENGTH_SHORT).show(); 

    } catch (IOException e) { 
     e.printStackTrace(); 
     Toast.makeText(this, "Error merging videos!", Toast.LENGTH_SHORT).show(); 
    } 


} 

有沒有人有MP4Parser這個問題?如果塞巴斯蒂安能在這裏發出邀請會很好。

回答

0

我一直在使用https://github.com/hoolrory/AndroidVideoSamples來調整內部使用mp4parser的視頻大小。樣本有調整視頻大小的方法,但不會有聲音。所以我添加了一個混合曲目,將視頻添加到視頻中。但是最終視頻會出現「無法播放此視頻」消息。

希望能有所幫助。