Повторное кодирование MP4, чтобы гарантировать сцепление без перекодирования

1682
Scrooch

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

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

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

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

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

1
Если вам удобно использовать формат контейнера файлов .MKV, см. [Мой ответ здесь] (http://superuser.com/questions/43588/how-can-i-merge-two-mp4-files-without-losing- качество / 43736 # 43736). Breakthrough 11 лет назад 0
спасибо за предложение, я застрял с 1.mp4, хотя, это исходит от устройств IOS. Я создаю 2.mp4, поэтому, если я получаю формат файла как можно раньше, все должно работать без перекодирования во время concat. Scrooch 11 лет назад 0
Вы можете попробовать использовать [avidemux] (http://fixounet.free.fr/avidemux/) вместо MP4box, чем. Обе программы работают, но у меня был большой успех с avidemux. Breakthrough 11 лет назад 0

1 ответ на вопрос

0
evilsoup

You can try doing this with 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 

This doesn't re-encode anything, it places them in a new transport stream container, which makes them more easy to concatenate, and then concatenates them back into an MP4. If output.mp4 already exists, the command will fail. The version above uses named pipes, it you're on a system that doesn't support those you'd have to use intermediate files:

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 
Это может быть достаточно сумасшедшим, чтобы работать, я попробую, когда вернусь из отпуска. Спасибо за предложение. Извините, я не могу проголосовать до, но я не хочу выбирать правильный ответ, пока не попробую. Scrooch 11 лет назад 0

Похожие вопросы