5 мин чтения

Что такое m3u8 и как скачать HLS-поток

Частая история: человек находит в инструментах разработчика ссылку на файл с расширением m3u8, скачивает его — и получает текстовый документ на несколько килобайт. Видео там нет и не было.

m3u8 — это оглавление, а не видео

HLS расшифровывается как HTTP Live Streaming — способ доставки видео, придуманный для того, чтобы поток подстраивался под скорость соединения. Видео заранее нарезано на короткие куски, обычно по 2–10 секунд, и каждый кусок лежит отдельным файлом.

Файл m3u8 — это плейлист: обычный текстовый список адресов всех сегментов по порядку. Плеер читает его, качает куски один за другим и склеивает на лету при воспроизведении. Отсюда и размер: список ссылок весит килобайты независимо от того, час там видео или пять минут.

Аналогия: m3u8 — это оглавление книги. Скачав оглавление, вы не скачали книгу.

Зачем такая сложность

  • Адаптивное качество. Обычно плейлистов несколько — по одному на разрешение. Плеер переключается между ними прямо во время просмотра, если скорость просела.
  • Быстрый старт. Не нужно ждать загрузки всего файла, достаточно первого сегмента.
  • Живые трансляции. Список сегментов дописывается по ходу эфира — для обычного файла это невозможно.

Мастер-плейлист и медиа-плейлист

Часто m3u8 бывает двух уровней. Мастер-плейлист содержит не сегменты, а ссылки на другие плейлисты — по одному на качество. И только внутри них лежат адреса реальных кусков. Поэтому иногда, открыв m3u8, вы видите ещё несколько ссылок на m3u8 — это нормально.

Как получить нормальный файл

Нужно скачать все сегменты и склеить их в один контейнер. Вручную это возможно, но при часовом видео сегментов будут сотни. Tentek Video Downloader делает это сам: замечает плейлист в запросах страницы, выбирает нужное качество, забирает сегменты и собирает из них файл.

  1. 1Откройте страницу с видео и запустите воспроизведение — пока плеер не запросил плейлист, перехватывать нечего.
  2. 2Нажмите на иконку Tentek: найденные потоки появятся списком.
  3. 3Выберите вариант с наибольшим разрешением.
  4. 4Дождитесь окончания — сборка занимает дольше обычной загрузки, потому что файл собирается у вас локально.

Когда не получится

  • Сегменты зашифрованы DRM. У платных стримингов ключ доступен только защищённому модулю браузера — такой поток не собрать.
  • Ссылки подписаны и живут минуты. Поток играет, но адреса протухают раньше, чем закончится загрузка.
  • Идёт живая трансляция. Пока эфир не закончился, плейлист не имеет конца — скачать можно только уже вышедшую часть.

Обычное шифрование AES внутри самого HLS — не помеха: ключ в этом случае лежит рядом с плейлистом и доступен плееру, а значит и расширению. Непреодолим именно DRM, это другая технология.

Частые вопросы

Почему скачанный m3u8 весит несколько килобайт?

Потому что это текстовый список ссылок на сегменты, а не само видео. Размер не зависит от длительности ролика.

Чем HLS отличается от DASH?

Идея одна — нарезка на сегменты и адаптивное качество. HLS придумала Apple и использует плейлисты m3u8, DASH — открытый стандарт с манифестом mpd. Расширение работает с обоими.

Можно ли скачать идущую сейчас трансляцию?

Только ту часть, что уже вышла в эфир. Плейлист живой трансляции дописывается по ходу и не имеет конца, пока эфир не завершён.

Почему сборка идёт дольше обычной загрузки?

Файл собирается на вашем компьютере: сначала качаются десятки или сотни сегментов, затем они сводятся в один контейнер.

Файл получился без звука

Значит скачалась только видеодорожка. В потоках со звуком отдельным треком нужно выбирать вариант с пометкой о склейке — подробнее в разборе про Vimeo.

Установить в Chrome — бесплатно

Бесплатно. Без регистрации.