Объединить два видео mp4 программно

#android #video #mp4parser

#Android #Видео #mp4parser

Вопрос:

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

 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); 
 

Я получаю сообщение об ошибке

Ошибка: (296, 53) ошибка: несовместимые типы: контейнер не может быть преобразован в IsoFile.

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

Ответ №1:

Я нахожу решение

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

     WritableByteChannel wbc = new FileOutputStream(

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

    try {

        container.writeContainer(wbc);

    } finally {

        wbc.close();

    }
 

https://groups.google.com/forum /#!msg/mp4parser-обсуждение/t3jRVeRsGFs/RTT3bdDN-qQJ