Объеденив две ниже указанные темы, мы их немного дополнили
http://www.elecard.com/forum/index.php?topic=3635.0http://www.elecard.com/forum/index.php?topic=3636.0Для работы работы IPTV без MW существуют два дополняемых друг друга пути.Первое – это XSPF плейлист, на данный момент плейлист может содержать следующие атрибуты каналов: идентификатор (порядковый номер), урл, название канала, жанр, текущая передача, логотип канала. Все эти атрибуты отображаются в меню списка каналов IPTV. Данный плейлист лучше делать динамически изменяемый, чтобы текущая передача была адекватной. Ниже будет ссылка на пример сервера. Плейлист указывается в настройках сетопа (Настройки подключения –Список каналов IPTV, например так http:/192.168.1.22/streams.xspf). Выбор жанра в режиме просмотра списка программ делается нажатием на красную кнопку.
Второе – это генерация с помощью PHP скрипта ответов на запросы электронной программы передач. Данная функция позволяет во время просмотра канала посмотреть расписание ближайших передач, их краткое и подробное описание. Выводится эта информация во время просмотра канала последовательным нажатием синей кнопки. EPG скрипт задается в настройках сетопа (Настройки подключения – Электронный ТВ-гид IPTV , например так http:/192.168.1.22/epg.php)
А теперь подробно о каждом пути.
Привожу пример плейлиста формата XSPF.<?xml version="1.0" encoding="UTF-8"?>
<playlist version="1" xmlns="
http://xspf.org/ns/0/">
<tracklist>
<track channel_id="129">
<location>udp://234.4.4.4:4339/manualDetectVideoInfo:videoType=6:audioType=1:videoPid=523:audioPid=650</location>
<title>Первый</title>
<meta rel="genre">0x20</meta>
<descr>Пусть говорят</descr>
<thumb>
http://192.168.1.94/wwwplaylist/admin/?page=editchannel&channel_id=129&action=getlogo</thumb>
</track>
<track channel_id="130">
<location>udp://234.4.4.4:4337/manualDetectVideoInfo:videoType=6:audioType=1:videoPid=522:audioPid=645</location>
<title>Россия</title>
<meta rel="genre">0x20</meta>
<descr>Женщина без прошлого</descr>
<thumb>
http://192.168.1.94/wwwplaylist/admin/?page=editchannel&channel_id=130&action=getlogo</thumb>
</track>
</tracklist>
</playlist>
Здесь channel_id – номер канала.
В тэге location содержится урл с указнием мультикастового адреса и порта. После указания порта в урле может идти вот такое описание "manualDetectVideoInfo:videoType=6:audioType=1:videoPid=533:audioPid=700". Это описание увеличит скорость переключения каналов. Если его не будет, то ничего страшного не произойдет, просто каналы будут преключаться на некоторое время дольше. Здесь для VideoType возможны следующие значения:
2 - MPEG2 video stream,
5 - MPEG4 video stream,
6 - AVC(H264) video stream.
Для AudioType возможны следующие значения:
1 - MP Layer 2 audio stream,
4 - AAC audio stream,
7 - AC3 audio stream.
<title>Россия</title> - название канала.
<meta rel="genre">0x30</meta> - указание жанра программы. Описание возможных значений жанров можно взять из таблицы по ссылке ниже.
https://members.elecard.ru/dl/gputcxnx_1383847199/table_28.zip<thumb>
http://192.168.1.94/ort.png</thumb> - логотип канала размером 48х48.
EPG запросы на сервер.Сразу отмечу, что реализация данной функции возможна только при совместном использовании с подгружаемыми плейлистами.
Ниже описана структура запроса сетопа для получения EPG данных. Эти данные запрашиваются в IPTV режиме с использованием плейлиста. Во время просмотра канала, при нажатии синей кнопки (F4), в верхней части экрана выводится время текущей передачи, ее название и краткое описание. Как только вы вошли в данный режим, можно листать программу передач вперед кнопкой стрелка-вправо и назад кнопка стрелка-влево. Повторное нажатие синей кнопки приведет вас в режим подробного описания передачи.
Данный режим работает только при установке двух параметров IPTV channel List и IPTV EPG. В этих параметрах необходимо указать путь до плейлиста и пхп скрипта выдающего ответы на запросы.
Запрос идет в следующем виде:
epg_url?type=%d&channel=%d&offset=%d
epg_url - урл из настроек.
%d - положительные числа от нуля.
type == 0 ожидаем только время и название передачи, ответ должен состоять только из двух строк, смотрите ниже формат ответа.
type == 1 короткое описание программы, не более 200 символов.
type == 2 длинное описание программы, не более 2000 символов.Переносы строк в описаниях сохраняем, если не вмещается, добавляем свои.
channel - номер канала, нумерация делается автоматически в порядке нахождения каналов в плейлисте.
offset - номер программы (не может быть отрицательным), 0 - значит текущая программа.
Формат ответа:
1 строка: YYYY-MM-DD HH:MM HH:MM
2 строка: название передачи
3 строка и далее: описание
type == 3 список программ для выбранного канала на ближайшее время, максимальная длинна ответа - 32 кБ, используется для вывода списка программы на день, можно выбрать программу на запись.Формат ответа:
1 строка: название канала
после чего пары строк для каждой программы:
1 строка: offset YYYY-MM-DD HH:MM HH:MM
2 строка: название передачи
где offset - номер программы (либо ее id)
Пример ответа:
Channel 1001
0 2010-07-13 07:00 07:10
Пятки горят
1 2010-07-13 07:10 07:25
Смеются даже крабы
Девелоперская прошивка
https://members.elecard.ru/productloader/getfile.php?id=dyjubhsz_1329436799%2FSTB820.dev.256.rev1092.201102111036.master.svn7672.pal_itelec.ENG.wf.smithy.efpОписание примера подобного веб сервера будет опубликовано в следующем топике, здесь же на форуме, со ссылкой на исходники веб сервера.