Scalable Video Coding

Scalable Video Coding (масштабируемое видеокодирование) - технология обработки и передачи видео в реальном времени, которая позволяет передавать в одном потоке несколько подпотоков видео разного качества. Поток видео высокого качества кодируется как последовательность улучшений потоков более низкого качества, благодаря чему каждый клиент может использовать столько улучшений, сколько позволяют его вычислительные мощности. Таким образом, технология SVC позволяет серверу адаптировать видеопоток под пропускную способность каждого отдельного канала, не пересчитывая потоки каждый раз заново.[1][2]

Поддерживаемые форматы

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

Однако впоследствии поддержка SVC была выработана и в других видеокодеках - например, VP8.[3]

Технические подробности

Общая схема работы SVC такова:

  • для транслируемого видео создаётся его низкокачественная копия и несколько слоёв данных, с помощью которых можно преобразовать меньшие копии в бо́льшие;
  • от каждого клиента (адресата) запрашивается информация о том, какого качества поток он может принять;
  • каждому клиенту передаётся низкокачественная копия потока и та последовательность улучшений, которую он в состоянии обработать;
  • приняв данные, клиент применяет последовательность улучшений к низкокачественной копии и получает итоговую картинку.

Последовательность улучшения качества может затрагивать различные параметры:

  • временно́е сжатие - например, первым передаётся видео с частотой 15 кадров, а иногда вдобавок к нему - остальные кадры;
  • пространственное сжатие - например, первым передаётся видео с разрешением 480p, а добавки позволяют качественно растянуть его до 4K;
  • качество само по себе - изображение изначально передаётся с оригинальной частотой и разрешением, но в худшем качестве, а добавки позволяют сделать его чётче или красивее;
  • комбинированное сжатие - использование улучшений разных обозначенных выше типов в произвольной последовательности.

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

Примечания