Синхронізація аудіо та відео за допомогою MP4Box / ffmpeg для об'єднання файлів


4

У мене є два 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, щоб налаштувати час початку звукової доріжки, але я намагаюся зробити це програмно для будь-якого вхідного відео (в тому ж кодуванні, звичайно). Я шукаю можливих рішень, які не потребують втручання людини / ручного регулювання. Або, принаймні, розуміння того, що відбувається, щоб змусити другу частину об'єднаного відео вийти з синхронізації.

Відповіді:


7

Я зіткнувся з тією ж проблемою. Для правильної синхронізації потрібно написати команду MP4Box наступним чином:

MP4Box -add file1.mp4 -cat file2.mp4 -new output_file.mp4

замість використання -cat використання -add перед першим відео. Інші параметри правильні і ви можете поставити -new перед виходом відео параметра.


Дякую! Я отримав стоп-кадр, де закінчився файл1 і почався файл2, але аудіо продовжувало відтворюватися. Після зміни -cat … -cat до -add … -cat, Я отримую аудіо та відео, хоча файл2 не синхронізований.
Henrik N

1

Спробуйте скористатися відеоконтейнером Matroskra (MKV).

По-перше, вам потрібно mkvtoolnix . Завантажте та встановіть його, після чого вам потрібно запустити графічний інтерфейс mkvmerge (якщо вам не подобаються інструменти командного рядка, які мені подобаються - хоча ви можете подивитися на розділ посилань на файл з документація mkvmerge ).

Додайте свій перший файл, натиснувши кнопку "додати". Потім натисніть кнопку "append" і відкрийте другий файл. Встановіть вихідний файл, натисніть кнопку "Почати мультикувати" внизу, і далеко ви йдете!

Якщо контейнер не підходить для ваших потреб, ви можете повторно кодувати його, або спробувати перетворити його в якийсь інший формат ... Хоча MKV - дуже милий контейнер!


У мене були проблеми з MP4Box додавання mp4 файлів. Аудіо отримував зіпсований. Я спробував mkvmerge.exe з цього пакета, і він чудово працював!
cdavidyoung

- Спробуйте скористатися відеоконтейнером Makostra. - Не викликається Матроська , спрощене письмо для Матрьошка ?
Lumi

@Lumi хороший улов, спасибі - після редагування.
Breakthrough

0

З пакета mkvtoolnix використовуйте mkvmerge:

mkvmerge -o "output file" "input file" +"appended file"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.