Как задать целевое качество и бюджет (VMAF)

Автор: Николай СапуновОбновлено: август 202618 мин чтения
Содержание статьи +

Коротко

Целевое качество – это перцептивная оценка, в которую вы целите каждым кодированием (число VMAF), а не фиксированный битрейт; а бюджет качества – это стоимость доставки, которую эта цель задаёт, когда вы умножаете подразумеваемый ею битрейт на трафик и цену egress. Самый полезный факт для задания цели: на экране в гостиной качество становится невидимым где-то около VMAF 95, поэтому каждый балл, в который вы целите выше этой линии, – это трафик, которого зритель не видит. Цель – это не одно число: она меняется с экраном (телефон скрывает то, что вскрывает телевизор), поэтому правильный ход – цель для каждой платформы, проверенная реальным субъективным тестом, а не предполагаемая. Эта статья показывает, как выбрать цель, превратить её в бюджет, расставить лестницу так, чтобы зритель не замечал шага качества, и записать цель так, чтобы её приняли и финансы, и инженеры.

Почему это важно

Если вы кодируете видео на масштабе, целевое качество – это единственное решение, которое задаёт и то, как хорошо выглядит сервис, и то, во что он обходится; и большинство команд его не записывают, поэтому оно дрейфует. Эта статья для лида по стримингу или кодированию, инженера платформы и технического продакт-оунера, которому надо защитить планку качества перед финдиректором с одной стороны и перфекционистом-видеоинженером с другой. Она превращает «сделай красиво» в число, которое можно измерить, поставить в гейт и заложить в бюджет. Это операционный спутник статьи бизнес-обоснование измерения качества: та статья доказывает, зачем измерять качество; эта – говорит, в какое число целить и сколько оно стоит.

Перестаньте целиться в битрейт. Цельтесь в число качества

Почти всю историю стриминга битрейтная лестница была списком битрейтов: 1080p на 5 Мбит/с, 720p на 3 Мбит/с – и так одни и те же фиксированные ступени для каждого тайтла в каталоге. Беда фиксированного битрейта в том, что он покупает совершенно разное качество в зависимости от контента. Плоский мультфильм на 5 Мбит/с выглядит идеально; кадр спорта с конфетти и толпой на тех же 5 Мбит/с распадается в блоки и смазывается, потому что сложному контенту нужно куда больше бит, чтобы дойти до той же картинки. Битрейт – это вход. Качество – это выход, который вам на самом деле нужен. Целиться во вход и надеяться, что выход попадёт, – задом наперёд.

Решение – целиться в выход напрямую. Выберите перцептивную оценку качества – число от метрики, обученной предсказывать оценки людей, VMAF (Video Multi-method Assessment Fusion, перцептивная метрика Netflix по шкале 0–100, где выше значит ближе к оригиналу для человеческого глаза; см. VMAF: объяснение) – и дайте кодировщику тратить столько битрейта, сколько каждому тайтлу нужно, чтобы её достичь. Мультфильм достигнет цели на низком битрейте, а спортивный клип – на высоком, и оба будут выглядеть для зрителя одинаково. В этом и состоит вся идея per-title и per-shot encoding, рассмотренная со стороны измерения в статье per-title и per-shot encoding и как геометрия в выпуклой оболочке. Здесь же мы сосредоточимся на числе, в которое эти методы целят: на самой цели и на бюджете, который она задаёт.

Одна оговорка перед выбором числа. Оценка VMAF сама по себе ничего не значит – она определена только вместе с моделью (какой экран предсказывает), пулингом (как покадровые оценки свели в одно число; см. пулинг покадровых оценок) и контентом, на котором измеряли. «Цель VMAF 95» – это сокращение от «целить в среднюю VMAF 95, модель default 1080p, на этом контенте, с проверенным низким перцентилем». Держите эту полную фразу в голове каждый раз, когда ниже встречается короткая версия.

Где качество становится невидимым: цель прозрачности

Начните с верха лестницы, потому что это самая дорогая в доставке ступень и часто самая смотримая. Насколько хорошей должна быть лучшая ступень? Ответ ограничен человеческим зрением: за определённым порогом лишние биты не дают ничего, что зритель способен заметить. Этот потолок называют прозрачностью – точка, где сжатое видео для глаза такое же, как оригинал.

