Объединение двух видео из ffmpeg

Я хочу объединить два видео mp4, чтобы сформировать одно видео mp4 с помощью ffmpeg.

то, что я пробовал до сих пор, это

ffmpeg -i input1.mp4 -i input2.mp4 output.mp4

но каждый раз, когда я получаю видео с видеокодеком первого ввода, а не другого. Как их объединить? Любая идея по этому поводу будет высоко оценена.

4 ответов


пожалуйста, прочитайте FFMPEG часто задаваемые вопросы для получения информации о присоединении файлов.

к сожалению, поскольку вы используете файлы MP4, простая конкатенация не будет работать для вас, потому что формат MP4 содержит раздел "заголовок" (хотя это не обязательно должно быть в начале файла), который описывает и содержит смещения в медиа-данные. Вам нужно будет перекодировать оба файла в формат, который может быть объединен, а затем создать файл MP4 из этого формата (который будет генерировать соответствующий раздел заголовка).


вы не можете конкатенировать .mp4 файлы, но вы можете объединить .файлы mpg. Попробуйте преобразовать оба видео .mpg сначала использует ffmpeg. Затем выполните простую команду Linux cat на обоих .mpg файлы для создания комбинированных .файл mpg. После этого преобразуйте объединенное .mpg файл .mp4 с использованием ffmpeg. Это своего рода окольный подход, но он работает. Вы можете использовать "именованные каналы", чтобы сократить количество команд, но результат тот же.


Как показывают предыдущие ответы, вам нужно сначала преобразовать в промежуточный формат. Если mp4 содержит битовый поток h264, вы можете использовать:

ffmpeg -i input1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts input1.ts
ffmpeg -i input2.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts input2.ts
ffmpeg -i "concat:input1.ts|input2.ts" -c copy output.mp4

более подробный ответ вы можете найти здесь.


вы можете сделать это с помощью ffmpeg, но есть также небольшой инструмент, называемый MP4Box (часть GPAC), который может объединять несколько файлов MP4.

в вашем случае, синтаксис

MP4Box -cat input1.mp4 -cat input2.mp4 output.mp4