Как работает кодирование видео в Facebook?

Хола, котаны! Ежедневно на Facebook просматривается больше 4 миллиардов видео, поэтому хорошее качество — с максимальным разрешением и минимальным объемом буферизации, играет важную роль. Facebook учитывает много факторов, чтобы обеспечивать хорошее качество и правильно кодировать контент. Сегодняшняя статья об этом!

Читать в полной версии

В Facebook используются различные кодеки и адаптивная потоковая передача (ABR), которая улучшает качество просмотра и уменьшает буферизацию, в зависимости от пропускной способности сети зрителя. Применение самых свежих кодеков к каждому видео неэффективно — они потребляют слишком много вычислительной мощности. Значит нужно выстроить приоритет: какие видео кодировать с использованием более продвинутых кодеков.

Сегодня Facebook справляется с высоким спросом на кодирование видеоконтента, сочетая модель выгод и затрат с моделью машинного обучения, которая прогнозирует, какие видео будут активно просматриваться, и кодирует их в первую очередь. 
 

Как раньше кодировались видео на Facebook?


Традиционно, как только видео загружается, в системе включается процесс ABR. С его помощью исходное видео быстро перекодируется через начальные кодировки H264 (стандарт сжатия видео 2003 года). После этого Facebook пытается дополнительно улучшить качество просмотра за счет использования более продвинутых кодеков, таких как VP9 (стандарт сжатия видео 2012 года). Это нужно для того, ​​чтобы максимально сжать видеофайл. Технологии с использованием разных типов кодеков или параметров варьируют качество сжатия, визуальное качество и необходимую вычислительную мощность.

Сначала обрабатываются приоритетные видео. Они определяются исходя из простых жестко запрограммированных правил: является ли видео музыкальным, сколько друзей или подписчиков у его автора и т.д.

У этого подхода есть недостатки. Появление новых видеокодеков означает увеличение количества правил, которые необходимо поддерживать и настраивать. Поскольку кодеки и рецепты имеют разные требования к вычислениям, визуальному качеству и производительности сжатия, невозможно полностью оптимизировать работу конечного пользователя.
И что не менее важно — видео в Facebook загружаются как у обычных пользователей, так и у инфлюенсеров с большой аудиторией. Сравним Disney с видеоблогером, у которого,скажем, 200 подписчиков. Если блогер загрузит видео одновременно с Disney, вероятно, он получит меньше времени просмотра. 

Тем не менее, любое видео может стать вирусным, даже если у пользователя маленькая аудитория. Задача — поддержать создателей контента всех размеров, не только тех, у кого больше подписчиков, но и признать тот факт, что большая аудитория = много просмотров.


Как работает модель "Benefit-Cost" в Facebook?


В новой модели по-прежнему используется набор быстрых начальных кодировок H264 ABR, чтобы как можно скорее видео кодировались в хорошем качестве. Главное изменение — процесс вычисления приоритетности после публикации видео. 

Модель «Benefit-Cost» появилась, потому что:
 
Относительная эффективность сжатия группы кодирования при фиксированном качестве: например, полосы H264 360p, 480p, 720p и 1080p составляют одну группу, а VP9 360p, 480p, 720p и 1080p — другую. Одна из проблем — сравнение эффективности сжатия между разными семействами кодирования при одинаковом визуальном качестве.

Разберемся в метрике под названием «Минуты видео в высоком качестве на гигабайтный пакет данных» (MVHQ). Она напрямую связывает эффективность сжатия с тем, сколько минут высококачественного видео транслируется. Математически это выглядит так:


Предположим, видео, в котором MVHQ с использованием быстрой предустановки кодирования H264 составляет 153 минуты, 170 минут с использованием медленной H264 и 200 минут с использованием VP9. Это означает, что третий вариант увеличивает время просмотра с использованием данных 1 ГБ на 47 минут. При расчете выгоды от этого видео используется H264 fast в качестве основы, назначается 1.0 для H264 быстрой, 1.1 (170/153) для H264 медленной и 1.3 (200/153) для VP9.

Фактический MVHQ рассчитывается только после того, как произведено кодирование, но значение используется до того, как кодировки станут доступны, поэтому Facebook опирается на исторические данные для каждого из семейств кодирования видео.

