Правила расширения форматa XSPF

Статус документа

Оглавление

Общее описание

Данный документ описывает правила расширения форматa XSPF для внесения дополнительной информации (директив), способной улучшить взаимодействие пользователя с приложением, при описании списка каналов (плейлиста).

Документ предназначен для разработчиков приложений и поставщиков услуг IPTV–вещания, записей телепередач.

Расширение форматов не затрагивает совместимость с большинством известных проигрывателей, таких как VLC, и соответствует существующим стандартам.

При формировании списка каналов должна использоваться кодировка UTF–8.

Детальное описание принципов формирования списка доступных каналов отражено в разделе “Список каналов”.

Формат XSPF

XSPF — особое расширение XML, предназначенное для описания плейлиста, формат описан в официальной документации стандарта XSPF.

Медиа–тип: application/xspf+xml

При использовании протокола HTTP медиа–тип передается сервером в заголовке Content-Type.

Версионирование

Версионирование расширений осуществляется путем добавления специальной директивы. Если версия не указана явно, то подразумевается первая версия.

Версия указывает на минимально поддерживаемую версию расширения. Клиенты могут распознавать директивы старшей, чем указано, версии, если отсутствует явное требование к минимальной версии расширения для данных директив.

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

Клиент должен поддерживать все версии — от первой до поддерживаемой. Если клиент не поддерживает требуемую версию, то разбор формата должен быть завершен с ошибкой — “Версия расширения не поддерживается”.

Расширение формата

Для указания дополнительной информации могут быть добавлены дополнительные директивы с использованием механизма расширения формата XSPF (см. стандарт XSPF).

Запрещается использовать пространства имен cn и inetra.

Директивы

Директивы указываются в специальных блоках extension и могут быть описаны на уровне плейлиста или элемента. Каждая директива принадлежит к пространству имен cn или inetra и содержит значение или набор атрибутов в виде вложенных элементов. Пространство имен должно быть указано соответствующим параметром в свойствах корневого элемента playlist формата XSPF.

Пример задания пространства имен cn:

<playlist version="1" xmlns="http://xspf.org/ns/0/" xmlns:cn="http://www.cn.ru">

Пример задания пространства имен inetra:

<playlist version="1" xmlns="http://xspf.org/ns/0/" xmlns:inetra ="http://www.inetra.ru">

Пример задания пространств имен inetra и vlc:

<playlist version="1" xmlns="http://xspf.org/ns/0/" xmlns:vlc="http://www.videolan.org/vlc/playlist/ns/0/" xmlns:inetra ="http://www.inetra.ru">

Ниже приведены соглашения по интерпретации типов данных атрибутов:

тип данных примечания
число числовое представление
дробное дробная часть отделяется точкой
строка символьное представление строки
булев принимает два значения true или false

Строковые атрибуты должны быть закодированы в соответствии со спецификацией XML

inetra:version

Директива задает версию расширения. Доступна с версии 2. Указывается на уровне плейлиста.

inetra:channel-inf

Директива описывает информацию о канале. Доступна с версии 2.

Дополнительные атрибуты:

название тип по умолчанию смысл
channel-id число отсутствует Идентификатор канала(доступен в Media Guide API)
territory-id число отсутствует Идентификатор территории (доступен в Registry API)
recordable булев false Наличие архива записей телепередач для данного канала
age-restriction число отсутствует Возрастное ограничение для канала

Идентификатор территории territory-id описывает регион, для которого осуществляется вещание:

Возрастное ограничение задает минимально разрешенный возраст для просмотра канала.

inetra:stream-inf

Директива описывает свойства медиа–потока. Доступна с версии 2.

Дополнительные атрибуты:

название тип по умолчанию смысл
resolution строка отсутствует Идентифицирует разрешение источника
aspect-ratio строка отсутствует Соотношение сторон кадра
crop строка отсутствует Кадрирование изображения
has-timeshift булев false Признак наличия поддержки технологии Timeshift
access строка allowed Наличие доступа к источнику вещания канала
pending-till число отсутствует Время планируемого появления доступа к вещанию канала у абонента
allowed-till число отсутствует Время планируемого отключения доступа к вещанию канала у абонента
audio-language строка отсутствует Языки аудио дорожек
subtitles-language строка отсутствует Языки субтитров
priority число 0 Приоритет для ранжирования источников

