К блогу

Что такое M3U8? Полное руководство по протоколу HLS и плейлисту .m3u8

M3U8 — это UTF-8 текстовый плейлист, который использует протокол HLS (HTTP Live Streaming). Глубокий разбор структуры файла .m3u8, принципов работы HLS, сегментов .ts/fMP4, ключевых различий между M3U8 и MP4 и адаптивного битрейта.

By

M3U8 — это UTF-8 текстовый плейлист, который использует протокол HLS (HTTP Live Streaming). Сам файл не содержит видеокадров — это манифест со списком URL видеосегментов (.ts или .m4s), их длительностей и доступных вариантов битрейта. Плеер читает .m3u8, по очереди загружает сегменты и сшивает их в реальном времени в воспроизводимый видеопоток — именно этот механизм лежит в основе YouTube, Netflix, Twitch, Apple TV+ и большинства крупных стриминговых сервисов в 2026 году.

Схема рабочего потока M3U8 и HLS: браузер или плеер сначала запрашивает мастер-плейлист .m3u8, получает медиа-плейлист для каждого варианта, параллельно скачивает сегменты .ts или .m4s, после чего локально пересобирает их в правильном порядке и декодирует в воспроизводимый видеопоток.
Рисунок 1. Полный поток воспроизведения HLS от начала до конца: мастер-плейлист → медиа-плейлист → загрузка сегментов → пересборка в реальном времени.

Вы когда-нибудь пытались сохранить видео со стриминг-сайта и в итоге получали сотни крошечных файлов .ts вместо одного аккуратного .mp4? Или открывали вкладку Network в браузере, ожидая чистый URL загрузки, а вместо этого находили нескончаемый поток двухсекундных фрагментов? Вы не делали ничего неправильно. Вы смотрели HLS — протокол, доставляющий большую часть стримингового видео в современном вебе, — а HLS не отправляет видео как один файл. Он отправляет его как рецепт плюс части.

Рецепт — это маленький текстовый файл-плейлист .m3u8. Части — короткие независимо декодируемые видеосегменты, которые плеер сшивает на лету. HLS был создан Apple в 2009 году для первого iPhone и стандартизирован как RFC 8216; сегодня его нативно поддерживают почти все крупные браузеры, мобильные устройства и телевизоры.

Это руководство пройдёт по тому, что на самом деле содержит .m3u8, почему стриминговые сервисы выбрали этот дизайн, как соотносятся .ts и fMP4-сегменты, какие платформы используют HLS в 2026 году и что происходит, когда вы пытаетесь сохранить один из этих потоков на диск.

