1

У меня есть 2 mp4 видео, которые не могут объединиться при использовании:

MP4Box -адд 1.mp4 -cat 2.mp4 out.mp4

Есть ли способ перекодировать 2.mp4 так, чтобы вызов concat создавал верный вывод? Возможно с ffmpeg? Я могу только перекодировать один файл, и я хочу, чтобы конкатенация не делала никакой кодировки.

Ошибка, которую я в настоящее время получаю с этими 2 файлами:

[iso file] Поле "minf" имеет 56 дополнительных байтов. Ошибка добавления 2.mp4: файл IsoMedia урезан

1 ответ1

0

Вы можете попробовать сделать это с помощью ffmpeg:

mkfifo temp0 temp1
ffmpeg -i input0.mp4 -c copy -bsf h264_mp4toannexb -f mpegts -y temp0 2> /dev/null & \
ffmpeg -i input1.mp4 -c copy -bsf h264_mp4toannexb -f mpegts -y temp1 2> /dev/null & \
ffmpeg -f mpegts -i "concat:temp0|temp1" -c copy -absf aac_adtstoasc output.mp4

Это ничего не перекодирует, оно помещает их в новый контейнер транспортного потока, что упрощает их конкатенацию, а затем объединяет их обратно в MP4. Если output.mp4 уже существует, команда не будет выполнена. В вышеприведенной версии используются именованные каналы, если вы находитесь в системе, которая не поддерживает те, которые вам нужны для использования промежуточных файлов:

ffmpeg -i input0.mp4 -c copy -bsf h264_mp4toannexb temp0.ts
ffmpeg -i input1.mp4 -c copy -bsf h264_mp4toannexb temp1.ts
ffmpeg -i "concat:temp0.ts|temp1.ts" -c copy -absf aac_adtstoasc output.mp4

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .