EDEM IP-TV Player
Программа для удобного просмотра IP-телевидения
СКАЧАТЬ c Google Диск Windows XP8/8.1/10/11
Идеальное клиентское решение для услуги «IP-телевидение на персональный компьютер»
Список каналов - формат M3U
Пример списка каналов:
#EXTM3U
#EXTINF:-1,Первый канал
udp://@224.10.10.1:8001
#EXTINF:-1,ТВЦ Сибирь
udp://@224.10.10.2:8002
#EXTINF:-1,7 ТВ
udp://@224.10.10.3:8003
#EXTINF:-1,A-One
udp://@224.10.10.4:8004
#EXTINF:-1,REN TV
udp://@224.10.10.5:8005
Директивы #EXTVLCOPT не поддерживаются!
Ну тут всё и так понятно. Хотелось бы отметить, что каналам рекомендуется давать правильные названия (например, канал "ОРТ" правильно называется "Первый канал", а "РТР" - "Россия") и по-русски, а не транслитом. Это важно для того, чтобы плеер автоматически связал с каналами логотипы и файлы телепрограммы.
Кодировка может быть ANSI или UTF8, плеер может загружать списки из файла или по протоколам http, https, ftp.
Рекомендуется использование расширенного формата списка каналов с настройками.
Телепрограмма - форматы JTV, XMLTV и другие
JTV
Формат JTV появился в одноименной программе польского разработчика Ярослава Ковальского для ТВ-тюнеров на базе чипов bt8x8. Это двоичный формат, база телепрограмм JTV обычно является архивом ZIP или RAR, содержащим пары файлов (с расширением NDX и PDT) для каждого телеканала. Новая база обычно выходит каждую неделю по понедельникам. Формат не содержит информации о часовом поясе, поэтому вы должны узнать текущий пояс телепрограммы на сайте источника. Формат JTV в основном распространён на территории бывшего СССР, где и была в 2000-2003 году популярна одноименная программа. Сейчас наиболее популярным ПО, использующим формат JTV, является ПО для тюнеров Beholder и GotView.
Пример источника JTV - http://www.teleguide.info/download/new3/jtv.zip (Московское время)
Разработчики могут разобраться с форматом JTV, ознакомившись с программой GuideGen (генерация JTV из текста на C++ и PHP)
Если Вы самостоятельно генерируете телепрограмму, особенно на Linux сервере, то учтите, что совсем не обязательно давать файлам имена на русском языке. Можно использовать транслит или нумерацию или ещё какие-то идентификаторы, главное связать их с соответствующим каналом через tvg-name.
XMLTV
Телепрограмма в формате XMLTV является XML-файлом, опционально упакованным в архив. Описание формата доступно на сайте xmltv.org.
Внимание! Временные метки в формате XMLTV содержат часовой пояс! Это означает что при отображении времени автоматически учитывается текущий часовой пояс, выбранный в настройках операционной системы пользователя.
Ограничения: не поддерживаются буквенные обозначения таймзон (только ±HHmm), используется только время начала (start), заголовок передачи (title) и описание (desc, только если содержит простой текст).
Если файл XMLTV упакован в архив отличный от GZ, то это должен быть единственный файл в архиве с расширением XML.
Примеры источников XMLTV
- http://www.teleguide.info/download/new3/xmltv.xml.gz
- http://epg.in.ua/epg/tvprogram_ua_ru.gz
Текстовые форматы
Вариант 1. Телепрограмма на все каналы в одном TXT файле, формат известен как ListTV/TV.ALL/Интер-ТВ. Первая строка файла обязательно должна быть "tv.all". Если файл TXT упакован в архив, то это должен быть единственный файл в архиве с расширением TXT.
Вариант 2. Архив с TXT файлами по одному на канал (аналогично JTV). Поддерживается множество форматов даты/времени (например "yyyy-MM-dd HH:mm передача" или с разделением по дням: один раз "yyyy-MM-dd" и далее блок "HH:mm передача")
Архивы
Форматы ZIP и GZ плеер может распаковать самостоятельно. Для распаковки RAR/7Z необходимо, чтобы в системы был установлен WinRAR или 7-Zip.
Настройка плеера с нуля (если у вас есть только список каналов)
Запустите плеер, выбрав в качестве преднастройки "Пустой профиль", загрузите каким-либо образом список каналов через Настройки → Общие → Адрес списка каналов (с веб-сайта или из файла). При необходимости предварительно отредактируйте список каналов блокнотом, следуя вышеописанным рекомендациям.
Не торопитесь начинать просмотр каналов! Сначала в Настройки → Канал установите параметры по-умолчанию (будут применены ко всем каналам), например, для IPTV Деинтерлейс Blend, Соотношение сторон 4:3 и т.д. Выбрав умолчания, нажмите кнопку Применить и Закрыть диалога настроек.
Выберите в Меню Телепрограмма → Автоматическая настройка - плеер попытается выбрать наиболее подходящие логотипы и файлы телепрограммы для всех каналов по очереди. После завершения автонастройки "пройдитесь руками" по всем каналам и поправьте ошибки, при необходимости выберите соответствующие звуковые дорожки.
Для провайдеров → Сборка дистрибутива
Вы можете самостоятельно собрать дистрибутив плеера, содержащий ваши настройки и логотипы, и предложить абонентам вашей компании абсолютно бесплатно!
Конфигурация
В соответствии с описанием формата сформируйте файл списка каналов и загрузите его на ваш веб-сервер (в примере ниже http://ваш.сервер/ваш_список_каналов.m3u).
Сборка
Загрузите сборщик дистрибутива, создайте папку (имя для примера Custom) с описанной ниже структурой. Запустите сборщик и укажите ему эту папку.
- Custom\Provider.ini - обязательно, файл настроек
- Custom\Setup.bmp - необязательно, большой логотип установщика (слева), формат bmp, размер 164x314
- Custom\Setup.ico - необязательно, значок установшика (в заголовке окна, на панели задач)
- Custom\*.js - необязательно, JavaScript-модули
- Custom\Images\App.ico - необязательно, значок плеера (в заголовке окна, на панели задач, на ярлыках)
- Custom\Images\Logo.png - необязательно, логотип в центре экрана плеера
- Custom\Images\Loading.png - необязательно, загрузочная заставка плеера
- Custom\Icons\*.* - необязательно, дополнительные значки каналов, формат png/jpg/gif/bmp, размер 24x24, имена файлов должны совпадать с названиями каналов в вашем списке
Готово! Не забывайте периодически обновлять ваш дистрибутив.
Сборка вручную (старый способ)
Простая сборка онлайн
Описание Provider.ini
;--- стандартный вариант -------------------------------------------
[List]
Count=1
1name="Название Компании"
1um3u=http://ваш.сервер/ваш_список_каналов.m3u
;--- вариант с выбором ---------------------------------------------
[List]
; кол-во пунктов
Count=2
1name="Название Компании - Пакет1"
1um3u=http://ваш.сервер/ваш_список_каналов_1.m3u
2name="Название Компании - Пакет2"
2um3u=http://ваш.сервер/ваш_список_каналов_2.m3u
; 3name и т.д.
;--- вариант с внешним списком -------------------------------------
[List]
list-url=http://ваш.сервер/ваш_список_пакетов.ini
;--- вариант с вложенностью ----------------------------------------
[List]
Count=2
1name="Название Компании - Город1"
1ulst=http://ваш.сервер/список_пакетов_город_1.ini
2name="Название Компании - Город2"
2ulst=http://ваш.сервер/список_пакетов_город_2.ini
; 3name и т.д.
;--- параметры плеера (все параметры необязательны) ----------------
[Settings]
; заголовок окна плеера
;apptitle1="Компания-ТВ Плеер"
; цвета интерфейса (посмотреть можно в IpTvPlayer.User.ini)
;colors=...
; значение VLC network-caching (udp-caching)
;cache=500
; замена ссылки "Справочная информация"
;support-url=http://ваш.сервер/техподдержка
;--- параметры установщика (все параметры необязательны) -----------
[Setup]
; заголовок установщика, имя ярлыка на рабочем столе и в меню "Пуск"
;productname="Компания-ТВ Плеер"
; имя папки в Program Files (обязательно на английском)
;productinstdir="Company-TV Player"
; удалить настройки текущего пользователя при установке
; (не следует использовать при сборке для обновления поверх!)
;resetuserdata=1
;--- файл должен быть строго в кодировке ANSI! ---------------------
Чтобы попасть в список провайдеров, загружающийся при установке оригинального дистрибутива плеера, отправьте нам письмо с адресом списка каналов обязательно с корпоративного домена вашей компании.
Для провайдеров → Формат списка каналов с настройками
В список каналов можно добавить необходимые настройки для плеера, в таком случае вид файла будет следующим:
#EXTM3U Общие настройки
#EXTINF:-1 Настройки канала 1 ,Канал 1
адрес-канала-1
#EXTINF:-1 Настройки канала 2 ,Канал 2
адрес-канала-2
Кодировка может быть ANSI или UTF8.
Вставки с настройками должны иметь вид: параметр1=значение1 параметр2=значение2 ...
Параметры для общих настроек:
url-tvg - адрес архива с телепрограммой (можно несколько адресов через запятую)
cache - значение кэша (Настройки → Общие → Кэш)
reportstat - адрес скрипта для сбора статистики просмотра
reportlog - адрес скрипта для сбора логов
url-m3u - новый адрес списка каналов (использовать для массового изменения адреса в плеерах у абонентов)
tvg-logo - шаблон ссылки для установки логотипов сразу всех каналов (поддерживаются переменные
%name% - url-кодированное название канала в нижнем регистре, %tvg% - значение tvg-name/tvg-id канала, %num% - номер канала, например, http://ваш-сервер/логотипы/%name%.png)
url-scrlogo - адрес изображения png/jpg/gif/bmp для логотипа в центре экрана, рекомендуемый размер 200-300px под чёрный фон (v48 и выше)
nameaskey - (0/1) использовать название канала в качестве ключевого поля для сохранения настроек, а не его адрес (использовать в динамически генерируемых списках)
numwzero - (0/1) добавлять нули перед короткими номерами каналов, например, 001, 002, ... (v50.1 и выше)
Параметры для настроек каналов:
tvg-name / tvg-id - имя/идентификатор канала в файле телепрограммы (можно не указывать если совпадает с названием канала; id имеет приоритет над name)
tvg-shift - коррекция по времени, в часах (...-2, -1, 0, +1, +2, ...)
tvg-logo - адрес изображения png/jpg/gif/bmp (v8838 и выше) или имя логотипа канала из встроенной базы или имя файла (без расширения!) из папки Icons\*.png/jpg/gif/bmp (можно не указывать если совпадает с названием канала)
group-title - заголовок группы каналов
deinterlace - деинтерлейс (0 - выкл, 1 - Blend, 2 - Mean, ...)
aspect-ratio - соотношение сторон (None, 4:3, 16:9, ...)
croppadd - обрезка кадра горизонтальxвертикаль в пикселах, например, "15x10" (v48 и выше)
num - номер канала (1-9999) в сетке вещания провайдера вместо обычного порядкового (v50.1 и выше)
Любой параметр для каналов можно добавить и в общие настройки, тогда этот параметр применится ко всем каналам. Настройки каналов имеют больший приоритет и перекрывают общие, если они указаны. Настройки из списка каналов перезаписывают настройки пользователя в случае изменения названия канала.
Пример:
#EXTM3U url-tvg="http://server/jtv.zip" cache=500 deinterlace=1 aspect-ratio=4:3 croppadd=10x10 tvg-shift=0
#EXTINF:-1 tvg-name="Первый_канал" croppadd=16x8 group-title="Эфирные каналы" ,Первый канал
udp://@239.1.1.1:5000
#EXTINF:-1 tvg-name="ТВ3" tvg-shift=2 ,ТВ3
udp://@239.1.1.2:5000
#EXTINF:-1 tvg-name="Россия_Культура" tvg-logo="Россия К" croppadd=16x8 ,Культура
udp://@239.1.1.3:5000
#EXTINF:-1 tvg-name="Эксперт-ТВ" group-title="Спутниковые" ,Эксперт ТВ
udp://@239.1.1.4:5000
#EXTINF:-1 tvg-name="Eurosport" aspect-ratio=16:9 ,Eurosport
udp://@239.1.1.5:5000
#EXTINF:-1 tvg-name="Ru_TV" croppadd=15x10 ,RuTV
udp://@239.1.1.6:5000
#EXTINF:-1 tvg-logo="-Radio" group-title="Радио" ,Радио-Клаб
http://server:8000/club
#EXTINF:-1 tvg-logo="-Radio" ,Радио-Транс
http://server:8000/trance
Для провайдеров → Сбор статистики просмотра каналов и логов
Сбор статистики просмотра каналов
При сборе статистики плеер раз в ~15 минут формирует пакет данных в формате XML, где отражены периоды времени, в которые пользователь смотрел тот или иной канал. Данные отправляются методом POST в переменной "postdata", на GET-запрос ответ может быть любым. UserId - уникальный идентификатор пользователя, генерируемый плеером при первом запуске, удобен как ключевое поле в случае использования провайдером динамических адресов.
<?xml version="1.0" encoding="utf-8" ?>
<Stat>
<User><Id>03112ba3102496b93284d8aa34033843</Id></User>
<Data><From>2013-03-02 01:09:04</From><To>2013-03-02 01:10:32</To><Mrl>udp://@239.1.2.1:1234</Mrl><Name>2x2</Name></Data>
<Data><From>2013-03-02 01:10:33</From><To>2013-03-02 01:13:24</To><Mrl>udp://@239.1.4.9:1234</Mrl><Name>Universal Channel</Name></Data>
<Data><From>2013-03-02 01:13:24</From><To>2013-03-02 01:13:35</To><Mrl>udp://@239.1.5.2:1234</Mrl><Name>Discovery World</Name></Data>
<Data><From>2013-03-02 01:13:35</From><To>2013-03-02 01:18:11</To><Mrl>udp://@239.1.2.1:1234</Mrl><Name>2x2</Name></Data>
<Data><From>2013-03-02 01:18:11</From><To>2013-03-02 01:24:04</To><Mrl>udp://@239.1.5.2:1234</Mrl><Name>Discovery World</Name></Data>
</Stat>
Приём на PHP:
<?php
if (isset($_POST["postdata"]))
{
$data=stripslashes($_POST['postdata']);
... распарсить $data как XML и сохранить в БД ...
}
?>
Типовой пример SimpleXML+MySQL:
<?php
if (isset($_POST["postdata"])) {
$data = stripslashes($_POST['postdata']);
mysql_connect(....);
mysql_query("SET NAMES 'utf8'");
$xml = simplexml_load_string($data);
$uid = mysql_real_escape_string($xml->User->Id);
foreach ($xml->Data as $data) {
$user_ip = mysql_real_escape_string($_SERVER["REMOTE_ADDR"]);
$from = mysql_real_escape_string($data->From);
$to = mysql_real_escape_string($data->To);
$mrl = mysql_real_escape_string($data->Mrl);
$name = mysql_real_escape_string($data->Name);
$sql = "INSERT INTO iptv_statistics (uid, user_ip, date_from, date_to, mrl, title) ".
"VALUES ('".$uid."', '".$user_ip."', '".$from."', '".$to."', '".$mrl."', '".$name."')";
mysql_query($sql);
}
}
?>
Сбор логов (функция работает только с библиотеками VLC 1.0/1.1)
Сбор логов (речь о стандартных логах VLC уровня "warning") может быть полезен для оценки качества доставки мультикаста до пользователей и выявления проблемных частей сети. Пакет данных в формате XML формируется раз в ~5 минут и отправляется POSTом аналогично статистике. Также при запуске плеера выполняется GET-запрос, в ответе должны содержаться wildcard-маски для фильтрации лога. Если не использовать фильтр (т.е. маска "*") объём данных будет слишком большим и во многом бесполезным.
<?xml version="1.0" encoding="utf-8" ?>
<Log>
<User><Id>03112ba3102496b93284d8aa34033843</Id></User>
<Data><Time>2013-02-25 17:40:32</Time><Mrl>udp://@239.1.15.1:1234</Mrl><Msg>resampling stopped after 9372217 usec (drift: 2491)</Msg></Data>
<Data><Time>2013-02-25 17:42:49</Time><Mrl>udp://@239.1.15.1:1234</Mrl><Msg>discontinuity received 0x5 instead of 0xe (pid=69)</Msg></Data>
<Data><Time>2013-02-25 17:43:31</Time><Mrl>udp://@239.1.15.1:1234</Mrl><Msg>discontinuity received 0xa instead of 0x3 (pid=69)</Msg></Data>
<Data><Time>2013-02-25 17:43:59</Time><Mrl>udp://@239.1.15.1:1234</Mrl><Msg>discontinuity received 0x9 instead of 0x3 (pid=69)</Msg></Data>
<Data><Time>2013-02-25 17:43:59</Time><Mrl>udp://@239.1.15.1:1234</Mrl><Msg>discontinuity received 0x9 instead of 0x8 (pid=68)</Msg></Data>
<Data><Time>2013-02-25 17:44:10</Time><Mrl>udp://@239.1.15.1:1234</Mrl><Msg>resampling stopped after 11014978 usec (drift: -425)</Msg></Data>
</Log>
Приём на PHP:
<?php
if (isset($_POST["postdata"]))
{
$data=stripslashes($_POST['postdata']);
... распарсить $data как XML и сохранить в БД ...
}
else
{
header("Content-type: text/xml");
echo("<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n");
//echo("<Filter>*</Filter>");
echo("<Filter>*discontinuity received*, *late picture skipped*, *audio drift is too big*, *stopping resampling*, *mixer start isn*</Filter>");
}
?>
Дополнения и пояснения
К сожалению, у нас нет готовых коробочных провайдерских решений для приёма и анализа данных.
При отсутствии соответствующих параметров reportstat/reportlog XML-пакеты не формируются и не отправляются
С версии 49.4 пользователь может отказаться от передачи статистики и логов провайдеру.
Для этого необходимо перейти в Настройки → Общие, нажать по значку "глаза" в правой части поля Адрес списка каналов и далее в диалоге подтвердить отказ.
Если значок "глаз" отсутствует, значит сбор и отправка данных не ведётся.
Для восстановления передачи нажмите по правой части кнопки обновления списка каналов и выберите в появившемся меню Обновить и перезаписать настройки.
Для провайдеров и специалистов → JavaScript-модули
В скриптовой среде плеера полностью или частично эмулируются следующие браузерные объекты:
JSON
XMLHttpRequest (агрессивно кэширует GET-запросы!)
DOMParser.parseFromString (только '*/xml')
console.log (только один параметр)
функция alert (используйте только в целях отладки)
Также имеется несколько собственных функций:
Функция getIpTvInfo() возвращает объект с информацией о плеер, ОС, MAC-адресе и т.д.
(откройте в плеере "javascript:alert(getIpTvInfo())" и посмотрите)
Функция httpGet(url) и String.prototype.httpGet для простых запросов, не имеет проблем с кэшированием и ограничений, свойственных XMLHttpRequest, таких как отправка Referer
Расширеный вариант - httpRequest(url,{method:'метод',headers:{заголовок:значение,...},data:{переменная:значение,...}}), в data можно передать и просто строку
String.prototype.parseJSON(), String.prototype.parseXML(), String.prototype.parseQuery() - преобразовывают строку соответствующего формата в объект
Модули - это файлы с именем вида IpTvPlayer.*.js, расположенные в папке установки или в профиле пользователя. Имеют следующую структуру:
module.exports={
data:{},
supportedURLs:{
getList:"http://*.сервер1.тест/*/api/*"
//getMrl:"*",
//getTvG:"*",
},
auth:function(url,prm) {
if (prm.indexOf("login:")===0) {
if (prm=="login::") prm="login:demo:demo";
...
}
// идём дальше только если ранее была авторизация
// (проверяем какой-нибудь флажок из this.data)
if (prm=="timer") {
...
}
if (prm=="info") {
...
}
if (prm=="cabinet") {
...
}
if (prm=="logout") {
...
}
},
getList:function(url){},
getMrl:function(url){},
getTvG:function(url){}
}
data - из-за многопоточности каждый вызов выполяется в своей копии интерпретатора, поэтому хранить промежуточные данные можно ТОЛЬКО внутри this.data={} - этот объект специально сохраняется и восстанавливается каждый раз.
supportedURLs.getList - wildcard-маска или несколько масок в одной строке через запятую - фильтр URL списка каналов для методов getList и auth. Если не указать свойство, то соответствующие методы не будут вызваны.
Если нужна более точная фильтрация - сделайте дополнительную regex-проверку в самом методе.
Если Вы пишете авторизационный модуль, то никаких других фильтров кроме supportedURLs.getList указывать не нужно, при успешной авторизации на сработавший модуль перенаправляются абсолютно ВСЕ события.
supportedURLs.getMrl/getTvG - аналогично, фильтры URL для методов getMrl/getTvG. В случае использования авторизации указывать НЕ нужно. Выставлять значение "*" рекомендуется только в целях тестирования.
auth(url,prm) - url - адрес списка каналов, prm - несколько вариантов:
"login:имяпользователя:пароль" - учтите и "пустой" вариант ("login::") если у Вас есть гостевой или бесплатный режим, например: if (prm=="login::") prm="login:demo:demo";
Ответы:
Пустой ответ - авторизация на этом URL не поддерживается
{result:"success"} - авторизация успешна
Опциональные параметры:
{...,timer:сколькосекунд} - запустить таймер (для валидации сессии и т.д., не менее 5 сек)
{...,cabinet:1} - флаг активации пункта меню "Аккаунт/Личный кабинет"
{...,signin:0} - флаг скрытия первичного диалога авторизации и пункта "Аккаунт/Войти", следует применить если клиент авторизован по IP и логин-пароль как таковые отсутствуют (т.е. всегда result:"success")
{result:"error"} - ошибка, снова выбросить диалог авторизации
Опциональные параметры:
{...,fail:1} - флаг на случай критической ошибки, выводится только сообщение БЕЗ диалога переавторизации - рекомендуется при несовпадение/устаревание версии/api, отказе сервера, прекращении поддержки, ошибке авторизации по IP и т.д.
{...,errormsg:"ошибка такая-то"} - описание ошибки авторизации, если установлен флаг fail может содержать ссылки в виде <a href="адрес">ссылка</a>
Общие опциональные параметры:
{...,contactmsg:'<a href="адрес">ссылка</a> и/или текст'} - добавить в нижнюю часть диалога авторизации текст со ссылками (например, ссылку на регистрацию, восстановление пароля, телефон техподдержки и т.д.)
"timer" - операция по таймеру (только если активирован ранее)
Ответы:
Пустой ответ - всё нормально, ничего не делать
{action:"reauth"} - переавторизация
{action:"getList"} - сигнал обновить список каналов (например, если в самом теле списка присутствуют токены, что строго НЕ рекомендуется делать - токены нужно отдавать через getMrl).
{action:"message",text:"простой-текст"} - вывести сообщение в MessageBox (НЕ рекомендуется злоупотреблять), в тексте сообщения могут присутствовать ссылки в виде <a href="адрес">ссылка</a>
{action:"notify",text:"строго простой-текст"} - вывести текст в OSD (50-60 символов в одну строку, исчезает через 5 сек).
"info" - MessageBox по пункту меню "Аккаунт/Информация", ответ - простой текст (string).
Новая строка - "\r\n", в тексте могут присутствовать ссылки в виде <a href="адрес">ссылка</a>.
"cabinet" - открыть в браузере ссылку по пункту меню "Аккаунт/Личный кабинет" (только если активирован ранее), ответ - ссылка (string).
"logout" - вызывается на выходе из плеера если ранее была успешная авторизация. Ответ пустой.
getList(url) - url - адрес списка каналов, ответ пустой или фактический адрес (ссылка, string) или сам текст (строка "#EXTM3U...") или в виде объекта {channels:[{name:имя,url:адрес,...},...]} - остальные имена свойств идентичны параметрам M3U ("tvg-id" и т.д.), нулевой канал передаёт общие параметры (его name/url игнорируются).
getMrl(url) - url - адрес канала, ответ пустой или фактический адрес канала (ссылка, string) или "#текст-ошибки". Текст, начинающися с символа "#" выводится в OSD (50-60 символов в одну строку, исчезает через 5 сек) и принудительно вызывается таймер (если ранее был активирован) для возможной переавторизации.
getTvG(url) - url - адрес телепрограммы, ответ пустой или фактический адрес телепрограммы (string) или само тело (текст) телепрограммы в виде XML или текста (НЕ рекомендуется - слишком медленно).
Все стандартные методы не обязательные, Вы можете реализовать все или только один (и соответствующий ему пункт supportedURLs). Можно добавлять свои вспомогательные свойства и методы в любых количествах.
Помимо модулей, Вы можете выполнять код прямо в адресе канала:
#EXTM3U
#EXTINF:-1, Название канала 1
javascript:'http://сервер.пример/api/запрос.json'.httpGet().parseJSON().url.httpGet().parseJSON().primary
#EXTINF:-1, Название канала 2
javascript:var переменная=httpGet('адрес'); if... return другая-переменная;
Также можно вставить код модуля прямо в конце списка каналов (при этом модуль будет способен обработать только getMrl):
...
#EXTINF:-1, Название последнего канала
...
#JAVASCRIPT
module.exports={
name:'test',
data:{},
supportedURLs:{ getMrl:'*' },
getMrl:function(url) {
alert(this.name+'.getMrl( "'+url+'" )');
}
}
Для специалистов → Просмотр эфирного ТВ через ТВ-тюнер
Эфирные каналы имеют адреса вида dshow://номер_канала, например:
#EXTM3U
#EXTINF:-1,Первый канал
dshow://2
#EXTINF:-1,Вести 24
dshow://3
#EXTINF:-1,ТВ3
dshow://4
#EXTINF:-1,ТНТ
dshow://6
#EXTINF:-1,Россия
dshow://8
#EXTINF:-1,НТВ
dshow://10
#EXTINF:-1,СТС
dshow://12
Не поддерживается запись!
Для диапазона кабельных каналов добавьте к номеру "-cable" (пример: dshow://6-cable)
Для специалистов → Сетевые особенности IPTV
Адреса каналов IPTV обычно выглядят как udp://@x.x.x.x:y. IPTV отличается от WebTV (видеотрансляции на сайтах) и MP3-радио тем, что оно распространяется по сети провайдера в виде мультикаста.
Рассмотрим особенности мультикаста "на пальцах": например, вы смотрите IPTV через ADSL-модем или Ethernet-роутер, к которому подключено несколько компьютеров. Если с первого компьютера будет открыт какой-нибудь канал IPTV, то видеопоток пойдёт на все компьютеры - грубо говоря, лампочки будут мигать напротив портов всех компьютеров. Если у вас 10 компьютеров и все они будут запущены на один канал, нагрузка будет такая же, как если бы это был один компьютер.
Однако, этот самый мультикаст плохо влияет на WiFi, и если к модему или роутеру параллельно подключена WiFi-точка доступа, при включении IPTV она "задохнётся" от потока данных и перестанет "раздавать" интернет. Вторым гвоздём в гроб WiFi является то, что IPTV использует протокол UDP, его особенностью является негарантированность доставки. UDP удобен, т.к., например, при проблемах на линии некоторая часть данных может "дропаться" без полной потери картинки. Но при передаче данных по WiFi, даже при достаточной скорости соединения, UDP-пакеты получают низкий приоритет и могут пропускаться.
Тем не менее, сейчас (по состоянию на 2010 год) на рынке появляются роутеры, которые передают мультикаст по WiFi с использованием ряда ухищрений. Один из лучших это D-Link DIR-300/NRU (не путать с просто DIR-300).
Как всё же передать IPTV по WiFi на не поддерживающем данную функцию оборудовании, читайте ниже.
Для специалистов → UDP-to-HTTP Прокси
UDP-to-HTTP Прокси предназначен для преобразования udp-мультикаст трафика IPTV в tcp-юникаст (конкретно http) трафик. Это полезно для комфортного просмотра IPTV через WiFi, NAT, на смартфонах, планшетах, смарт-тв, сетевых плеерах и игровых консолях.
Для просмотра мультикастового udp-потока udp://@x.x.x.x:x через прокси следует использовать адрес http://хост:порт-прокси/udp/x.x.x.x:x или http://хост:порт-прокси/udp://@x.x.x.x:x
Данная утилита предназначена для двух целей:
1) для передачи IPTV внутрь небольшой локальной сети на базе несерверной версии Windows
2) для стабильной передачи IPTV по WiFi (или на бытовое устройство) в виде http-трафика
Схема 1. Типовая локальная сеть
192.168.0.2 ←┐ ←http ←udp
192.168.0.3 ←┤ ┌——————————————————————————┐ ┌———————————┐
192.168.0.4 ←┼———┤ сервер на базе Windows ├———┤ модем │
192.168.0.5 ←┤ │ 192.168.0.1——192.168.1.2 │ │192.168.1.1│
..... ←┘ └——————————————————————————┘ └———————————┘
↑ ↑
http://192.168.0.1:7781/udp/224.10.10.1:8001 ← udp://@224.10.10.1:8001
В данном примере прокси стоит на компьютере с адресами 192.168.0.1 (в локальную сеть) и 192.168.1.2 (в модем), работает на порте 7781. На схеме также приведён пример преобразования адреса. В плеере (у пользователей локальной сети) в Настройки → Общие → Сетевой интерфейс можно просто вписать 192.168.0.1:7781 — адреса будут преобразовываться автоматически (можно использовать и вариант домен:порт).
Схема 2. Модем или роутер с WiFi
http://192.168.0.2:7781/udp/224.10.10.1:8001 ноутбук (192.168.0.3)
↓ подключен по радио
┌—————————————┐
│ 192.168.0.3 │←((•)) WiFi
└—————————————┘ ↑
┌—————————————┐ ←┼———————————————┐
│ 192.168.0.2 │←→—┤ 192.168.0.1 ├—<<<—— xDSL или Ethenet
│ udp-to-http │ ←┤ роутер с WiFi │
└—————————————┘ ←┴———————————————┘
↑ компьютер (192.168.0.2)
udp://@224.10.10.1:8001 подключен по проводу
Udpxy
Существует аналог UDP-to-HTTP Прокси для Linux — Udpxy (сторонней разработки), он включён во многие прошивки для роутеров: ASUS (AsusWRT), ZyXEL Keenetic, SNR (WiveNG), Eltex (1-ая серия NTE-RG) и т.д., может быть установлен на DD-WRT и OpenWRT. Это значит, что вы можете напрямую обращаться по http к данным роутерам - http://192.168.1.1:порт-прокси/udp/x.x.x.x:x и прописать в плеере в качестве сетевого интерфейса 192.168.1.1:порт-прокси без выделения отдельного компьютера под сервер (192.168.1.1 - стандартный адрес вашего модема/роутера, если настройки изменены, он может отличаться).
Оригинальная идея, метод преобразования адреса и реализация для Windows
еще программы для просмотра
Для выбора программ просмотра ТВ каналов воспользуйтесь списком, расположенным ниже. Программы сортированы по наиболее популярным операционным системам. Если у вас возникли сложности при просмотре ТВ каналов, обратитесь в техподдержку.
Windows
MacOS
Linux
iOS
Android
Samsung Smart TV
LG Smart TV
Другое
Windows
- плееры
- Воспроизведение плейлистов в формате .m3u8.
-
OttPlayer
-
-
VLC
-
-
KMplayer
-
-
Songbird
-
-
Real Player
-
-
Zune
|