Главное {#key-takeaways}

  • HLS — это стриминговый протокол, а не формат файла. Он доставляет видео как плейлист (.m3u8) плюс короткие сегменты (.ts или fragmented MP4) по обычному HTTP.
  • .m3u8 — это индекс, а не видео. Сохранение одного только файла .m3u8 даёт вам рецепт без ингредиентов.
  • Apple создала HLS в 2009 году для iPhone и стандартизировала его как RFC 8216 в 2017 году. Сейчас он обязателен на iOS/Safari и поддерживается почти повсеместно в других местах.
  • Сегменты занимают 2–10 секунд видео каждый — достаточно коротко, чтобы переключать качество между ними, и достаточно долго, чтобы оставить накладные расходы HTTP разумными.
  • Мастер-плейлист перечисляет варианты; медиа-плейлист перечисляет сегменты. Плееры читают мастер, выбирают вариант, затем загружают медиа-плейлист этого варианта.
  • Сегменты .ts заменяются на fragmented MP4 (CMAF), чтобы один и тот же файл мог обслуживать HLS- и DASH-плееры из одного источника.
  • Большая часть современного стриминга лежит на HLS или DASH, часто на обоих сразу — включая YouTube, Netflix, Disney+, Twitch, Apple TV+ и Cloudflare Stream.

M3U8 vs MP4: ключевые отличия

Большинство людей впервые сталкиваются с .m3u8, когда пытаются скачать видео и получают маленький текстовый файл вместо привычного .mp4. Эти два формата часто соседствуют в одном рабочем потоке, но по сути относятся к разным категориям — один из них плейлист (манифест), другой — контейнер. В таблице ниже собраны самые востребованные в практике различия.

КритерийM3U8 (плейлист HLS)MP4 (видеоконтейнер)
Что этоUTF-8 текстовый плейлист (манифест)Самостоятельный бинарный видеоконтейнер
Как хранитсяОдин .m3u8 + десятки или сотни сегментов .ts/.m4sОдин файл .mp4
РазмерМанифест — несколько КБ; сегменты в сумме ≈ MP4 того же качестваВсё видео упаковано в один файл
Смена качестваАдаптивный битрейт (несколько вариантов, переключение на лету)Одно фиксированное качество
Прямые трансляцииНативно (манифест может расти с появлением новых сегментов)Не подходит для live
Перемотка / seekМгновенно по границам сегментовНужна поддержка HTTP Range на сервере
ШифрованиеAES-128 на уровне сегментов + DRM-слои (FairPlay, Widevine и др.)По умолчанию без шифрования; DRM можно добавить
Требования к плееруНужен плеер с поддержкой HLS (Safari, VLC, IINA, hls.js и т. д.)MP4 воспроизводит почти любой плеер нативно
Типичное применениеОнлайн-доставка: Netflix, YouTube, Twitch, Apple TV+Локальное воспроизведение, скачивание, монтаж, вложения
Для офлайн-использованияНужно склеить все сегменты по порядку в один MP4Уже готовый к обмену файл

В одной строке: M3U8 — это «оглавление», а MP4 — «готовый файл». При просмотре онлайн браузер получает M3U8-манифест и подтягивает сегменты по мере необходимости. Чтобы сохранить копию надолго или поделиться с друзьями, в итоге почти всегда приходится склеивать сегменты обратно в MP4.

Простое объяснение

Забудьте на секунду о протоколах. Представьте режиссёра, которому нужно отправить готовый фильм зрителям по всему миру по ненадёжному интернету. Отправка одного гигантского MP4 — провал: если соединение зрителя оборвётся посреди загрузки, он окажется в нуле, а сменить качество без повторной загрузки невозможно. Поэтому вместо этого режиссёр режет фильм на сотни 6-секундных клипов и пишет пронумерованный плейлист, говорящий: «воспроизведи клип 001, потом 002, потом 003…» Плеер зрителя загружает плейлист, получает первые несколько клипов и начинает воспроизведение, пока остальные подтягиваются позади него. Если соединение замедляется, плеер переключается на версию следующего клипа более низкого качества, не пропуская ни одного кадра.

Это HLS в одном предложении: фильм, разрезанный на короткие клипы, плюс файл-плейлист .m3u8, говорящий плееру, какой клип воспроизводить следующим.

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

Если вы когда-нибудь задумывались, почему поток YouTube или Netflix плавно подхватывается, когда ваш Wi-Fi дрогнул, в то время как прямая загрузка MP4 с какого-нибудь сайта тормозит и умирает, — вот почему. Весь стек проектировался исходя из предположения, что интернет беспорядочен и соединения приходят и уходят. Большое обсуждение того, как плееры адаптируют качество на лету живёт в собственной статье; здесь просто заметьте, что дизайн «сегмент плюс плейлист» — это то, что вообще делает такую адаптацию возможной.

Как на самом деле работает HLS

HLS-поток — это два слоя плейлистов плюс куча сегментов, и всё это обслуживается по обычному HTTP. Ничего экзотического, никакого нестандартного протокола — ваш браузер уже умеет делать каждую часть этого.

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

Первое, что получает плеер, — мастер-плейлист. Это небольшой текстовый файл с расширением .m3u8, перечисляющий каждый доступный вариант потока — обычно разные уровни качества — вместе с пропускной способностью и разрешением каждого. Вот как выглядит реальный пример, слегка укороченный:

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-STREAM-INF:BANDWIDTH=5000000,RESOLUTION=1920x1080,CODECS="avc1.640028,mp4a.40.2"
1080p/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2800000,RESOLUTION=1280x720,CODECS="avc1.4d401f,mp4a.40.2"
720p/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1400000,RESOLUTION=854x480,CODECS="avc1.4d401e,mp4a.40.2"
480p/index.m3u8

Строка #EXTM3U помечает файл как расширенный M3U-плейлист. #EXT-X-VERSION:6 объявляет используемую версию протокола HLS. Каждый блок #EXT-X-STREAM-INF описывает один вариант: его битрейт, разрешение и строку кодека, за которой следует URL на второй плейлист для этого варианта. Плеер читает этот файл, оценивает вашу пропускную способность и выбирает вариант, который, по его мнению, вы сможете поддерживать.

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

Когда плеер выбирает вариант, он получает медиа-плейлист этого варианта. Именно здесь живут фактические URL сегментов:

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:6.000,
segment000.ts
#EXTINF:6.000,
segment001.ts
#EXTINF:6.000,
segment002.ts
#EXT-X-ENDLIST

#EXT-X-TARGETDURATION:6 говорит, что ни один сегмент не длиннее 6 секунд. Каждая строка #EXTINF:6.000, объявляет точную длительность сегмента, за которой следует URL сегмента. #EXT-X-ENDLIST говорит плееру, что это поток видео по запросу — больше сегментов никогда добавлено не будет. Прямые трансляции опускают #EXT-X-ENDLIST, а плеер перезапрашивает этот плейлист каждые несколько секунд, чтобы обнаружить новые сегменты.

Сегменты: .ts и fMP4

Сегменты — это короткие фрагменты видео и аудио — обычно 2–10 секунд — нарезанные по границам ключевых кадров, чтобы плеер мог начать декодирование с начала любого сегмента. Когда плейлист объявляет #EXT-X-INDEPENDENT-SEGMENTS, каждый сегмент гарантированно воспроизводится сам по себе; без этого флага последующие сегменты могут зависеть от данных, переносимых предыдущими. Исторически сегменты — это файлы MPEG-2 Transport Stream с расширением .ts — тот же формат контейнера, что доставляет спутниковое и кабельное ТВ. MPEG-TS был спроектирован для шумных вещательных каналов, поэтому он устойчив к частичной порче, и любой плеер, способный декодировать пакеты .ts, может воспроизвести HLS-сегмент.

Типичная длина сегмента — 2–10 секунд. Более короткие сегменты означают меньшую задержку и более ловкое переключение битрейта, но больше HTTP-запросов и больше накладных расходов на минуту видео. Более длинные сегменты означают лучшую эффективность сжатия и меньше запросов, но более медленную реакцию на изменения пропускной способности. Оригинальная спецификация Apple рекомендовала 10-секундные сегменты; современные сервисы обычно остаются в диапазоне 2–6 секунд.

С 2016 года индустрия мигрирует с .ts на сегменты fragmented MP4 — а именно Common Media Application Format (CMAF), стандартизированный как ISO/IEC 23000-19. CMAF-сегменты используют ту же фрагментацию MP4, что и MPEG-DASH, а это означает, что один набор файлов на CDN может обслуживать и HLS-, и DASH-плееры. Это значительная выгода по стоимости для стриминговых сервисов: одна кодировка, один набор байтов, два протокола. Современные HLS-потоки от YouTube, Netflix и Apple — это почти полностью CMAF, а не устаревший MPEG-TS.

HTTP до самого низа

«HTTP» в HTTP Live Streaming — это панчлайн. В кабеле нет никакого специального протокола — каждая часть HLS идёт по тем же HTTPS-запросам, что ваш браузер использует для HTML и JPEG. CDN это обожают, потому что они уже были оптимизированы под HTTP. Файрволы пропускают это, потому что ничего необычного. CDN могут кэшировать популярные сегменты на границе. Range-запросы, gzip, HTTP/2, HTTP/3, TLS — всё это работает «бесплатно».

Именно поэтому HLS победил. Более ранние стриминговые протоколы — RTMP, RTSP, MMS — требовали выделенных портов, серверов с состоянием и специальных правил файрвола. HLS просто выглядит как сайт, отдающий много маленьких файлов.

Большинству пользователей не нужно вручную с этим разбираться — VidMost разбирает манифест .m3u8 и объединяет сегменты в чистый MP4 в фоне.

Где вы встречаете HLS в реальном мире

HLS присутствует практически на каждом крупном стриминговом сервисе в 2026 году, часто рядом с DASH. Apple изобрела HLS в 2009 году специально для доставки видео на оригинальный iPhone — устройство плохо справлялось с прогрессивной загрузкой по сотовым сетям, и Apple хотела формат стриминга, который для операторов просто выглядел как HTTP-трафик. С тех пор протокол стал стандартом по умолчанию для огромного куска интернета.

  • Собственные сервисы Apple — только HLS. Apple TV+, iTunes Store, подкасты в Apple Podcasts и любое видео, воспроизводящееся в Safari, на iOS или tvOS, опирается на HLS. Платформы Apple не поставляют встроенный декодер MPEG-DASH, поэтому любой сервис, который хочет воспроизводиться на iPhone, должен предлагать HLS-фид.
  • YouTube использует MPEG-DASH как основной протокол в вебе и на Android, но поставляет HLS для iOS, Safari, AirPlay и большинства ТВ-приложений. Откройте инструменты разработчика браузера на YouTube в Safari, и вы увидите запросы .m3u8; в Chrome на Android вместо этого увидите DASH-запросы .mpd.
  • Netflix, Disney+, Hulu, Max и Amazon Prime Video — все используют смесь. Их приложения для смарт-ТВ и консолей часто используют HLS с FairPlay или PlayReady DRM; их веб-плееры часто переключаются на DASH с Widevine. Один и тот же контент, разный протокол для разных клиентов.
  • Twitch работает на HLS с 2014 года, когда он отказался от устаревшего RTMP-стека на стороне воспроизведения. Каждая прямая трансляция и каждый VOD на Twitch — это HLS под капотом.
  • Платформы прямых трансляций и для авторов — Bigo Live, Chaturbate, OnlyFans live, трансляции Fansly — почти повсеместно используют HLS для воспроизведения в браузере, потому что он работает без плагинов и терпит ненадёжные соединения.
  • Хостинговые видеопровайдеры вроде Vimeo, Mux, JW Player и Cloudflare Stream доставляют HLS по умолчанию. Если сайт встраивает iframe Vimeo или Mux, видео под ним почти наверняка HLS.
  • Спортивные и новостные вещатели — ESPN, BBC iPlayer, DAZN, Sling TV — все полагаются на HLS для доставки прямых событий, часто с наложенным сверху DRM.

HLS вырвался за пределы своих iOS-корней, потому что решал реальные проблемы для всех, а не только для Apple. К моменту прибытия DASH в 2012 году у HLS уже была широкая поддержка CDN, работающие плееры в продакшене и инерция. Сегодня два протокола сосуществуют; продуманный стриминговый сервис поддерживает оба, и многие поставляют одни и те же CMAF-сегменты под обоими форматами манифеста. Подробнее о том, как DASH сравнивается с HLS, родственная статья освещает это от начала до конца.

Что это значит, если вы хотите сохранить видео

Знание того, как работает HLS, делает одну практическую проблему внезапно очевидной: вы не можете просто «правый клик → Сохранить как» проложить путь к скачанному HLS-видео. Несколько причин механические, несколько тонкие, и одна или две вас удивят.

  • Сохранить как в браузере сохраняет только .m3u8. .m3u8 — это то, что страница на самом деле скачивает, когда начинает воспроизведение, — небольшой текстовый файл. Сохранение его даёт вам рецепт, а не еду. Открытие этого файла в VLC иногда работает (VLC последует по URL внутри), но только пока оригинальная сессия ещё действительна и URL не истекли.
  • Каждый сегмент — это отдельный HTTP-запрос. 30-минутное видео с 6-секундными сегментами — это 300 отдельных загрузок. Вам нужно перечислить плейлист, получить каждый сегмент и конкатенировать их в правильном порядке, прежде чем они станут воспроизводимыми как один файл.
  • Выбор варианта — реальный выбор. Мастер-плейлисты перечисляют несколько качеств. Неверный выбор даст вам копию 480p фильма, который стримился в 1080p. Правильное решение обычно — самый высокобитрейтный вариант, который выдержат ваше хранилище и терпение.
  • HTTPS защищает байты в пути, а не байты на диске. URL сегментов почти всегда обслуживаются по HTTPS, так что подслушивающий в сети не может прочитать, что вы стримите. Но как только сегмент пришёл в ваш браузер, это незашифрованное видео — TLS ничего не делает, чтобы остановить инструмент, у которого уже есть доступ к ответу.
  • HLS поддерживает шифрование сегментов AES-128 как уровень содержимого. Когда .m3u8 несёт тег #EXT-X-KEY, каждый сегмент зашифрован AES-128, а плейлист указывает на URL ключа, который плеер получает по HTTPS. Сохраните сегменты без ключа — и у вас папка шифротекста. Это шифрование контента, отдельное от транспортной безопасности, и в него не встроена проверка прав доступа — воротами является сам URL ключа.
  • Коммерческий DRM — другая проблема. Премиум-сервисы вроде Netflix, Disney+ и Apple TV+ наслаивают на HLS FairPlay (Apple), Widevine (Google) или PlayReady (Microsoft). Шифрование в кабеле всё ещё на основе AES, но ключи выдаются лицензионным сервером только после того, как плеер подтвердит права на доверенном устройстве, а расшифровка происходит внутри аппаратно поддерживаемого защищённого модуля, так что кадры никогда не касаются памяти приложения. См. Что такое DRM-защищённый контент? для полной картины.
  • Токены и подписанные URL истекают. Многие URL .m3u8 и URL сегментов подписаны короткоживущими токенами, которые становятся неактуальными за минуты. К тому моменту, как вы вручную напишете скрипт загрузки, половина ваших ссылок уже может быть мертва.

Здесь VidMost и берёт дело в свои руки. VidMost создан для законного резервного копирования HLS-контента, к которому у вас есть правомерный доступ: архивов ваших собственных прямых трансляций, оплаченных вами курсов, видео со свободными лицензиями или из общественного достояния, корпоративных обучающих материалов без коммерческого DRM, а также контента платных подписок, если условия сервиса прямо разрешают скачивание. VidMost разбирает манифест .m3u8, выбирает доступный вариант наивысшего качества, скачивает каждый сегмент параллельно с того же CDN, с которым уже общался ваш браузер, автоматически обрабатывает обычное шифрование сегментов AES-128 и ремультиплексирует сегменты в один чистый файл MP4 по завершении. Потоки, защищённые коммерческим DRM, — FairPlay, Widevine или PlayReady на премиум-сервисах вроде Netflix, Disney+ или Apple TV+, — находятся вне области применения VidMost; следуйте условиям обслуживания каждой платформы и законам вашей юрисдикции. Для всего остального видимый пользователю опыт — «вставил подходящий URL — получил MP4», а уровень протокола исчезает.

Распространённые заблуждения и подводные камни

Несколько заблуждений о HLS снова и снова всплывают в ветках форумов. Стоит их прояснить.

  • «.m3u8 — это не видеофайл». Это индекс. Само видео находится в сегментах, на которые ссылается плейлист. Если инструмент предлагает «скачать m3u8», спросите, получает ли он также сегменты и сливает ли их — иначе у вас бесполезный текстовый файл.
  • «Файлы .ts не воспроизводятся напрямую в большинстве плееров». Один сегмент может воспроизвести несколько секунд в VLC, но всё видео — это не последовательность файлов .ts в папке, а последовательность, где каждый должен быть декодирован по порядку и сшит вместе. Плееры, не понимающие HLS, в лучшем случае воспроизведут первый сегмент и остановятся.
  • «HLS не всегда означает live». «HTTP Live Streaming» — обманчивое название в 2026 году. HLS одинаково хорошо работает для видео по запросу: те же плейлисты, те же сегменты, просто с #EXT-X-ENDLIST, маркирующим конечный поток. Подавляющее большинство каталога Netflix, Disney+ и Apple TV+ — это VOD HLS, а не live.
  • «Более высокий битрейт — не всегда лучшее качество, если соединение проседает». Вариант 10 Мбит/с отлично выглядит на оптоволокне и жалко заикается на мобильном канале 3 Мбит/с. Весь смысл адаптивного дизайна в том, что плеер выбирает то, что ваше соединение может поддержать — переопределение его вручную часто делает опыт хуже, а не лучше.
  • «Браузерные инструменты загрузки обычно не справляются с HLS». Универсальные расширения «скачивания видео» ищут теги <video src="...">, указывающие на MP4-файлы. HLS-потоки не выставляют такой URL; плеер использует Media Source Extensions, чтобы программно подавать сегменты в видеоэлемент. Именно поэтому существуют специализированные инструменты, разбирающие манифест.

Заключение

HLS — это безмолвная инфраструктура под большей частью видео, которое вы смотрите. Он работает, потому что отказался от попыток быть умным по поводу транспорта — никакого нестандартного протокола, никакого специального сервера, просто текстовые файлы .m3u8 и сегменты .ts или fMP4, получаемые по тому же HTTP, на котором уже говорит ваш браузер. Apple решила проблему телефона в 2009 году и случайно построила доминирующий стриминговый формат двух следующих десятилетий.

Как только вы научитесь распознавать запрос .m3u8 в сетевой вкладке вашего браузера и читать плейлист, огромное количество стримингового поведения — короткие переключения качества, мгновенная перемотка, индикатор «буферизация впереди», странная папка .ts-файлов, в которой вы оказались — перестаёт быть загадочным. Это всё тот же цикл: получить плейлист, выбрать вариант, получить сегменты, декодировать, повторить.

Если вы предпочитаете полностью пропустить уровень протокола и просто сохранить видео, VidMost обрабатывает HLS, DASH, fMP4 и DRM-защищённые потоки.

Связанные материалы

Часто задаваемые вопросы

Что такое m3u8-файл?
Файл .m3u8 — это текстовый UTF-8-плейлист, используемый HTTP Live Streaming (HLS). Сам по себе он не содержит видео — это манифест, перечисляющий URL фактических видеосегментов (обычно файлов .ts или .m4s) вместе с их длительностями и метаданными. Плееры читают .m3u8, чтобы знать, какие клипы получать и в каком порядке. Файл по сути является оглавлением стримингового видео.
Как открыть m3u8-файл?
Файл .m3u8 — это просто текстовый файл, поэтому любой текстовый редактор откроет его для чтения. Чтобы реально воспроизвести видео, на которое он указывает, нужен плеер, понимающий HLS: VLC, IINA, mpv, ffplay, Safari на macOS или iOS либо любой современный веб-браузер через hls.js. Двойной клик по файлу редко работает, потому что URL внутри обычно относительные и действительны только в исходном стриминговом контексте.
Почему моё видео приходит в виде кучи маленьких файлов?
Потому что HLS-потоки сознательно разрезаны на короткие сегменты — обычно по 2–10 секунд .ts или fragmented-MP4 каждый, нарезанные по границам ключевых кадров, чтобы плеер мог начать декодирование с любого сегмента. Браузерные инструменты загрузки, пытающиеся сохранить поток, часто сохраняют каждый сегмент как отдельный файл вместо того, чтобы их объединить. Чтобы получить один воспроизводимый MP4, сегменты должны быть конкатенированы в порядке, перечисленном в манифесте .m3u8, а аудио- и видеодорожки ремультиплексированы в один контейнер.
HLS — это то же, что DASH?
Нет. Оба — адаптивные HTTP-протоколы стриминга, и оба отправляют видео как манифест плюс сегменты, но это разные спецификации. HLS был создан Apple в 2009 году и стандартизирован как RFC 8216; DASH (Dynamic Adaptive Streaming over HTTP) — это стандарт ISO/IEC 2012 года. HLS использует манифесты .m3u8; DASH использует XML-манифесты .mpd. HLS обязателен на iOS и Safari; DASH доминирует на смарт-ТВ, Android и многих веб-плеерах.
Можно ли воспроизводить .ts-файлы напрямую?
Иногда. Файл .ts — это контейнер MPEG transport stream, содержащий видео H.264 или H.265 и аудио AAC. VLC, mpv и ffplay обычно могут воспроизвести один сегмент .ts, но вы увидите только несколько секунд записи. Чтобы посмотреть всё видео, вам нужны все сегменты, перечисленные в .m3u8, по порядку. Большинство потребительских плееров с трудом справляются с последовательностями .ts-файлов даже когда все они присутствуют — обычно требуется сначала ремультиплексировать их в MP4.
Почему HLS выбирает разное качество в разное время?
Это адаптивный битрейт (ABR). Мастер-плейлист предлагает несколько вариантов — например, 1080p при 5 Мбит/с, 720p при 3 Мбит/с, 480p при 1,5 Мбит/с — а плеер измеряет, как быстро скачиваются сегменты. Когда ваше соединение замедляется, плеер переходит на более низкий вариант на следующей границе сегмента; когда оно ускоряется, плеер поднимается обратно. Результат — меньше ребуферизаций ценой случайных видимых сдвигов качества.
В чём разница между мастер-плейлистом m3u8 и медиа-плейлистом?
Мастер-плейлист — это индекс индексов: он перечисляет каждый доступный вариант качества с его пропускной способностью, разрешением и кодеком, но без фактических URL сегментов. Медиа-плейлист — это реальное расписание для одного варианта: упорядоченный список URL сегментов с их длительностями. Плеер сначала загружает мастер, чтобы выбрать вариант, а затем загружает медиа-плейлист этого варианта, чтобы начать получать сегменты. Некоторые потоки поставляют только медиа-плейлист, если есть лишь один уровень качества.
Законно ли скачивать HLS-потоки?
Это зависит от контента и вашей юрисдикции. Скачивание HLS-потоков, которые вы имеете законное право смотреть — собственные архивы прямых трансляций, лекции, за которые вы заплатили, свободно лицензированный контент — как правило, в порядке. Скачивание DRM-защищённых коммерческих потоков (Netflix, Disney+, Apple TV+) обычно нарушает условия использования платформы и может подпасть под антиобходные законы, такие как DMCA §1201 в США. Всегда проверяйте правила там, где вы живёте, и условия, с которыми вы согласились.