Эффективное прогнозируемое время просмотра: модель машинного обучения прогнозирует, как долго видео будет просматриваться аудиторией. Facebook оценивает, насколько эффективно семейство кодирования применимо к видео. Это связано с тем, что не все пользователи Facebook самые свежие гаджеты для просмотра кодеков.

Например, около 20% потребления происходит с устройств, которые не воспроизводят видео закодированные с помощью VP9. Таким образом, если прогнозируемое время просмотра с использованием широко распространенного кодека H264 составляет 100 часов, просмотры кодировок VP9 — 80 часов.

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

В качестве примера предположим, что в видео A отсутствуют все четыре полосы в семействе VP9. Тогда суммируется предполагаемое использование центрального процессора и назначается одинаковая нормализованная стоимость всем четырем заданиям. 

Если не хватает только двух из четырех дорожек, как показано на видео B, стоимость вычислений равна сумме получения двух оставшихся кодировок. 

В обоих случаях придется тратится одинаково, поскольку приоритет делится на выгоду, разделенную на стоимость. Это приводит к тому, что место в очереди задачи становится более срочным, когда доступно больше дорожек. Одно видео со всеми 4-мя VP9 ценится больше, чем 10 видео с неполными.

Как работает прогнозирование времени просмотра с помощью машинного обучения?


С появлением новой модели «выгода-стоимость», которая определяет, как кодировать видео, следующий фрагмент головоломки — определение того, какие поставить видео выше в приоритете. Теперь для предсказания используется ML, определяющее, кому следует отдать первое место в очереди для расширенного кодирования.
 
Учитывается ряд факторов: количество друзей или подписчиков пользователя, среднее время просмотра ранее загруженных видео, метаданные самого видео, включая его продолжительность, ширину, высоту, статус конфиденциальности, тип публикации, сколько пользователю лет и его популярность на платформе в прошлом. Но принятие решений на основе этих данных чревато появлением других проблем: 
                              

Как осуществляется построение машинного обучения для кодирования видео?


Чтобы решить эти проблемы, каждая строка обучения/оценки представляет точку принятия решения, для которой система должна сделать прогноз.
Поскольку данные о событиях времени просмотра могут быть искажены, выполняется очистка, преобразование, сегментирование и взвешенная выборка по интересующим измерениям.

Кроме того, поскольку недавно загруженные видео не имеют траектории времени просмотра, строятся две модели: одна для обработки запросов времени загрузки, а другая — времени просмотра. 

Во время разработки выбираются лучшие кандидаты на запуск, через среднеквадратическую ошибку (RMSE) и среднюю абсолютную процентную ошибку (MAPE). Используются оба показателя, потому что RMSE чувствителен к выбросам, в то время как MAPE — к небольшим значениям. Метка времени просмотра сильно различается, поэтому Facebook использует MAPE для оценки эффективности популярных видео, а RMSE — для менее просматриваемые видео. Не лишена внимания способность модели обобщать контент разных типов, возрастов и популярности. 

Также оцениваются классификации видео, чтобы не применять расширенное кодирование слишком часто и тогда, когда это не выгодно. Например, при пороговом значении 10 секунд подсчитывается количество видео, в которых фактическое время просмотра меньше, и прогноз такой же, чтобы вычислить ложноположительные и ложноотрицательные ставки. 

Фейсбук повторяет тот же расчет для нескольких пороговых значений. Этот метод оценки говорит о том, как модель работает с видео разного уровня популярности и предлагает ли больше заданий по кодированию, упускает ли некоторые возможности.


На что повлияла новая модель кодирования видео?


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

Улучшенное сжатие также позволяет пользователям Facebook с ограниченными тарифными планами смотреть больше видео в лучшем качестве.


Подведем итоги


По мере того, как Facebook вводит новые способы кодирования, уходит меньше времени на оценку того, как распределять видео по приоритетности. Вместо этого, в зависимости от способа и его стоимости, модель автоматически назначает очередь, который максимизирует общую пропускную способность. Это позволяет Facebook инвестировать в новые и более совершенные кодеки, чтобы люди получали видео самого высокого качества.