Синхронизация аудио и видео с использованием MP4Box / ffmpeg для объединения файлов
7298
Jesse L
У меня есть два файла MPEG-4 в кодировке H.264, которые мне нужно объединить. Я использовал MP4Box для этой задачи, сначала убедившись, что файлы закодированы одинаково (даже дошел до того, что сравнил вывод h264_parse на их видеодорожках), а затем конкатенировал с помощью этой команды:
Это работает, и выходной файл воспроизводится, но при воспроизведении в Quicktime или VLC звук второго видео начинается слишком рано, что делает всю вторую часть объединенного файла несинхронизированной.
Я попытался перекодированием выхода через FFmpeg с -vcodec copyи -acodec copyно синхронизацией проблема сохраняется.
Я также попытался сначала конвертировать в формат MPEG-2, конкатенировать с простым cat file1.mpg file2.mpg > output.mpgи перекодировать результат с помощью ffmpeg. Это было еще хуже.
Я знаю, что могу передавать команды в MP4Box для настройки времени начала звуковой дорожки, но я пытаюсь сделать это программно для любого входного видео (в той же кодировке, конечно). Я ищу возможные решения, которые не требуют вмешательства человека / ручных настроек. Или, по крайней мере, понимание того, что происходит, чтобы вторая часть сцепленного видео вышла из синхронизации.
3 ответа на вопрос
7
Ajith S Nair
Я столкнулся с той же проблемой. Для правильной синхронизации вы должны написать команду MP4Box следующим образом:
вместо использования -catиспользовать -addперед первым видео. Остальные параметры верны, и вы можете поставить -newперед выходным параметром видео.
Thank you! I got a freeze frame where file1 ended and file2 began, but audio kept playing. After changing `-cat … -cat` to `-add … -cat`, I get both audio and video, though file2 is out of sync.
Henrik N 11 лет назад
0
1
Breakthrough
Попробуйте использовать видео контейнер Matroskra (MKV).
Во-первых, вам нужен mkvtoolnix . Скачать и установить его, то вам необходимо запустить GUI mkvmerge (если вам нравится инструменты командной строки, которая меня устраивает - хотя вы можете захотеть взглянуть на файл секцию, связывающий в документации mkvmerge ).
Добавьте свой первый файл, нажав «добавить». Затем нажмите «добавить» и откройте второй файл. Установите выходной файл, нажмите «Начать мультиплексирование» внизу, и все готово!
Если контейнер не подходит для ваших нужд, вы можете перекодировать его или попытаться преобразовать в другой формат ... Хотя MKV - очень красивый контейнер!
У меня были проблемы с добавлением MP4-файлов в MP4Box. Звук был испорчен. Я попробовал mkvmerge.exe из этого пакета, и он работал отлично!
cdavidyoung 11 лет назад
0
»Попробуйте использовать видеоконтейнер« Макостра ». - Разве это не называется * Matroska *, упрощенное написание для * Matryoshka *?
Lumi 11 лет назад
0
@Lumi хороший улов, спасибо - сообщение отредактировано.
Breakthrough 11 лет назад
0