Prores 444 вихід за допомогою ffmpeg


1

Замість 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

Відповіді:


3

мені потрібно отримати prores444

Ви маєте на увазі ProRes 4444 ? Це все ще називається "4444", навіть якщо ви не використовуєте альфа-канал.

Є prores_ks альтернативою prores444

Не зовсім. Причина, що у 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 дає масивні 4K кадри, є хороший аргумент для того, щоб змінити, скажімо, 1440 × 900 для даного монітора, доки користувачі потім не хочуть мати можливість збільшувати масштаб.

  • Зверніть увагу на зміну -f movформату контейнера QuickTime ( ). Це звичайний контейнер для файлів ProRes.

  • Я не бачу сенсу -vendor ap10, тому я її зняв. Знову ж таки, ProRes - це ProRes. Для роботи його не потрібно позначати як "від Apple".

  • Я видалив, -probesize 5000000оскільки не бачу, що вона надає значення в цьому випадку.

як знайти альтернативу цьому.

ffmpegЄ велика кількість альтернатив для стиснення відео з низькими втратами. Я написав довгу відповідь на SuperUser.SE, пояснивши це все.

Я, мабуть, повинен переробити тести ProRes, оскільки, мабуть, змінилися кодеки ProRes, ffmpegоскільки я це написав.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.