Скоро на iPhone

M3U или M3U8: в чём разница между форматами плейлистов

обновлено · 4 мин чтения

M3U и M3U8 это текстовые плейлисты со ссылками на медиа. M3U8 отличается кодировкой UTF-8, поэтому хранит кириллицу без искажений. Для IPTV на iPhone разница обычно не критична: приложение читает оба файла. Но .m3u8 может быть и плейлистом потока HLS, а не списком каналов.

Скоро на iPhone

Что такое M3U и откуда он взялся?

M3U расшифровывается как MP3 URL. Формат придумали для проигрывателя Winamp, чтобы хранить список аудиофайлов в простом текстовом виде: одна строка, один путь. Со временем в него добавили расширенный вариант с метками, где перед каждой записью идёт строка с названием и длительностью. Краткая история формата описана в Википедии.

Файл M3U можно открыть в любом текстовом редакторе. Это обычные строки, которые читает и человек, и программа. Именно поэтому формат прижился в IPTV: провайдеру достаточно выложить такой файл по ссылке, а приложение само разберёт каналы, группы и логотипы.

Из-за простоты M3U пережил десятки программ и устройств. Его читают телевизоры, приставки, плееры, мобильные приложения, а создать вручную можно в блокноте. Именно эта лёгкость сделала формат стандартом де-факто для списков каналов, хотя официальным стандартом в строгом смысле он не стал: разные программы добавляли свои метки.

Чем M3U8 отличается от M3U?

M3U8 это тот же формат, только сохранённый в кодировке UTF-8. Старый M3U часто хранили в локальной кодировке, например в кириллической кодировке CP1251, и при чтении в другой системе кириллица превращалась в «кракозябры». UTF-8 решает проблему: любые символы читаются одинаково на любом устройстве.

Поэтому в современных списках российских и украинских каналов встречается именно M3U8. Для пользователя разница в том, что названия каналов отображаются корректно. Содержимое при этом то же самое: метки, группы, ссылки.

Отличие кодировок хорошо видно на примере. Если слово «Новости» сохранить в CP1251, а открыть как UTF-8, получится набор странных знаков. Поэтому, получив старый список, откройте его в текстовом редакторе и выберите «Сохранить как» с кодировкой UTF-8. После этого русские названия станут читаемыми в любом приложении.

Почему .m3u8 бывает и плейлистом каналов, и потоком HLS?

Это источник путаницы. Формат HLS (HTTP Live Streaming) от Apple использует файлы .m3u8 как манифесты потока: в них перечислены короткие фрагменты видео, которые плеер скачивает одно за другим. Эти файлы тоже называются M3U8, но по смыслу это не список каналов, а описание одного потока. Спецификация описана в Википедии.

Выглядит так: плейлист каналов содержит строки #EXTINF и ссылки на разные каналы, а манифест HLS содержит строки #EXT-X-STREAM-INF или #EXTINF с длительностью в секундах и ссылками на фрагменты .ts. Если вы вставили в приложение ссылку на манифест одного потока вместо списка каналов, получите один канал. Подробнее о потоках в статье IPTV на iPhone: HLS.

Практическое правило для пользователя: смотрите на содержимое, а не на расширение. Расширение .m3u8 можно встретить у обоих типов файлов, поэтому доверяйте только тому, что внутри. Если внутри много строк #EXTINF с разными названиями каналов, это список. Если ссылки идут на короткие фрагменты .ts, это поток.

Как выглядит файл и какие в нём метки?

PlayUp читает перечисленные метки: имена каналов, группы, логотипы, идентификатор tvg-id и адрес телепрограммы из заголовка. Приложение принимает строки со ссылками http, https, rtmp, rtsp, udp и rtp при разборе файла, но воспроизведение отдельных каналов зависит от формата потока и возможностей iPhone. Телепрограмму PlayUp не показывает, подробнее в статье что такое EPG.

Если вы редактируете файл вручную, не забывайте, что после каждой строки #EXTINF сразу идёт строка с адресом. Пустые строки между ними приложения терпят, а лишний текст может сломать разбор. В PlayUp строки без адреса пропускаются, а запись без поддерживаемой схемы игнорируется.

