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