M3U8 / HLS
Apple изобрела его, каждое устройство Apple его воспроизводит, и ни одно его не сохраняет.
Файл .m3u8 — это плейлист, а не видео: несколько килобайт текста, перечисляющих тысячи маленьких сегментов, которые нужно забирать по порядку. Именно из-за этой конструкции HLS безупречно играет на любом устройстве Apple и именно поэтому «сохранить этот файл» даёт текстовый документ. Скачать такой поток значит забрать каждый сегмент и собрать заново файл, которого никогда не существовало.
30 июля 2026 г.
Открывается без посторонней помощи в
HLS — собственная спецификация Apple с полноценной поддержкой везде: в Safari, AVPlayer, AirPlay. Что нигде в системе не поддерживается, так это превращение прямого эфира в файл на диске. Воспроизведение и сохранение — совершенно разные задачи.
Факты
| Полное название | HTTP Live Streaming; сам плейлист — это M3U в UTF-8 |
|---|---|
| Тип | Протокол стриминга, доставляемый в виде текстового плейлиста |
| Расширения | .m3u8 (плейлист), .ts или .m4s (сегменты, на которые он указывает) |
| Опубликован | 2009 год, Apple; стандартизирован как RFC 8216 в 2017 году |
| Типичная длина сегмента | От 2 до 10 секунд каждый — час видео это сотни, а то и тысячи файлов |
| Мастер-плейлист и медиаплейлист | Мастер перечисляет уровни качества; каждый из них указывает на медиаплейлист с реальными сегментами |
| Видео внутри сегментов | H.264 или HEVC, изредка AV1 |
| Прямые эфиры | Плейлист заново запрашивается каждые несколько секунд и растёт по мере продолжения трансляции |
Оглавление, а не сама книга
Открой .m3u8 в текстовом редакторе — и найдёшь пару десятков строк: заголовок, несколько параметров и длинный список адресов. Это весь файл целиком. Видео живёт в другом месте, нарезанное на сегменты по несколько секунд каждый, лежащие на сервере тысячами отдельных мелких файлов.
Плеер читает список, забирает первые несколько сегментов, начинает воспроизведение и продолжает забирать данные с опережением. Когда твоё соединение замедляется, он переключается на вариант с более низким качеством, перечисленный в мастер-плейлисте, — другой набор сегментов на другом битрейте — и делает это между сегментами, поэтому ты видишь смену качества, а не паузу. Именно это адаптивное переключение и есть причина, по которой этот формат победил.
Это же объясняет вещь, которая удивляет людей: единого файла, который можно получить, не существует. Фильм, который ты смотришь, нигде не существует как отдельный объект. Это тысяча кусочков и набор инструкций.
Почему при сохранении получается текстовый файл
Потому что именно это ты и сохранил. Браузер запросил указанный тобой адрес, получил четыре килобайта плейлиста и записал их на диск. Всё, что ты реально смотрел, пришло через тысячу отдельных запросов, о которых операция сохранения ничего не знала.
Правильно скачать HLS значит сделать то же самое, что делает плеер, но на диск: прочитать плейлист, выбрать вариант качества, забрать все сегменты по порядку, а затем сшить их в один контейнер. Этот финальный шаг называется ремультиплексированием — видео и звук не перекодируются заново, а лишь переписываются в единый MP4 с нормальным индексом, чтобы результат можно было перематывать.
Две вещи усложняют это больше, чем кажется на слух. Адреса сегментов часто относительные и меняются от сессии к сессии, поэтому список, полученный час назад, может быть уже мёртв. А потоки нередко зашифрованы ключом, на который ссылается плейлист, доставляемым отдельно и меняющимся во время воспроизведения.
Как получить поток на устройство
Только для потоков, на сохранение которых у тебя есть право, — твоей собственной записи, твоей собственной подписки IPTV, вещателя, предлагающего скачивание. Дальше описано, как работает механизм, а не разрешение направлять его куда угодно.
- Доверить сегменты движку загрузки
Забрать тысячу файлов и ремультиплексировать их — именно то, что делает загрузчик FoxDL с источником HLS: он проходит плейлист от начала до конца, забирает сегменты параллельно и записывает единый MP4, который перематывается как обычный файл. В итоге у тебя оказывается файл, а не папка с кусочками.
- Брать прямой файл, если он существует
Многие сайты отдают одновременно и HLS, и обычный прогрессивный MP4. MP4 — это один запрос, один файл и никакой пересборки — всегда лучший вариант, если он предложен.
- Смириться с тем, что некоторые потоки нельзя сохранить
Потоки, защищённые DRM — FairPlay, Widevine, — зашифрованы от начала до конца и не предназначены для скачивания по замыслу. Ни один инструмент этого не меняет, а тот, что утверждает обратное, о чём-то врёт.
Где ломаются загрузки HLS
Сегменты, склеенные без ремультиплексирования, дают воспроизводимый файл без индекса. Он играет с начала и никуда не перематывается. Ремультиплексирование записывает индекс, который это исправляет.
У живого плейлиста нет конца — он продолжает расти. Скачать такой поток означает записывать его, и остановится он тогда, когда остановишь ты, а не когда закончится файл.
Адреса плейлиста обычно подписаны и ограничены по времени. Файл .m3u8, сохранённый утром, к вечеру часто уже указывает в никуда.
Вопросы об этом формате
Откуда эти факты
- RFC 8216 — HTTP Live Streaming IETF
- HTTP Live Streaming Apple Developer
Похожие форматы
Твоя библиотека — наконец в одном месте.
Скачать бесплатно. Без аккаунта, без регистрации, без данных, которые нужно кому-то передавать.