Два исследования ставят на это число, и они сходятся. Реза Рассул из RealNetworks сопоставил VMAF с формальными субъективными оценками и обнаружил, что сервис, кодирующий примерно до VMAF 93, может быть уверен, что отдаёт большей части аудитории контент «либо неотличимый от оригинала, либо с заметными, но не раздражающими искажениями» – оценку MOS между 4 и 5 (Rassool, VMAF Reproducibility, IEEE, 2017). Отдельное исследование RheinMain University и стримингового провайдера Joyn, проведённое на 4K-телевизоре, нашло, что VMAF 95 даёт файл, «в среднем субъективно неотличимый от оригинального видеосигнала» (Kah et al., SPIE 11842-38, 2021). Поэтому рабочее правило для премиального контента на большом экране – целевая верхняя ступень в 93–95 VMAF. Ниже 93 лучшие зрители начинают замечать; выше 95 вы тратите биты на качество, которое никто не видит.

Сколько стоят «один-два балла» VMAF в человеческих терминах? Netflix дал индустрии линейку в 2017-м: примерно 6 баллов VMAF равны одной едва заметной разнице (JND) – зазор, который большинство зрителей замечают чаще чем в половине случаев (Netflix, через Ozer, 2017). Исследование Joyn уточнило малый край: зрители не могли отличить два кодирования в пределах 2 баллов VMAF друг от друга и начинали видеть разницу лишь от 3 баллов. Так что цель VMAF 98 лежит на 3 балла выше прозрачности – полJND – а это по определению невидимо для большинства людей. Этот зазор – первое место, где бюджет качества утекает.

Рисунок 1. Качество круто растёт с битрейтом, затем выходит на плато. Прозрачность лежит около VMAF 95 на экране в гостиной: ниже неё больше бит видны; выше неё кривая плоская, и лишний битрейт потрачен впустую. Одна JND – около 6 баллов VMAF; разница меньше 2 баллов невидима.

Число меняется с экраном: цель для каждой платформы

Прозрачность – не одно число, потому что зрение – не одно условие. Маленький экран на расстоянии вытянутой руки скрывает искажения, которые 65-дюймовый телевизор через гостиную вскрывает. VMAF встраивает это прямо в свои модели, каждая обучена на людях, смотрящих определённый тип экрана (Netflix, документация по моделям VMAF):

Модель по умолчанию предсказывает качество на 1080p HDTV на трёх высотах экрана – случай гостиной, и самый строгий. Phone-модель (вызывается флагом --phone-model) предсказывает качество на экране телефона, смотримом с комфортного для зрителя расстояния; поскольку экран маленький и относительно далёкий, то же кодирование набирает на phone-модели выше. 4K-модель предсказывает 4K-телевизор, смотримый вблизи, на 1,5 высоты экрана – расстоянии, на котором 4K-детализация становится различимой (Netflix, документация по моделям VMAF; дистанции просмотра по ITU-R BT.2022).

Практическое следствие – деньги. Поскольку phone-модель набирает на том же файле выше, вы можете достичь той же воспринимаемой цели на более низком битрейте для мобильных зрителей – артефакты, которые провалили бы планку на телевизоре, на телефоне просто невидимы. Единая лестница, построенная для гостиной, переотдаёт каждому телефону в вашей аудитории. Поэтому правильная цель – это маленькая таблица, а не одна строка.

ПлатформаМодель VMAFЦель верхней ступениЧто измеряетГде врёт / слепое пятно
ТВ в гостинойdefault 1080p (3H)93–95Качество в самом строгом частом условии просмотраПереотдаёт телефонам; до VMAF v1 слепа к chroma/бандингу
4K-телевизор4K-модель (1.5H)93–95Качество 4K-детализации вблизиНужен настоящий 4K-источник; жёстко наказывает зерно и мелкую текстуру
Телефон / мобильныйphone-модель90–93 (баллы выше)Качество на малом экране на комфортном расстоянииСкрывает реальные артефакты, что показал бы ТВ; никогда не отдавайте по ней на ТВ
Ноутбук / десктопdefault 1080p92–95Средний экран, средняя дистанцияМежду ТВ и телефоном; выбирайте по своей аналитике, не на глаз

Таблица 1. Целевое качество – для каждой платформы, потому что каждая модель VMAF предсказывает свой экран. Колонка «где врёт» важна: оптимизм phone-модели – это плюс для мобильного и ловушка, если вы вдруг оцените ею кодирование для ТВ.

