2016-10-14 2 views
0

Я пытаюсь выполнить два mp4 видео mp4parser lib. Но я получаю ошибку. Вот мой кодКонкат два mp4 видео программно

public void appendTwoVideo(String mp4_1,String mp4_2) throws IOException { 
    Movie[] inMovies = new Movie[]{MovieCreator.build(mp4_1), 
      MovieCreator.build(mp4_2)}; 

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

    for (Movie m : inMovies) { 
     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()]))); 
    } 

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

    FileChannel fc = new RandomAccessFile(String.format("output.mp4"), "rw").getChannel(); 
    fc.position(0); 
    out.getBox(fc); 
    fc.close(); 
} 

В соответствии

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

Я получаю ошибку

Error:(296, 53) error: incompatible types: Container cannot be converted to IsoFile. 

Может кто-нибудь помочь мне с моей ошибкой или как можно Concat два видео любым другим способом?

ответ

0

я найти решение

Только не используйте IsoFile. Использование контейнера в качестве типа, записать на диск контейнер с

WritableByteChannel wbc = new FileOutputStream(

      new File(outputDirectory, filename)).getChannel(); 

    try { 

     container.writeContainer(wbc); 

    } finally { 

     wbc.close(); 

    } 

https://groups.google.com/forum/#!msg/mp4parser-discussion/t3jRVeRsGFs/RTT3bdDN-qQJ

Смежные вопросы