Как потоковые приложения изменяют качество видео в зависимости от скорости сети? - PullRequest
0 голосов
/ 07 января 2020

Каким образом потоковые приложения, такие как Youtube, Hotstar или любое другое приложение видеоплеера, программно обнаруживают, замедляется ли сеть во время выполнения, и на основании этого они меняют качество видео в зависимости от изменений скорости сети?

Ответы [ 2 ]

0 голосов
/ 18 января 2020

Многие потоковые сервисы в настоящее время используют протоколы потоковой передачи на основе HTTP. Но есть исключения; особенно с потоковой передачей с низкой задержкой; например, WebRT C или решения на основе Websocket.

Предполагая, что вы используете протокол на основе HTTP, такой как HLS или MPEG-DA SH, «поток» представляет собой длинную цепочку видео-сегментов, которые загружаются один за другим. Видеосегмент - это файл в формате «TS» или «MP4» (в некоторых случаях MP4 видео и аудио разделяются на отдельные файлы); обычно сегмент имеет 2 или 6 или 10 секунд аудио и / или видео.

На основании списка воспроизведения или манифеста (или иногда просто из декодирования сегмента), игрок знает, сколько секунд содержит один сегмент. Он также знает, сколько времени потребовалось для загрузки этого сегмента. Вы можете измерить доступную полосу пропускания, опустив (средний) размер файла видеофрагмента на (среднее) время, необходимое для загрузки.

В тот момент, когда загрузка сегмента занимает больше времени, чем его воспроизведение, вы знаете, что игрок остановится, как только буфер опустеет; остановка обычно упоминается как «буферизация». Адаптивный битрейт (он же ABR) - это метод, который пытается предотвратить буферизацию; см. https://en.wikipedia.org/wiki/Adaptive_bitrate_streaming (или Google для выражения) - когда проигрыватель замечает, что доступная пропускная способность ниже, чем битовая скорость видеопотока, он может переключиться на другую версию того же потока, который имеет более низкая скорость передачи данных (обычно достигается за счет более высокого сжатия и / или более низкого разрешения - что приводит к снижению качества, но это лучше, чем буферизация)

PS # 1: потоковые решения на основе WebRT C и Websocket не могут использовать это трюк измерения и должны реализовать другие решения

PS # 2: Новые / будущие варианты HLS (например, LL-HLS и LHLS) и MPEG-DA SH используют другие технологии HTTP (например, chunked-Transfer или HTTP PU SH) для достижения более низкой задержки - они, как правило, плохо работают с упомянутой методикой измерения и используют различные методы, которые я рассматриваю здесь вне рамок.

0 голосов
/ 07 января 2020

Вы должны использовать потоковый сервер, чтобы сделать это. Wowza сервер является одним из них (не бесплатно). Клиент и сервер будут обмениваться информацией о подключении и распределять фрагменты видео в зависимости от скорости сети.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...