Предупреждение рядом с этой таблицей. Более высокие баллы phone-модели – это не бесплатное качество, а утверждение о малом экране. Оцените phone-моделью кодирование для телевизора – и пропустите видео, которое в гостиной заметно распадается в блоки. Сопоставляйте модель с устройством каждый раз; модель – это часть цели, а не ручка для подкрутки.

Рисунок 3. Каждая модель VMAF предсказывает свой экран, поэтому цель – для каждой платформы. Телефон берёт ту же воспринимаемую планку меньшим числом бит, а единая лестница для гостиной переотдаёт (и переплачивает) на каждом мобильном зрителе.

Нижняя граница: самое низкое качество, которое вы всё же отдадите

У лестницы есть и низ, и верх. Нижняя граница – это самая низкокачественная ступень, которую вы отдадите, прежде чем предпочли бы не показывать ничего. Исследование Joyn измерило и это – как долю принятия (acceptance rate): долю зрителей, оценивающих поток как достаточно хороший, чтобы продолжать смотреть. Принятие пересекало 50% около VMAF 55 для бесплатного сервиса и VMAF 70 для платного: ниже этих оценок более половины аудитории находит картинку неприемлемой (Kah et al., SPIE, 2021). Платящие клиенты ждут большего, поэтому их нижняя граница выше.

На практике большинство сервисов ставит ступень-другую ниже даже этой границы, и намеренно. Логика – та самая универсальная истина адаптивного стриминга: зритель на рушащемся соединении предпочтёт смотреть мягкую, низкокачественную картинку, чем глядеть на крутящийся спиннер буферизации. Ступень на VMAF 40 не «приемлема» по опросу, но она держит поток живым через тоннель или переполненный стадион, и живой поток бьёт резкий, но застывший. Граница из опроса принятия – это где качество перестаёт быть хорошим; реальная нижняя ступень – это где воспроизведение перестаёт быть возможным. Задавайте обе намеренно.

От цели к бюджету: сколько стоит число

Цель становится бюджетом в тот момент, когда вы умножаете её на трафик. Цепочка короткая, и каждое звено – арифметика, которую можно проверить вручную: целевое качество задаёт битрейт (на тайтл, через выпуклую оболочку); битрейт задаёт байты на час просмотра; байты на часы просмотра на цену egress – это месячный счёт. Битрейт – прямой множитель стоимости доставки: стриминг на 6 Мбит/с стоит ровно вдвое больше egress, чем стриминг на 3 Мбит/с за те же минуты, – и в медиасервисе строка egress обычно крупнейшая статья (отраслевые разборы стоимости CDN, 2026).

Вот утечка от целения выше прозрачности, посчитанная. Возьмём премиальный тайтл 1080p, где прозрачность лежит на VMAF 95. Оставленный на фиксированном высоком битрейте, кодировщик даёт VMAF 98 на 8,0 Мбит/с; но измерение per-title показывает, что VMAF 95 достигается на 5,0 Мбит/с для этого контента. Лишние 3 балла VMAF – это полJND, невидимо. Переведём оба битрейта в байты на час:

ГБ в час = Мбит/с × 3600 с ÷ 8 бит/байт ÷ 1000
  на 8.0 Мбит/с: 8.0 × 3600 ÷ 8 ÷ 1000 = 3.60 ГБ/час
  на 5.0 Мбит/с: 5.0 × 3600 ÷ 8 ÷ 1000 = 2.25 ГБ/час
  впустую:                               1.35 ГБ/час

Теперь на масштабе. При 100 миллионах часов просмотра в месяц и смешанной цене egress $0,02 за ГБ:

стоимость на 8.0 Мбит/с: 3.60 ГБ × 100 000 000 × $0.02 = $7 200 000 / мес
стоимость на 5.0 Мбит/с: 2.25 ГБ × 100 000 000 × $0.02 = $4 500 000 / мес
впустую на невидимое качество:                          $2 700 000 / мес  (38% счёта)

Два миллиона семьсот тысяч долларов в месяц, потраченные на три балла VMAF, которых ни один зритель не видит. Это и есть аргумент за записанную цель прозрачности, изложенную так же ясно, как строку бюджета. Планировщик целевого качества и бюджета, идущий со статьёй, считает этот расчёт – и два ниже – по вашим собственным числам; передайте --demo, чтобы воспроизвести здешние цифры точно.

