У меня есть три файла .mov с видео в Apple ProRes (apcn) и звуком в PCM S24 LE (in24), одинаковой длины и размера (1920x1080), частоты кадров (23,976024) и с одинаковой звуковой дорожкой. Хотелось бы:
конвертировать в видео H.264 и аудио AAC, сохраняя очень хорошее качество (для публичного показа) и
сгенерировать одно широкоэкранное видео в формате H.264/AAC, т. е. оно будет иметь размеры 1920 пикселей, умноженные на 3, и высоту 1080 пикселей.
Для создания широкоформатного изображения, которое я разработал, я могу использовать эту команду, предполагая, что я подготовил отдельные файлы mp4:
ffmpeg -i left.mp4 -i centre.mp4 -i right.mp4
-filter_complex "[0:v:0][1:v:0][2:v:0]hstack=inputs=3" triple.mp4
Основной вопрос:
Должен ли я выполнять процесс в два этапа - (а) конвертировать файлы, (б) создавать широкоэкранные файлы - или это означает, что широкоэкранное видео перекодируется, поэтому его качество хуже? Я бы хотел сохранить отдельные файлы, поэтому, если нет других последствий, я бы предпочел сделать это в два этапа. Если я должен сделать преобразование в H.264 одновременно с созданием широкоэкранного режима, как мне объединить разные команды?
Подвопросы:
При подготовке широкоформатного изображения я столкнулся с альтернативным методом, overlay
как показано ниже. Есть ли преимущество в любом случае? Вроде как overlay
должно быть медленнее, но при тестировании выглядело примерно так же.
ffmpeg -i left.mp4 -i centre.mp4 -i right.mp4 -filter_complex "[0:v:0]pad=iw*3:ih[bg]; [bg][1:v:0]overlay=w[leftcentre]; [leftcentre][2:v:0]overlay=w*2" triple.mp4
При подготовке широкоформатного изображения я думаю , что ffmpeg выбирает звук только из одного из входных файлов. Так как звук одинаков на всех, для меня не имеет значения, какой из них. Так ли это или это как-то объединяет их?
Прав ли я, думая, что такой термин, как [1:v:0]
в filter_complex
выражении, означает «второй вход, только первая видеодорожка»?
Вот моя команда для преобразования файлов .mov, которая, кажется, работает по желанию. Есть ли в этом что-то явно не так?
ffmpeg -i left.mov -c:v libx264 -preset medium -tune film -crf 16 -c:a aac -b:a 256k left.mp4
С точки зрения качества лучше использовать оригинальные MOV, но если стек на основе MP4 выглядит нормально, это окончательный арбитр.
ffmpeg -i left.mov -i centre.mov -i right.mov
-filter_complex "[0:v:0][1:v:0][2:v:0]hstack=inputs=3"
-c:v libx264 -tune film -crf 16 -b:a 256k triple.mp4
При использовании оригиналов не имеет значения, делаете ли вы это за один шаг или за два. В целях оптимизации я бы сделал это двумя, тогда два кодирования не будут конкурировать за память или процессор.
stack
Фильтры несколько эффективнее . Они требуют, чтобы все входы имели одинаковый размер по нормали к направлению соединения, т. е. одинаковую высоту для hstack. Наложение — это общий фильтр, поэтому он не работает. Кроме того, стековые фильтры будут зависать на первом и последнем кадре входных данных, которые начинаются поздно или заканчиваются раньше.
В цифровых файлах аудио и видео независимы, т. е. они существуют в одном файле и синхронизируются с помощью меток времени, но логически они являются отдельными объектами. ffmpeg использует параметры -map для выбора потоков для включения в вывод. При отсутствии какой-либо опции -map он выбирает один звук — «лучший» — из всех входных данных. См. https://ffmpeg.org/ffmpeg.html#Stream-selection
[1:v:0]
... " означает "второй вход, только первая видеодорожка"? " --> Да.
Выглядит хорошо. Подходящее tune
значение зависит от материала.
hstack
их для создания .mp4 тройной ширины. Я удивлен, увидев, что размер файла тройной ширины меньше , чем размер любого отдельного файла .mp4! Средство просмотра битрейта показывает мне, что файл с тройной шириной имеет значительно более низкий битрейт (в среднем 12 Мбит/с вместо 18 Мбит/с), несмотря на то, что его ширина в три раза больше. Это перекодирование с использованием некоторых значений по умолчанию, и мне нужно использовать некоторые аргументы для контроля уровня качества этого перекодирования?-crf 16
обеспечить подходящее качество для моих отдельных файлов .mp4 1920x1080, следует ли мне продолжать использовать его для создания моего сложенного широкоэкранного файла .mp4 или мне нужно уменьшить это значение, чтобы получить такое же качество в файле 5760x1080. ?
Фам Дон
Рори
Рори
ffmpeg -i 1920_LEFT.mov -i 1920_CENTRE.mov -i 1920_RIGHT.mov -filter_complex "[0:v:0][1:v:0][2:v:0]hstack=inputs=3" -c:v libx264 -tune film -crf 16 -b:a 256k myOutputFile.mp4
Рори
Майкл Либман