2016-02-07 4 views
1

Я работаю над проектом, в котором я создаю веб-службу потокового видео. То, что я создал до сих пор, - это служба, которая синхронно записывает видеоконтент в поток пользователей. Но мой веб-сервис работает не так, как работает Youtube/Netflix.Как потоковое видео Youtube/NetFlix?

Мне просто интересно, как видео потока Youtube/Netflix. Эти веб-сайты напрямую не отправляют видеоконтент в браузер пользователей. Я просматривал вкладки сетей в настройках разработчиков и видел, что оба этих веб-сайта делают новые запросы к веб-API с измененным заголовком диапазона. Может кто-нибудь, пожалуйста, скажите мне, как это работает.

ответ

6

В условиях очень высокого уровня клиент (браузер, мобильное приложение и т. Д.) Запрашивает видео с сервера.

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

Большинство клиентов и серверов теперь поддерживают, по крайней мере, HTTP потокового:

  • клиент получает информацию о видео, включая общий размер файла (например, 75000 байт).
  • Клиент запрашивает подмножество видео изначально - например, байты 0 - 5000.
  • Клиент получает, декодирует и начинает воспроизведение для начальных полученных байтов.
  • По ходу воспроизведения клиент запрашивает следующий раздел видео - например, байты 5001-10 000 и так далее.

Адаптивная Скорость передачи потокового строит на этом для удовлетворения различных сетевых условий:

  • Сервер содержит несколько копий одного и того же видео, закодированных в различных скоростях передачи данных для обеспечения различных скоростей сети (выше, бит ставка является лучшим качеством как общее правило). Все видео разбиты на равную длину (с точки зрения времени), куски - например. 2 вторых куска.
  • Клиент запрашивает информацию о видео (например, используя исходный URL-адрес на веб-странице) и получает ответ «индекс» или «манифест». Этот файл содержит указатели на все видео, аудио, потоки субтитров и т. Д. Для этого видео.
  • Клиент запрашивает первый фрагмент видео из одного из потоков бит-скорости, перечисленных в манифесте. Например, он может начинаться с самого низкого битрейта в начале, чтобы убедиться, что видео запускается быстро и в случае возникновения проблем с сетью.
  • Если первый кусок загружен успешно, клиент запросит фрагмент следующей максимальной битовой скорости в течение следующих 2 секунд видео.
  • Клиент повторяет это до тех пор, пока он не достигнет наивысшей скорости передачи данных или не увидит задержку, загружающую кусок, подразумевая, что эта скорость передачи данных слишком высока для текущих сетевых условий.
  • Клиент продолжает отслеживать соединение во время воспроизведения и увеличивает или уменьшает скорость передачи в зависимости от условий сети.

Фактически вы можете увидеть эффект ABR на YouTube, Netflix и т. Д .: когда вы начинаете видео, вы часто увидите, что качество не так хорошо, как первые 30 секунд до минуты, когда он увеличивает скорость передачи битов.

На YouTube также есть отличная статистика, к которой вы можете получить доступ, щелкнув правой кнопкой мыши видео и проверив «статистику для кретинов».