Атрибут resolution должен быть задан в формате ширина x высота, например, 720x576:

Принципы использования атрибутов access, allowed-till и pending-till описаны в разделе Взаимодействие с автоматизированной системой расчетов оператора связи.

Атрибуты aspect-ratio и crop указываются в формате ширина : высота, например: 1:1, 100:75. Кадрирование изображения производится после изменения соотношения сторон (если оно есть). Порядок их использования описан в разделе Кадрирование и изменение пропорций изображений каналов стандартной четкости.

Признак наличия поддержки технологии Timeshift has-timeshift носит вспомогательный характер и не гарантирует поддержку сервером вещания.

Атрибуты audio-language и subtitles-language указывает один или несколько естественных языков содержимого, для носителей которых оно предназначается. Языки перечисляются через запятую, порядок значения не имеет (подробности см. в RFC3282). Если данный атрибут опущен, то предполагается, что содержимое предназначено для людей, понимающих любой язык (или же язык вообще значения не имеет). При этом возможно, что человек не отыщет там информацию на понятном ему языке.

Поддерживаемые директивы пространства имен vlc

Официальная документация доступна на сайте Videolan.

vlc:id

Директива содержит целочисленный идентификатор канала, используется для группировки.

vlc:node

Директива задает группировку каналов. Состоит из элементов vlc:item. Указывается на уровне плейлиста.

Дополнительные параметры:

название тип по умолчанию смысл
title строка отсутствует Название группы каналов

vlc:item

Дополнительные параметры:

название тип по умолчанию смысл
tid число отсутствует Идентификатор канала, заданный параметром vlc:id

Примеры формирования плейлиста

Версия 2:

<?xml version="1.0" encoding="UTF-8"?>
<playlist version="1" xmlns="http://xspf.org/ns/0/" xmlns:inetra="http://www.inetra.ru" xmlns:vlc="http://www.videolan.org/vlc/playlist/0">
<extension application="http://www.inetra.ru">
    <inetra:version>2</inetra:version>
</extension>
<extension application="http://www.videolan.org/vlc/playlist/0">
    <vlc:node title="Эфир">
        <vlc:item tid="0" />
        <vlc:item tid="1" />
    </vlc:node>
</extension>
<title>Телевидение Электронного города</title>
<trackList>
    <track>
        <location>http://hls.cn.ru/streaming/1kanal/tvrec/playlist.m3u8</location>
        <title>Первый</title>
        <extension application="http://www.inetra.ru">
            <inetra:channel-inf>
               <channel-id>10338245</channel-id>
               <recordable>true</recordable>
            </inetra:channel-inf>
            <inetra:stream-inf>
               <resolution>720x576</resolution>
               <aspect-ratio>4:3</aspect-ratio>
               <crop>100:75</crop>
               <has-timeshift>true</has-timeshift>
               <access>pending</access>
               <pending-till>1399367372</pending-till>
               <allowed-till>1401959372</allowed-till>
            </inetra:stream-inf>
        </extension>
        <extension application="http://www.videolan.org/vlc/playlist/0">
            <vlc:id>0</vlc:id>
        </extension>
    </track>
    <track>
        <location>udp://@239.1.15.2:1234</location>
        <title>Россия 1</title>
        <extension application="http://www.inetra.ru">
            <inetra:channel-inf>
               <channel-id>10338258</channel-id>
               <recordable>false</recordable>
            </inetra:channel-inf>
            <inetra:stream-inf>
               <resolution>720x576</resolution>
               <access>denied</access>
            </inetra:stream-inf>
        </extension>
        <extension application="http://www.videolan.org/vlc/playlist/0">
            <vlc:id>1</vlc:id>
        </extension>
    </track>
</trackList>
</playlist>

Изменения по версиям

Изменения в версии 2.0.0 (TVREC–70, TVREC–175)

Изменения в версии 2.1.0

Изменения в версии 2.1.1

Изменения в версии 2.2.0

Изменения в версии 2.2.1

Изменения в версии 2.3.0 (TVREC–284)

Изменения в версии 2.3.1

Изменения в версии 2.3.2

Изменения в версии 2.4.0 (TVREC–425)

Изменение в версии 2.4.1

Изменение в версии 2.5.0

Изменения в версии 2.6.0