Может ли зритель изменять качество входящего видео в webrtc?
Давайте рассмотрим P2P-видеоконференцию с WebRTC, где издатель вещает в HD 1024x768
и зритель присоединяется к этой сессии и хочет просмотреть видео, скажем, 320×240
сохранить пропускную способность.
Чтобы дать анологию, это должно быть похоже на YouTube Quality
вариант.
3 ответа
Возможно ли это в WebRTC?
Каждый партнер будет иметь процесс согласования, прежде чем он сможет получить какой-либо поток. Отправители, уже находящиеся на этом канале, будут знать, что они должны изменить свои профили потока во время этого процесса.
Если случится так, что кому-то уже в этом канале не хватает пропускной способности, модуль MediaOptimization отправителя узнает об этом через отправленный RTCP-приемник и отрегулирует битрейт.
Если да, реализована ли эта функция в любом из (agora | tokbox | vidyo | twilio)
Насколько я знаю, все, что они делали в Интернете, основаны на WebRTC (очевидно, у них есть редкий выбор).
Их собственные SDK могут иметь лучшее качество при переключении разрешения, поскольку они могут использовать такие технологии, как SVC, многопотоковость и так далее.
Я работаю в TokBox.
Что касается реализации этого с OpenTok, то да, это возможно. Мы поддерживаем масштабируемое видео (simulcast) для "маршрутизируемых" сеансов, проходящих через наш SFU. Это означает, что вы можете отправить разрешение HD от издателя, а затем подписчики могут подписаться с разными разрешениями в зависимости от их пропускной способности. Вы также можете указать предпочтительное разрешение, используя API setPreferredResolution, который позволит вам использовать более низкое разрешение, например, если. Вы знаете, что отображаете подписчика только в небольшом размере.
Единственный способ изменить разрешение в режиме p2p - это (а) разорвать одноранговое соединение, изменить ограничения для запроса другого разрешения с камеры и установить новое соединение, (б) пересмотреть или (с)) заменить трек на стороне отправителя. (c) обычно предпочтительнее, так как не вызывает нового рукопожатия, которое потенциально может привести к видимым сбоям при изменении разрешения.
Хороший способ сделать это - использовать медиа-сервер, который получает несколько разрешений исходного потока и передает только одно в зависимости от пропускной способности приемника. Это может быть достигнуто двумя способами: с помощью кодека SVC, такого как VP9, AV1, .... или, если кодек SVC недоступен, с помощью одновременной передачи, т.е. несколько раз используйте один и тот же простой кодек с разным выходным разрешением. Не каждый браузер поддерживает это сегодня.
Большинство поставщиков предоставляют эту опцию, если вы используете их медиа-сервер в цикле. Это будет сделано "из коробки" в их родном SDK, в котором они контролируют весь стек, а поддержка Интернета, в свою очередь, будет зависеть от самой поддержки браузера.
Агора на самом деле не использует webrtc.
Vidyo является экспертом по кодекам SVC, но заблокирован реализацией браузера. Я не проверял в последнее время.
Адам рассказал вам о Tokbox, у которого было достаточно вариантов, доступных уже довольно давно.
Я не в курсе о предложении twillio.