HLS против DASH: как на самом деле работают протоколы потоковой передачи
До появления потоковой передачи просмотр видео онлайн означал одно: сначала загрузить весь файл, а затем воспроизвести его. Видео размером 500 МБ должно было полностью поступить на ваше устройство, даже если вам нужны были только первые 30 секунд. Протоколы потоковой передачи решают именно эту проблему: они разрезают видео на небольшие куски и воспроизводят его, пока остальная часть еще загружается.
Сегментация: строительный блок потоковой передачи
Возьмем HLS (HTTP Live Streaming, созданный Apple), наиболее распространенный протокол: сервер разрезает полное видео на большое количество небольших файлов, называемых сегментами, обычно длиной 2–10 секунд и упаковываемых в формате MPEG-TS или fMP4. Он также создает файл списка воспроизведения (.m3u8), в котором записан порядок и адреса сегментов. Плеер сначала извлекает плейлист, затем загружает сегменты по требованию — завершает один, получает следующий, почти без ожидания.
Адаптивный битрейт: почему воспроизведение не останавливается в слабой сети
HLS и DASH (динамическая адаптивная потоковая передача через HTTP, поддерживаемая Microsoft и другими) готовят несколько наборов сегментов для одного и того же видео с разными разрешениями и битрейтами — скажем, по одному набору для 1080p, 720p и 480p — все они перечислены в основном списке воспроизведения. Плеер отслеживает скорость загрузки и уровень буфера в режиме реального времени: он переключается на более высокий битрейт, когда сеть хорошая, и понижает его, когда она ухудшается, сохраняя непрерывность воспроизведения. Это потоковая передача с адаптивным битрейтом (ABR), и именно поэтому видео автоматически становится размытым, когда вы едете в метро.
Почему скачивание по ссылке m3u8 часто не удаётся
Загрузив URL-адрес .m3u8, вы получите несколько КБ текста — список воспроизведения, а не само видео. Чтобы сохранить видео, инструмент должен проанализировать список воспроизведения, загрузить каждый сегмент и соединить их по порядку. Вот почему многие загрузчики либо вообще не поддерживают видео HLS, либо требуют специального шага «объединить сегменты». В TakeVid встроен анализ сегментов и автоматическое объединение, поэтому вы загружаете полный, готовый к воспроизведению файл.
- HLS: разработан Apple, использует плейлисты .m3u8, встроенно поддерживается iOS/Safari, подходит для прямых трансляций и видео по запросу
- DASH: открытый стандарт с манифестами .mpd, широко используемый YouTube, Netflix и другими.
- Оба используют простой HTTP, дружественны к CDN и сегодня доминируют в потоковой передаче.