HD-качество в WebRTC
Получить HD / Full HD качество у всех участников видеоконференции при использовании WebRTC.
Проблема
Участники с HD-камерами подключались к конференции и ожидали видеть такое же качество видео у других участников.
На практике WebRTC автоматически снижал разрешение видеопотока. Это было заметно:
- визуально;
- по статистике соединения.
Ограничение
Напрямую запретить WebRTC снижать разрешение нельзя: механизм адаптирует видеопоток под условия канала и приоритеты кодирования.
Решение
В WebRTC API для исходящего видеотрека доступно свойство contentHint, которое позволяет подсказать браузеру, чему отдавать приоритет:
motion— плавности иfps;detail— детализации и разрешению;text/track— в зависимости от реализации браузера для специализированных сценариев.
На отправляющей стороне для видеотрека было выставлено значение detail. Это сместило приоритет в сторону сохранения разрешения, и в большинстве случаев WebRTC перестал агрессивно снижать качество картинки.
Результат
После настройки contentHint удалось добиться ожидаемого результата:
- качество видео стало заметно выше;
HD-камеры стали отдавать более детализированное изображение;- поведение соответствовало ожиданиям участников конференции.