У меня есть два клипа в формате MP4. Каждый клип 150 МБ. Я хочу объединить два клипа в один, что, по логике, создаст файл размером 300 МБ.

Я использую Final Cut Pro X для достижения этой цели. В результате получается невероятно большой файл: 1,5 ГБ. Как так? Так что вы, ребята, делаете в этом случае, чтобы объединить два клипа и сохранить размер файла, как это должно быть?

Я предоставил примеры клипов, которые хочу объединить: один и два.

2 ответа2

0

Ваш исходный материал закодирован со сжатием с потерями. Чтобы сохранить качество видео после редактирования, его необходимо будет экспортировать с сжатием без потерь, что гораздо менее эффективно и, следовательно, приводит к увеличению размера файла.

Альтернативой является перекодирование материала с помощью алгоритма с потерями, но даже если вы имитируете настройки сжатия оригинальных клипов, качество будет ухудшаться. Это называется «потерей поколения». В Википедии есть хороший наглядный пример, касающийся перекодирования изображений JPEG большое количество раз. Конечно, вы можете экспортировать видео с произвольным алгоритмом сжатия, чтобы уменьшить ухудшение качества за счет файла большего размера или наоборот.

Если вы просто объединяете два клипа с одинаковым кодированием и последовательным воспроизведением в один файл и не занимаетесь никаким другим редактированием, возможно, будет возможно создать новый файл без перекодирования, но путем объединения необработанного содержимого файла и манипулирования им в действительный .mp4. Я подозреваю, что Final Cut Pro не может сделать это, но могут быть инструменты, такие как YAMB.

0

Предполагая, что клипы MP4 имеют все одинаковые настройки (размер кадра, битрейт и т.д.) И используют видео h264 и аудио AAC, это можно сделать в командной строке с помощью ffmpeg.

Простой, но менее эффективный способ сделать это:

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

Немного более сложный способ, который не требует создания промежуточных файлов:

mkfifo temp1 temp2
ffmpeg -i input1.mp4 -c copy -bsf h264_mp4toannexb -f mpegts temp1 2> /dev/null & \
ffmpeg -i input2.mp4 -c copy -bsf h264_mp4toannexb -f mpegts temp2 2> /dev/null & \
ffmpeg -f mpegts -i "concat:temp1|temp2" -c copy -absf aac_asdstoacs output.mp4

Любой из них будет полностью без потерь.

Я заметил, что вы решили проблему, связанную с FCP, используя правильные настройки, согласно этому комментарию ...

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