#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