proores 444 выход с использованием ffmpeg

Вместо prores_ks (как на изображении) мне нужно получить prores444. Как это возможно?

Я попробовал следующее и почувствовал, что я ограничен этим. Является ли prores_ks альтернативой prores444?

Можете ли вы объяснить, как найти альтернативу этому, если его нет?

EXRFILE="/tmp/v002/fb_sq021_sc003_v002.%04d.dpx" \ QSCALE=4 \ ffmpeg -start_number 0101 -y -probesize 5000000 -f image2 \ -r 24 -i ${EXRFILE} -vcodec prores_ks -qscale:v ${QSCALE} -vendor ap10 \ -pix_fmt yuv444p10 -s 960x540 /tmp/v002/fb_sq021_sc003_v002.mov 

мне нужно получить prores444

Вы имеете в виду ProRes 4444 ? Он по-прежнему называется «4444», даже если вы не используете альфа-канал.

Является ли proores_ks альтернативой proores444

Не совсем. Причина в том, что в FFmpeg есть несколько кодеков ProRes, они все конкурируют. Возможно, в какой-то момент libavformat начнут устранять некоторые альтернативы.

Некоторые из этих кодеков имеют только декодирование (например, prores_lgpl ), поэтому для целей этого вопроса доступны следующие варианты:

  • prores : В настоящее время это поддерживает только формат пикселей yuv422p10le , что означает, что он кодирует только ProRes 422 .

  • prores_aw : разделяет те же ограничения, что и prores

  • prores_ks : Я считаю, что это этот кодек , и, по крайней мере, с FFmpeg 2.1.3, он принимает пиксельный формат yuva444p10le , что и нужно, чтобы получить ProRes 4444.

Эта альтернатива вашей данной команде работает здесь, на моем Mac, где установлены официальные кодеки Apple ProRes:

 $ EXRFILE="/tmp/v002/fb_sq021_sc003_v002.%04d.dpx" $ ffmpeg -start_number 0101 -y -f mov -r 24 -i ${EXRFILE} -vcodec prores_ks -pix_fmt yuva444p10le -profile:v 4444 -s 960x540 /tmp/v002/fb_sq021_sc003_v002.mov 

Несколько пунктов:

  • Я добавил параметр -pix_fmt yuva444p10le , который сообщает кодеку, что нам нужен вывод 4: 4: 4: 4. Если вход не имеет альфа-канала, он будет выдавать 4: 4: 4.

  • Я добавил параметр -profile:v 4444 , который, кажется, является недавним дополнением к кодеку. Если вы оставите это, вы получите ProRes 422, несмотря на формат 4: 4: 4: 4 пикселей.

  • Я удалил параметр qscale , потому что он позволяет кодеку prores_ks нарушать пределы, определенные в спецификации ProRes .

    ProRes – это кодек на основе профиля, а это означает, что при выборе одного из профилей он фиксирует объем сжатия, определенный в спецификации. Если вам нужен другой уровень сжатия, вы должны выбрать другой профиль, а не изменять настройку качества.

    Кодек prores_ks позволяет вам изменять цели битрейта или уровня качества независимо от профиля, даже если это означает, что результирующий файл нарушает спецификацию. Могут быть абсолютно совместимые декодеры ProRes, которые отказываются принимать файл, который вы создаете. Скорее всего, это аппаратные декодеры, поскольку они обязательно ограничены ресурсами. Если вы делаете все свое декодирование в программном обеспечении – например, QuickTime Player – вы, вероятно, можете нарушать спецификацию таким образом, если ваш компьютер достаточно быстр, чтобы справиться с более высокими скоростями передачи, которые могут возникнуть.

  • Вам нужно только -s если вы перемасштабируете входные кадры. Если да, интересно, почему вы используете форматы, такие как EXR и ProRes 4444? OpenEXR обычно используется там, где вам нужны изображения без потерь, хотя у него есть опция с малыми потерями. ProRes 4444 почти без потерь. Изменение размера входных кадров по своей сути является убыточным.

    Если на мониторе ПК в режиме реального времени он должен выглядеть только хорошо, вы, вероятно, сможете получить высокоскоростной бит H.264. Для 540p я бы подумал, что 10 Мбит / с было бы достаточно, чтобы дать выход, отличный от ProRes 4444, который работает со скоростью около 67 Мбит / с для 540p.

    Если пользователи видео будут останавливать видео и изучать его по кадру, H.264 – это плохая идея, но так же масштабируется входные кадры. По крайней мере, вы не должны уменьшать масштаб изображения ниже разрешения монитора. Таким образом, если ваш источник EXR дает массивные кадры размером 4 КБ, есть хороший аргумент для масштабирования, скажем, 1440 × 900 для данного монитора, если пользователи тогда не хотят увеличивать масштаб.

  • Обратите внимание на изменение формата контейнера QuickTime ( -f mov ). Это обычный контейнер для файлов ProRes.

  • Я не вижу смысла -vendor ap10 , поэтому я удалил его. Опять же, ProRes – это ProRes. Его не нужно помечать как «от Apple» для работы.

  • Я удалил -probesize 5000000 так как я не вижу, что в этом случае он дает какую-либо ценность.

как найти альтернативу этому.

ffmpeg есть много альтернатив для сжатия видео с низким уровнем потерь. Я написал длинный ответ на SuperUser.SE, объясняющий все это.

Вероятно, я должен переделать тесты ProRes, поскольку, по-видимому, было много изменений в кодеках ProRes в ffmpeg поскольку я написал это.