Плей-лист в формате M3U - это обычный текстовый документ в кодировке UTF-8. Его можно редактировать, например, используя приложение Блокнот из стандартного набора утилит Windows. Любой файл M3U начинается с первой строки в которой содержится надпись #EXTM3U. Далее, файл представляет собой набор парных строк, первая из которых всегда начинается с #EXTINF:, а вторая представляет собой ссылку на контент.
Пример файла в формате M3U:
#EXTM3U
#EXTINF:0 tvg-name="BBC" audio-track="eng" tvg-logo="http://mylogos.domain/BBC.png", BBC World
http://server.name/stream/to/video2
#EXTINF:0 tvg-name="CNN" audio-track="jap" group-title="Fav", CNN International
http://server.name/stream/to/video2
#EXTINF:0, Arirang
http://server.name/stream/to/video3
Как видно из примера файл представляет собой набор парных строк обозначающих обозначающих источник потока или сигнала с дополняющим описанием. В примере приведено 3 канала: BBC World, CNN International и Arirang. Первая строка из парных всегда начинается с #EXTINF:(длительность) (атрибуты), (название канала). Обязательные параметры: длительность и название канала. Причем, длительность всегда должна быть равна нулю для Live TV.
Атрибуты являются необязательными параметрами, вот список атрибутов которые используются во время загрузки плей-листа:
- tvg-shift - смещение во времени телепрограммы
- tvg-name - идентификатор телепрограммы канала
- tvg-logo - логотип канала
- audio-track - языковой код (ISO 639-2) аудио дорожки канала, например: eng, rus. Допускается указание нескольких аудио дорожек через запятую: "rus, ukr, eng". Дорожкой по умолчанию устанавливается первая указанная в списке.
- aspect-ratio - определяет пропорции экрана (может быть недоступно для некоторых моделей телевизоров). Допустимые значения: 16:9, 3:2, 4:3, 1,85:1, 2,39:1 (наиболее распространенное значение для фильмов)
В SS IPTV помимо традиционных директив и атрибутов формата Extended M3U предусмотрены дополнительные. Использование описанных здесь атрибутов позволяет очень гибко настраивать внешний вид плейлистов на главном экране, манипулируя отображением отдельных тайлов.
Директивы формата M3U всегда начинаются с новой строки и имеют первым символом – решетку “#”, атрибуты вписываются в строку с директивой (как правило #EXTINF) и представлены в виде пары атрибут = "значение". Значение атрибута всегда должно быть заключено в двойные кавычки
Дополнительные директивы:
#EXTBG определяет фон тайла, относящегося к описываемому элементу плейлиста. После директивы может быть указана ссылка на изображение, либо цвет в формате #rrggbb или rgba
#EXTSIZE определяет размер тайла, относящегося к описываемому элементу плейлиста. Возможные значения: small, medium, big
#EXTCTRL после директивы может быть указан url по которому будет осуществлен запрос при нажатии на тайл, относящийся к описываемому элементу. Запрос отправляется до загрузки контента. Данная функция может быть полезна владельцам спутниковых ресиверов, при ее использовании приложение будет отправлять ресиверу команду на переключение канала.
Дополнительные атрибуты директивы #EXTINF:
description – определяет описание, отображаемое на тайлах размера medium и big
content-type – позволяет указать приложению тип описываемого контента. Возможные варианты значений: stream, video, playlist. В большинстве случаев приложение автоматически определяет тип контента и в использовании данного параметра нет необходимости.
Дополнительные атрибуты директивы #EXTM3U
Директива #EXTM3U в качестве атрибутов может содержать атрибуты description, size и background. В этом случае значения, заданные для перечисленных атрибутов применяются для всех элементов плейлиста, если они не переопределены в директивах #EXTINF
Ниже приведен пример M3U-плейлиста с использованием дополнительных директив и атрибутов и то, как он будет выглядеть в приложении.
#EXTM3U #EXTINF:-1, MTV Dance #EXTSIZE: Big #EXTBG: #11609e http://example.com/stream1 #EXTINF:-1,MTV Hits #EXTSIZE: Medium #EXTBG: #046f55 http://example.com/stream1 #EXTINF:-1,Россия 24 #EXTSIZE: Medium #EXTBG: #046f55 dtv://cabel:11/dvb/8 #EXTINF:-1,Первый канал #EXTSIZE: Medium #EXTBG: #046f55 dtv://cabel:11/dvb/2 #EXTINF:-1, MTV Live HD #EXTSIZE: Small http://example.com/stream3 #EXTINF:-1,MTV Rocks #EXTSIZE: Small http://example.com/stream4