Прежде всего, привет,
Когда я добавляю еще один файл mp4 в конец файла mp4, видео выглядит полностью черным экраном, но я могу получить звуки видео.
Если я добавьте копию видео в его конец, я увидел, что проблем нет, , но это не тот сценарий, который мне нужен.
Я получаю сообщение об ошибке "перемещение текста" при слиянии с библиотекой FFmpeg. (Эта проблема устраняется, когда я меняю эту версию библиотеки, но у меня есть другие проблемы. Поэтому я вижу альтернативу mp4parser.)
Фрагмент кода, который позволяет видео быть объединены следующим образом. С этого момента спасибо.
private void appendTwoVideos(String firstVideoPath, String secondVideoPath) {
try {
Movie[] inMovies = new Movie[2];
inMovies[0] = MovieCreator.build(firstVideoPath);
inMovies[1] = MovieCreator.build(secondVideoPath);
List<Track> videoTracks = new LinkedList<>();
List<Track> audioTracks = new LinkedList<>();
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()])));
}
BasicContainer out = (BasicContainer) new DefaultMp4Builder().build(result);
@SuppressWarnings("resource")
FileChannel fc = new RandomAccessFile(DIRECTORY_PATH + "output.mp4", "rw").getChannel();
out.writeContainer(fc);
fc.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}