Рисунок 2. Цель по качеству становится бюджетом за четыре шага. Та же цепочка, прогнанная на цели выше прозрачности, показывает потерю: три невидимых балла VMAF стоят $2,7M в месяц при 100M часов и $0,02/ГБ.

Бюджет ступеней: расставьте лестницу так, чтобы шага не было видно

Верх и низ задают диапазон; ступени между ними – отдельное бюджетное решение. По мере того как полоса зрителя растёт и падает, плеер переключается между ступенями. Если две соседние ступени далеки по качеству, переключение видно – резкое смягчение или заострение, цепляющее глаз. Если близки, переключение невидимо, и воспроизведение ощущается стабильным.

Насколько близко достаточно близко? Находка Joyn в 2 балла VMAF даёт правило: держите соседние ступени в пределах примерно 2 баллов VMAF, и зрители не заметят, когда плеер переключается (Kah et al., SPIE, 2021). Это превращает число ступеней в арифметику. Для платной лестницы под большой экран с нижней границей VMAF 70 и потолком VMAF 95 шаг в 2 требует примерно (95 − 70) ÷ 2 + 1 ≈ 13 ступеней; бесплатный сервис с границей 55 требует (95 − 55) ÷ 2 + 1 = 21. (Планировщик округляет вверх, чтобы ни один зазор не превышал шаг, поэтому показывает 14 и 21.) Мало кто отгружает 13-ступенчатые лестницы, ведь каждая ступень – это ещё одно кодирование, которое надо произвести и хранить. Поэтому большинство ослабляет шаг к одной JND, 6 баллам VMAF, принимая редкое видимое переключение в обмен на треть кодирований:

платная лестница, низ 70 — потолок 95
  шаг 2 VMAF (невидимое переключение): ~14 ступеней  — гладко, но 14 кодирований хранить
  шаг 6 VMAF (1 JND на шаг):            ~6 ступеней  — дешевле, изредка видимый шаг

Этот размен – гладкость переключения против стоимости кодирования и хранения – и есть бюджет ступеней. Универсального верного ответа нет; есть ответ, с которым уживутся и ваш счёт за хранение, и ваши зрители. Плотный шаг для флагманского платного тарифа, пошире для бесплатного – защитимое разделение.

Бюджет по платформам: экономия на phone-модели

Цель для каждой платформы из Таблицы 1 – это и бюджет для каждой платформы, и phone-модель – там, где это окупается. Поскольку мобильная аудитория достигает того же воспринимаемого качества на более низком битрейте, разделение цели по устройству снимает реальные деньги со счёта egress. Прогоним для сервиса с 50 миллионами часов просмотра в месяц, разбивкой 60% телефон / 40% ТВ, верхней ступенью ТВ 6,0 Мбит/с и egress $0,02/ГБ. Допустим, измерение показывает, что цель для телефона достигается на 30% дешевле – на 4,2 Мбит/с – для этого контента:

одна лестница ТВ-уровня для всех:
  6.0 Мбит/с × все 50M часов                    → $2 700 000 / мес

цели по платформам:
  телефоны 4.2 Мбит/с × 30M часов (60%)         → $1 512 000
  ТВ       6.0 Мбит/с × 20M часов (40%)         →   $702 000
  итого                                         → $2 214 000 / мес

экономия от разделения цели по устройству:         $486 000 / мес  (18%)

То же воспринимаемое качество каждому зрителю, восемнадцать процентов со счёта доставки – потому что телефоны переобслуживала лестница, построенная для гостиной. Цифра 30% иллюстративна; её нужно измерить на своём контенте, ведь выигрыш phone-модели зависит от материала. Но структура держится для любого каталога: единая лестница для гостиной тихо переплачивает на каждом мобильном зрителе.

Как записать цель, которую примут и бизнес, и инженеры

Целевое качество – это согласованное число, а не найденное, и оно проваливается, когда им владеет лишь одна сторона. Инженеры, оставленные сами по себе, дрейфуют к VMAF 98 «на всякий случай» и сжигают бюджет на невидимое качество. Финансовая сторона, оставленная сама по себе, давит цель вниз, пока отток не вырастет и никто не сможет сказать почему. Цель выживает, потому что обе стороны видят один и тот же размен.

