Подготовка видео контента для web

This post is also available in: Английский

Эффективная подготовка контента для его распространения в Интернете становится все более сложной задачей:

  • Растет число устройств и отличия между ними: рабочие станции, нетбуки, мобильные и ТВ экраны
  • Источники видео подготавливаются в разных форматах и кодеках
  • Видео кодеки становятся все сложнее (но и более эффективными)
  • Растут объемы контента и его качество: SD, HD, Full HD

В этой статье мы рассмотрим основные вопросы разработки системы подготовки контента и обеспечения максимального качества видео для Ваших пользователей.

H.264
Наиболее популярным и наиболее эффективным на сегодняшний день кодеком для видео контента в Интернете является H.264. Существует три профиля H.264, которые определяют какие технологии могут быть использованы энкодером и декодером. Чем проще профиль, тем меньше ресурсов он требует, но тем хуже соотношение качества к результирующему битрейту.

  • Baseline Profile (BP) — основной профиль для приложений с ограниченными ресурсами. Как правило используется в мобильных приложениях. Отсутствует поддержка B-фреймов, CABAC и i8x8
  • Main Profile (MP) — изначально планировался как основной профиль для видео трансляций и хранения видео
  • High Profile (HP) — наиболее популярный для HD профиль

Еще одним важным параметром H.264 является уровень кодирования. Он определяет максимальное разрешение кадров, максимальное использование памяти, максимальный битрейт и буффер. При выборе уровней важно помнить про совместимость устройств: Baseline профиль как правило использует уровни до 3.1, Main профиль — до 4.1, а High профиль — до 5.1. Flash Player поддерживает все уровни.
Транскодирование видео
Для максимального качества видео в Вашем мультимедийном проекте не стоит использовать единую стратегию (параметры кодирования). В данном случае нужно использовать гибкую, оптимизированную под разные устройства стратегию обработки контента. При этому нужно хорошо изучить ПО, которым Вы кодируете видео контент, научиться применять фильтры на источники видео (deblocking, deinterlace) и определиться с разрешением/битрейтом видео.
Существует очень много ПО транскодирования контента — мы рекомендуем использовать Adobe Media Encoder CS5 (desktop версия), Rhozet Carbon Server (для промышленного многоформатного транскодирования), который раньше был доступен под лейблом Adobe Media Encoding Server и Flash Media Live Encoder для потокового транскодирования онлайн трансляций. В качестве open source альтернативы всегда стоит помнить ffmpeg (который можно запускать в Linux среде и обеспечить более быстрое транскодирование).
Для каждого видео устройства есть свои рекомендации, например, для устройств iPhone/iPad рекомендации можно найти здесь. Для телевизоров нужно смотреть в спецификации производителей, то же самое касается и мобильных устройств. В общем случае для мобильных устройств рекомендуется H.264, Baseline Profile 3.1. Разрешение не выше 640×480, битрейт в несколько сотен kbps (200-300). Для компьютеров и ТВ наиболее общей рекомендацией будет использование H.264, Main Profile 4.1, разрешение до Full HD, и битрейт в несколько мегабит.
Основные рекомендации по настройке H.264 кодера:

  • Multipass encoding — не менее двух раз
  • Frame rate — как в исходнике
  • B-кадры — 3-5, динамическое размещение, использовать b-pyramid
  • Интервал ключевых кадров — желательно 2 сек, не более 10 сек
  • Количество референс кадров — 2-5
  • RDO — включено
  • Adaptive Quantization — включено
  • Deblocking — включено
  • Entropy Coding — CABAC

На видео исходниках прежде их транскодирования рекомендуется применять фильтры denoising, deblocking и deinterlace (как правило требуется при исходнике из ТВ эфира). При изменении разрешения стоит помнить о наличии трех алгоритмов масштабирования: bilinear, bicubic, lanczos (первый удаляет больше всего деталей, третий дает самый точный результат).
В качестве общей рекомендации можно использовать приведенные ниже таблицы для выбора разрешения/битрейта.
При aspect ratio 16:9

Разрешение Битрейт
1920×1080 2-4 Mbit/s
1280×720 1-2 Mbit/s
1024×576 0.8-1.5 Mbit/s
840×480 0.6-1 Mbit/s
640×360 0.4-0.7 Mbit/s

При aspect ratio 4:3

Разрешение Битрейт
720×576 0.6-1 Mbit/s
640×480 0.5-0.8 Mbit/s
480×360 0.3-0.6 Mbit/s
320×240 0.2-0.4 Mbit/s

В случае если у Вас контент с разными соотношениями сторон, то рекомендуется придерживаться 16:10 и добавлять функции интеллектуального растяжения/обрезания. При реализации функции динамического битрейта в видео плеере Adobe рекомендует использовать единый набор параметров аудио кодека для разных качеств. Существуют функции графической обработки видео внутри Flash Player, которые могут создать видимость улучшения качества видео на сайте, но использовать их нужно очень аккуратно, т.к. они очень сильно грузят процессор:

  • smoothing — программное сглаживаение
  • filter — фильтры обработки изображения
  • Pixel Bender
  • ambilight и другие графические эффекты

Напоследок, рекомендую Вам ознакомиться с блогом эксперта в области подготовки контента Fabio Sonatti здесь.