МеткаЧто значитПример
#EXTM3UПервая строка расширенного плейлиста#EXTM3U
#EXTINFИнформация о канале: длительность, атрибуты, имя#EXTINF:-1 tvg-id="первый" group-title="Новости",Первый канал
tvg-logoАдрес картинки с логотипомtvg-logo="https://.../logo.png"
group-titleГруппа, в которой показать каналgroup-title="Кино"
url-tvg / x-tvg-urlАдрес телепрограммы в заголовке#EXTM3U url-tvg="https://.../epg.xml"
Строка со ссылкойАдрес потока каналаhttps://example.com/stream.m3u8

Какой формат выбрать и как это проверить?

Если вы получаете плейлист от провайдера, он обычно сразу в нужном виде. Если вы собираете свой, позаботьтесь о названиях групп и логотипах: аккуратный файл делает интерфейс в приложении аккуратным. Группа без названия попадёт в раздел «Без группы», а канал без логотипа получит заглушку.

  1. Откройте ссылку на плейлист на компьютере или в текстовом редакторе на телефоне и посмотрите первые строки.
  2. Если первая строка #EXTM3U, а дальше идут строки #EXTINF со ссылками на разные каналы, это список каналов, и его можно добавлять.
  3. Если в файле нет #EXTINF с названиями, а есть строки с #EXT-X-STREAM-INF, это манифест одного потока HLS.
  4. Проверьте, нормально ли отображаются русские буквы. Если вместо них знаки вопроса, файл в устаревшей кодировке, и лучше найти версию в UTF-8.
  5. Убедитесь, что ссылка начинается с http или https и открывается без пароля. Закрытые списки с вводом логина приложения не откроют.
  6. Добавьте плейлист в приложение и проверьте, что группы и логотипы подтянулись.

Как добавить M3U в PlayUp?

Откройте вкладку «Каналы», нажмите «Плейлист», введите название и вставьте ссылку вида https://…/list.m3u. Приложение скачает файл (на загрузку отводится 25 секунд), разберёт каналы и покажет группы. Если ссылка не подходит, появится подсказка «Нужна ссылка вида https://…/list.m3u», а если файл пустой, сообщение «В плейлисте нет каналов».

В бесплатной версии можно держать один плейлист, больше открывает PlayUp Pro. Покупки пока работают в тестовом режиме, цены не назначены. Каналов PlayUp не раздаёт: плейлист вы берёте сами у провайдера или из открытых источников. Разбор самого формата и первые шаги в статье M3U-плейлист для IPTV.

Какие ошибки бывают с плейлистами?

Если плейлист не загружается, сначала проверьте ссылку в обычном окне: она должна открывать или скачивать текстовый файл. Дальше помогает проверка отдельных каналов, как описано в статье как проверить M3U-ссылку.

Итог: M3U и M3U8 различаются кодировкой, а не принципом работы. Выбирайте UTF-8, читайте содержимое, а не расширение, и отличайте список каналов от манифеста одного потока HLS.

  • Вставлена ссылка на сайт со списком, а не на сам файл.
  • Плейлист хранится в закрытом облаке и требует входа.
  • Файл в старой кодировке: кириллица превращается в знаки.
  • Ссылка устарела: провайдер сменил адрес или удалил файл.
  • В файле лишь один поток вместо списка каналов.

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

Чем M3U8 отличается от M3U?

M3U8 это M3U в кодировке UTF-8. Структура и метки те же, но русские названия не искажаются.

Можно ли переименовать .m3u в .m3u8?

Переименование само по себе кодировку не меняет. Нужно пересохранить файл в UTF-8 в текстовом редакторе.

Это одно и то же с HLS?

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

Какие метки читает PlayUp?

Имена, группы, логотипы, tvg-id и адрес телепрограммы из заголовка. Саму телепрограмму приложение не показывает.

Можно ли открыть M3U без интернета?

Сам файл открывается в текстовом редакторе, но смотреть каналы без интернета нельзя: каждая ссылка ведёт на поток в сети.

Читайте также

Видео на экране CarPlay, когда машина стоит

  • Свои сайты и IPTV-плейлисты в одном приложении
  • В движении картинка на экране машины скрыта, звук идёт
  • Пассажир смотрит дальше на своём телефоне

Скоро на iPhone