Путь к этому – выразить цель на обоих языках сразу. Сформулируйте её как перцептивное число с источником (верхняя ступень на VMAF 95, точка прозрачности из Kah et al.; низ на VMAF 70, точка 50%-принятия для платного). Затем сформулируйте ту же цель как строку бюджета (эта верхняя ступень стоит $X на миллион часов просмотра; сдвиг её с 95 на 98 добавляет $Y без видимого выигрыша; сдвиг с 95 на 92 экономит $Z, но заходит на территорию, которую лучшие зрители замечают). Общий ROI-аргумент за этим переводом живёт в статье бизнес-обоснование измерения качества; цели по платформам здесь – то, как сделать его операционным. Как только цель записана и перцептивным, и финансовым числом, она перестаёт дрейфовать – и становится порогом, который можно автоматически держать в гейте качества CI/CD.

Рисунок 4. Всё решение на одной странице: экран → модель → верхняя ступень (прозрачность 93–95) → низ (70 платно / 55 бесплатно, плюс ступень выживания) → шаг ступеней (2 невидимо / 6 дешевле) → записанная цель как перцептивное число и строка бюджета.

Частая ошибка: целиться в метрику, а не в зрителя

Ошибка, теряющая больше всего денег, – относиться к числу VMAF как к цели, а не как к прокси для зрителя. Повторяются три её версии, и все три происходят от забвения, что метрика – заместитель, которого глаз вправе отменить:

Первая – целиться выше прозрачности «для запаса», давя на VMAF 97 или 98, потому что выше кажется надёжнее. Выше линии прозрачности кривая плоская: вы покупаете байты, а не качество. Вторая – целиться в среднее и игнорировать низкий перцентиль. Тайтл может иметь среднюю VMAF 95, пока одна тёмная динамичная сцена сидит на VMAF 70, и именно эту сцену зритель запоминает; всегда читайте 1-й или 5-й перцентиль рядом со средним (см. пулинг покадровых оценок). Третья – оптимизировать под VMAF так жёстко, что вы кодируете под метрику – заостряя или обрабатывая так, что балл растёт, а картинка выглядит хуже, ровно то, на что приглашают слепые пятна VMAF (см. где врут объективные метрики). Защита от всех трёх одна: цель – это число, но эталон истины – корректно проведённый субъективный тест (ITU-R BT.500-15, 2023). Когда метрика и внимательный просмотр расходятся, побеждает зритель, и перекалибруют цель – а не наоборот. Какую метрику вообще брать под задачу – в статье как выбрать правильную метрику; нюансы моделей VMAF – в VMAF в деталях.

Где здесь Фора Софт

Фора Софт с 2005 года строит системы видеостриминга, OTT, видеоконференций, e-learning, видеонаблюдения и телемедицины, и в каждой из них целевое качество – это решение, связывающее качество картинки с операционной стоимостью. Мы помогаем командам задать цель так, как описано в этой статье, – перцептивное число VMAF на каждую платформу, привязанное к реальному субъективному тесту, затем переведённое в бюджет доставки, читаемый бизнесом, – и встроить его в пайплайн как принудительный гейт, а не как надежду. Где проекту нужны данные, а не правила большого пальца, наши собственные измеренные бенчмарки (см. нашу методологию бенчмарков) дают данные качество-битрейт за целью для конкретного кодека и типа контента. Цель – никогда не максимально возможное число; это самая низкая цель, которую ни один зритель не отличит от идеала.

Ключевые выводы

  • Цельтесь в число качества (VMAF), а не в фиксированный битрейт; пусть каждый тайтл тратит своё.
  • Премиальная прозрачность лежит около VMAF 95; баллы выше неё невидимы, бюджет впустую.
  • Оценка VMAF бессмысленна без модели – цель для каждой платформы, телефон ниже ТВ.
  • Задайте низ (≈70 платно, ≈55 бесплатно) плюс ступень выживания ниже него.
  • Цель × битрейт × трафик × цена egress – это строка месячного бюджета.
  • Шаг ступеней ≤2 VMAF для невидимого переключения, ~6 чтобы сэкономить кодирования.

Что читать дальше

Строите такую систему?

Подберём параметры кодирования под ваш контент и посчитаем стоимость доставки до старта разработки.