У меня есть два файла MPEG-4 в кодировке H.264, которые мне нужно объединить. Я использовал MP4Box для этой задачи, сначала убедившись, что файлы закодированы одинаково (даже дошел до того, что сравнил вывод h264_parse на их видеодорожках), а затем конкатенировал с помощью этой команды:
MP4Box -cat file1.mp4 -cat file2.mp4 output_file.mp4
Это работает, и выходной файл воспроизводится, но при воспроизведении в Quicktime или VLC звук второго видео начинается слишком рано, что делает всю вторую часть объединенного файла несинхронизированной.
Я попытался перекодировать вывод через ffmpeg с -vcodec copy
-vcodec и -acodec copy
но проблема с синхронизацией сохраняется.
Я также попытался сначала преобразовать в формат MPEG-2, конкатенировать с простым cat file1.mpg file2.mpg > output.mpg
и перекодировать результат с помощью ffmpeg. Это было еще хуже.
Я знаю, что могу передавать команды в MP4Box для настройки времени начала звуковой дорожки, но я пытаюсь сделать это программно для любого входного видео (в той же кодировке, конечно). Я ищу возможные решения, которые не требуют вмешательства человека / ручных настроек. Или, по крайней мере, понимание того, что происходит, чтобы вторая часть сцепленного видео вышла из синхронизации.