Частая история: человек находит в инструментах разработчика ссылку на файл с расширением m3u8, скачивает его — и получает текстовый документ на несколько килобайт. Видео там нет и не было.
m3u8 — это оглавление, а не видео
HLS расшифровывается как HTTP Live Streaming — способ доставки видео, придуманный для того, чтобы поток подстраивался под скорость соединения. Видео заранее нарезано на короткие куски, обычно по 2–10 секунд, и каждый кусок лежит отдельным файлом.
Файл m3u8 — это плейлист: обычный текстовый список адресов всех сегментов по порядку. Плеер читает его, качает куски один за другим и склеивает на лету при воспроизведении. Отсюда и размер: список ссылок весит килобайты независимо от того, час там видео или пять минут.
Аналогия: m3u8 — это оглавление книги. Скачав оглавление, вы не скачали книгу.
Зачем такая сложность
- Адаптивное качество. Обычно плейлистов несколько — по одному на разрешение. Плеер переключается между ними прямо во время просмотра, если скорость просела.
- Быстрый старт. Не нужно ждать загрузки всего файла, достаточно первого сегмента.
- Живые трансляции. Список сегментов дописывается по ходу эфира — для обычного файла это невозможно.
Мастер-плейлист и медиа-плейлист
Часто m3u8 бывает двух уровней. Мастер-плейлист содержит не сегменты, а ссылки на другие плейлисты — по одному на качество. И только внутри них лежат адреса реальных кусков. Поэтому иногда, открыв m3u8, вы видите ещё несколько ссылок на m3u8 — это нормально.
Как получить нормальный файл
Нужно скачать все сегменты и склеить их в один контейнер. Вручную это возможно, но при часовом видео сегментов будут сотни. Tentek Video Downloader делает это сам: замечает плейлист в запросах страницы, выбирает нужное качество, забирает сегменты и собирает из них файл.
- 1Откройте страницу с видео и запустите воспроизведение — пока плеер не запросил плейлист, перехватывать нечего.
- 2Нажмите на иконку Tentek: найденные потоки появятся списком.
- 3Выберите вариант с наибольшим разрешением.
- 4Дождитесь окончания — сборка занимает дольше обычной загрузки, потому что файл собирается у вас локально.
Когда не получится
- Сегменты зашифрованы DRM. У платных стримингов ключ доступен только защищённому модулю браузера — такой поток не собрать.
- Ссылки подписаны и живут минуты. Поток играет, но адреса протухают раньше, чем закончится загрузка.
- Идёт живая трансляция. Пока эфир не закончился, плейлист не имеет конца — скачать можно только уже вышедшую часть.
Обычное шифрование AES внутри самого HLS — не помеха: ключ в этом случае лежит рядом с плейлистом и доступен плееру, а значит и расширению. Непреодолим именно DRM, это другая технология.