Как склеить два.mp4 в ffmpeg без перекодирования?

Aloha!
Есть задача склеить два видео .mp4 без перекодирования через ffmpeg ну или другую консольную программу.
нагуглить как это сделать - не получилось.

«ffmpeg -i concat:"input1.mp4|input2.mp4" -c copy out.mp4» не склеивает их, на выходе получается тот файл который стоял первым аргументом.
  • Вопрос задан
  • 19589 просмотров
Решения вопроса 1
@gt8one
FFmpeg: склейка и соединение файлов формата видео MP4
Видеофайлы в контейнере MP4 нельзя соединить с помощью оператора concat. Но можно предварительно преобразовать эти файлы в контейнер, например, MPEG-TS без перекодирования видео и звука:

ffmpeg -i vid1.mp4 -acodec copy -vcodec copy -vbsf h264_mp4toannexb -f mpegts vid1.ts
ffmpeg -i vid2.mp4 -acodec copy -vcodec copy -vbsf h264_mp4toannexb -f mpegts vid2.ts

А потом эти файлы уже можно соединить при помощи оператора concat в итоговый файл mp4:

ffmpeg -i "concat:vid1.ts|vid2.ts" -vcodec copy -acodec copy out.mp4
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Lerg
@Lerg
Defold, Corona, Lua, GameDev
Без перекодирования возможно только если файлы одинакового формата - кодек и параметры кодирования должны совпадать.
Вам нужно выделить сперва видеопотоки из обоих файлов
ffmpeg -i input1.mp4 -an -vcodec copy -f m4v input1video.m4v

Затем соединить m4v файлы, не уверен, что простого склеивания хватит, но вполне возможно.
И в конце вам нужно запаковать полученный поток обратно в mp4. Для этого вам потребуется все данные из заголовков файлов. Больше тут:
processors.wiki.ti.com/index.php/Extracting_MPEG-4...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы