Я хотел бы использовать ffmpeg для пакетной обработки папки видеофайлов разных размеров, кодирования и т.д.

Мы используем приведенный ниже скрипт. Проблема в том, что мы создаем видео, из которого последующий процесс извлечет срезы шириной 3p. Поэтому идеал будет иметь ширину мода 3. Но 264 ожидает только мод 2. Вы можете видеть, что мы работаем с модом 6. Но в некоторых небольших видеофайлах это приводит к нежелательным артефактам.

Подробный вопрос: есть ли способ достичь 3 мода, возможно, используя анаморфизм?

ffmpeg -i "$f" \ -vf 'scale=-6:300' \ -c:v h264 -preset "medium" -r 24 \ -map 0:a \ -map 0:v \ -map 0:s \ -map_metadata 0 \ -c:a aac -ac 1 \ -c:s copy \ -y "$partname"

1 ответ1

0

Это не абсолютное ограничение. Это применимо, когда формат выходного пикселя имеет подэмплированные цветовые плоскости, такие как yuv420p , yuv422p ..etc.

Если ваш последующий процесс может обработать yuv444p, то вы можете просто запустить

ffmpeg -i "$f" -vf 'scale=-3:300,format=yuv444p' \
       -r 24 -c:v libx264 -preset "medium" -map 0:a -map 0:v -map 0:s -map_metadata 0 \
       -c:a aac -ac 1 -c:s copy -y "$partname"

Но если он может обрабатывать только yuv420p , тогда вы можете заполнить вывод масштаба черным, и ваше приложение откажется от последнего среза шириной 1 px.

ffmpeg -i "$f" -vf 'scale=-3:300,pad=iw+1:ih' \
       -r 24 -c:v libx264 -preset "medium" -map 0:a -map 0:v -map 0:s -map_metadata 0 \
       -c:a aac -ac 1 -c:s copy -y "$partname"

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