SVC (Scalable Video Coding) — архитектура видеоконференций на основе масштабируемого видеокодирования, работа которой построена на следующей схеме:
- Клиент формирует SVC-поток за счет сжатия видеопотока слоями и отправляет его ВКС-серверу. При этом количество слоёв в потоке, которое будет отправлено, определяется шириной канала связи и полосы пропускания.
- Сервер обрабатывает полученные SVC-потоки от всех клиентов, отсекая лишние слои без перекодирования.
- Сервер возвращает каждому клиенту обработанные видеопотоки остальных участников.
- Клиент формирует раскладку видеоконференции.
Революционность технологии SVC заключается в генерации множества слоёв видеопотока – от основного (с самым низким битрейтом) до множества дополнительных, позволяющих радикально улучшить итоговое качество картинки на совместимых устройствах. Стоит заметить, что слой — это не отдельный видеопоток меньшего качества, а полноценная разница между ним и предыдущим слоем. При этом увеличивается не только общий битрейт – можно повысить частоту кадров видео (например, с 15 кад/сек до 60), увеличить разрешение до 4K и настроить степень сжатия.
И всё это доступно в автоматическом режиме. Например, при смене раскладки то окно, которое было основным, а затем уменьшилось в размерах, начинает получать меньший поток. Так сервер реагирует на изменения разрешения окон. Подобное применимо в обе стороны – при увеличении окна качество видео повышается.
Это работает для всех участников конференции, позволяя избежать ситуаций, в которых максимальное качество видео ограничено участником с самым слабым оборудованием. Каждый получает поток данных, оптимально подходящий для его устройства и ширины канала.
Для поддержки SVC не нужен мощный дорогостоящий сервер, достаточно обычного компьютера с современным процессором. Технология настолько оптимизирует кодирование потока, что количество участников видеоконференции может достигать нескольких тысяч человек.
Сравним: 16 участников, на клиенте
MCU | SVC | |
---|---|---|
Исходящих потоков | 1 | 1 |
Входящих потоков | 1 | 15 |
Исходящий канал, Мб/с | 1,0 | 1,2 |
Входящий канал, Мб/с | 1,0 | 1,2 |
Нагрузка на ЦП | 20% | 70% |
Сравним: 16 участников, на сервере
MCU | SVC | |
---|---|---|
Исходящих потоков | 16 | 240 |
Входящих потоков | 16 | 16 |
Исходящий канал, Мб/с | 16,0 | 19,2 |
Входящий канал, Мб/с | 16,0 | 19,2 |
Нагрузка на vCPU | 1600% | 0% |
С точки зрения сетевой нагрузки, набор потоков отличается от единого потока (как в MCU) на 20-30%. Отсутствует избыточность, так как многослойность SVC позволяет очень точно подобрать поток под то разрешение, которое выбрано у пользователя.
Системы с SVC-архитектурой совмещают в себе все преимущества микширующих, которые кодируют поток для каждого отдельного устройства, и при этом лишены недостатков систем на основе мультиплексирования. Они дешёвые, кроссплатформенные и легко масштабируются.
Для более углублённого понимания принципов работы этой и других архитектур видеоконференцсвязи рекомендуем данное видео:
Также предлагаем ознакомиться с другими типами архитектур видеоконференций у нас на сайте.