Плеер является оболочкой
VideoLAN VLC

BorPas-Soft IP-TV Player

Программа для удобного просмотра IP-телевидения

Содержание

Возможности

История версий

Что такое IPTV

IPTV (оно же DVB-IP или TVoIP) НЕ означает «телевидение, вещающее через сеть Интернет». Начало этой аббревиатуры, IP, значит лишь то, что используется данный протокол передачи данных (в данном частном случае, для передачи видеоконтента), но система целиком с мировой паутиной не связана абсолютно ничем. Услугу IPTV предоставляет вам ВАШ ПРОВАЙДЕР, т.е. та компания, которая проводила вам в квартиру сетевой кабель (Ethernet) или устанавливала ADSL-модем. IPTV напоминает обычное кабельное телевидение, только в дом оно приходит не по коаксиальному кабелю, а по тому же каналу, что и интернет (ADSL модем или Ethernet). Если ваш провайдер не предоставляет такую услугу или предоставляет её только через телеприставку и не публикует список каналов, то плеер вам не нужен.

IPTV представляет собой трансляцию каналов (обычно получаемых со спутников), преимущественно в форматах MPEG2/MPEG4 по транспортной сети провайдера, с последующим просмотром на компьютере или специальной телеприставке (Set-Top Box).

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

Сетевые настройки

Практически все файерволы, такие как Agnitum Outpost и Kaspersky Internet Security по умолчанию блокируют IPTV (мультикаст), так как считают его атакой. В общем случае необходимо разрешить в системных правилах протокол IGMP (протокол управления подключениями к мультикаст-группам) и разрешить плееру любую TCP-активность (для скачивания списков каналов и телепрограммы) и UDP-активность (непосредственно для IPTV).

Инструкции с картинками можно посмотреть здесь

Kaspersky Internet Security (вариант 1)

Kaspersky Internet Security (вариант 2) Dr.Web Security Space ESET Smart Security Outpost Firewall Старые версии Outpost Firewall Comodo Firewall

Если в вашем компьютере больше одной сетевой карты или вам предоставляется интернет по VPN или PPPoE, необходимо обязательно указывать в плеере рабочую сетевую карту. Так как IPTV обычно распространяется локально, это будет карта с адресом 192.168.*.*, 172.16.*.* или 10.*.*.*. При первом запуске плеер автоматически выберет первую сетевую карту. Сменить сетевую карту можно так: Настройки → Общие → Сетевой интерфейс.

Обратите внимание, что VPN или PPPoE соединение поднятое поверх локальной сети отключать не нужно (многие провайдеры в своих инструкция пишут что отключать нужно обязательно - это не так!), нужно только правильно выбрать сетевой интерфейс.

В некоторых сетях рекомендуется устанавливать специальное значение параметра VLC udp-caching (например: udp-caching=3000). Это делается так: Настройки → Общие → Кэш (миллисекунды)

Внимание!
Техническую поддержку по услуге IP-телевидения Вам ОБЯЗАН оказывать Ваш провайдер, являющийся поставщиком этой услуги. Именно Ваш провайдер должен обеспечить правильную настройку Вашего оконечного оборудования и сетевого подключения.

Запись

Запись в IP-TV Player действительно является записью, то есть копированием получаемых из сети данных на жёсткий диск практически без нагрузки на процессор. Для сравнения, в случае ТВ-тюнера это кодирование видео, а потом уже запись, что создаёт большую нагрузку на процессор, память и т.д.

Как правило, современное IP-телевидение кодируется в формате MPEG2, поэтому получаемые при записи файлы аналогичны VOB-файлам с бытовых DVD-дисков. Однако, при помощи плеера можно смотреть и записывать любые потоки, такие как Windows Media (mms), MP3-радио и т.д. Для разных источников нужно использовать разные форматы (контейнеры) конечных файлов.

Задаётся в Настройки → Общие → Формат контейнера записи

Итак, для IPTV в MPEG2 нужно использовать контейнер PS - получатся файлы с расширением MPG, аналогичные VOB-ам с DVD. Они могут быть проиграны такими плеерами, как PowerDVD, Media Player Classic и т.д. Преобразовать их в AVI (кодирование в DivX/XviD) можно при помощи программ типа DVD-to-AVI, Gordian Knot, AutoGK и другими, предназначенными для преобразования DVD в AVI. Вырезать из MPG, например, рекламу и сохранить без перекодирования можно при помощи программ AviDemux, Free Video Dub, VideoReDo. Заниматься видеомонтажом с перекодированием можно в VirtualDub-MPEG2, AviDemux, Mpeg Video Wizard DVD, Canopus ProCoder, Adobe Premiere Pro, Edius и других. Для IPTV в H264/AVC лучше использовать контейнер TS.

Поток IPTV-MPEG2 обычно идёт толщиной в 5-6 МБит/с, это порядка 2.5 ГБайт/час, H264 (SD) 2-4 МБит/с.

При записи видео в формате Windows Media (mms, http-asx) нужно использовать контейнер ASF - получатся файлы воспроизводимые Windows Media Player 9.0 или выше.

При записи MP3-радио (http, обычно порт 8000) нужно использовать контейнер RAW и переименовывать полученные файлы с расширением RAW в MP3.

Видеоролик об использовании планировщика и фоновой записи

Список каналов, формат 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

Формат JTV появился в одноименной программе польского разработчика Ярослава Ковальского для ТВ-тюнеров на базе чипов bt8x8. Это двоичный формат, база телепрограмм JTV обычно является архивом ZIP или RAR, содержащим пары файлов (с расширением NDX и PDT) для каждого телеканала. Новая база обычно выходит каждую неделю по понедельникам. Формат не содержит информации о часовом поясе, поэтому вы должны узнать текущий пояс телепрограммы на сайте источника. Формат JTV в основном распространён на территории бывшего СССР, где и была в 2000-2003 году популярна одноименная программа. Сейчас наиболее популярным ПО, использующим формат JTV, является ПО для тюнеров Beholder и GotView.

Популярные источники JTV (везде более 200 каналов):

  - http://www.teleguide.info/download/new3/jtv.zip (Московское время)
  - http://www.gotview.ru/programs/tv.rar (Московское время)
  - http://www.vipiko.tv/get?cur-jtv-zip (Московское время)

Разработчики могут разобраться с форматом JTV, ознакомившись с программой GuideGen (генерация JTV из текста на C++ и PHP)

Архивы ZIP плеер может распаковать самостоятельно. Для автоматической распаковки RAR/7Z/TGZ необходимо, чтобы в системы был установлен WinRAR или 7-Zip.

Настройка плеера с нуля (если у вас есть только список каналов)

Запустите плеер, выбрав в качестве преднастройки "Пустой профиль", загрузите каким-либо образом список каналов через Настройки → Общие → Адрес списка каналов (с веб-сайта или из файла). При необходимости предварительно отредактируйте список каналов блокнотом, следуя вышеописанным рекомендациям.

Не торопитесь начинать просмотр каналов! Сначала в Настройки → Канал установите параметры по-умолчанию (будут применены ко всем каналам), например, для IPTV Деинтерлейс Blend, Соотношение сторон 4:3 и т.д. Выбрав умолчания, нажмите кнопку Применить и Закрыть диалога настроек.

Выберите в Меню Телепрограмма → Автоматическая настройка - плеер попытается выбрать наиболее подходящие логотипы и файлы телепрограммы для всех каналов по очереди. После завершения автонастройки "пройдитесь руками" по всем каналам и поправьте ошибки, при необходимости выберите соответствующие звуковые дорожки.

Для провайдеров → Сборка дистрибутива

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

Конфигурация

В соответствии с описанием формата сформируйте файл списка каналов и загрузите его на ваш веб-сервер (в примере ниже http://ваш.сервер/ваш_список_каналов.m3u).

Сборка

Загрузите сборщик дистрибутива, создайте папку (имя для примера Custom) с описанной ниже структурой. Запустите сборщик и укажите ему эту папку.

Готово! Не забывайте периодически обновлять ваш дистрибутив.

Сборка вручную (старый способ)

Простая сборка онлайн

Описание Provider.ini

; стандартный вариант
[List]
Count=1
1name="Название Компании"
1um3u=http://ваш.сервер/ваш_список_каналов.m3u

; вариант с выбором
[List]
Count=2...
1name="Название Компании - Пакет1"
1um3u=http://ваш.сервер/ваш_список_каналов_1.m3u
2name="Название Компании - Пакет2"
2um3u=http://ваш.сервер/ваш_список_каналов_2.m3u
...

; параметры плеера (все параметры необязательны)
[Settings]
; заголовок окна плеера
apptitle1="Компания-ТВ Плеер"
; цвета интерфейса (посмотреть можно в IpTvPlayer.User.ini)
colors=...
; значение VLC udp-caching
cache=500
; замена ссылки "Справочная информация"
support-url=http://ваш.сервер/техподдержка
; адрес скрипта для сбора статистики просмотра
reportstat=http://ваш.сервер/stat
; адрес скрипта для сбора логов
reportlog=http://ваш.сервер/logs

; параметры установщика (все параметры необязательны)
[Setup]
; заголовок установщика, имя ярлыка на рабочем столе и в меню "Пуск"
;productname="Компания-ТВ Плеер"
; имя папки в Program Files (обязательно на английском)
;productinstdir="Company-TV Player"
; удалить настройки текущего пользователя при установке
;resetuserdata=1

Чтобы попасть в список провайдеров, загружающийся при установке оригинального дистрибутива плеера, отправьте нам письмо с адресом списка каналов обязательно с корпоративного домена вашей компании. Добавляются только компании работающие с мультикастом.

Для провайдеров → Формат списка каналов с настройками

В список каналов можно добавить необходимые настройки для плеера, в таком случае вид файла будет следующим:

#EXTM3U Общие настройки
#EXTINF:-1 Настройки канала 1 ,Канал 1
адрес-канала-1
#EXTINF:-1 Настройки канала 2 ,Канал 2
адрес-канала-2

Вставки с настройками должны иметь вид: параметр1=значение1 параметр2=значение2 ...

Параметры для общих настроек:

Параметры для настроек каналов:

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

Пример:

#EXTM3U url-tvg="http://server/jtv.zip" cache=500 deinterlace=1 aspect-ratio=4:3 crop=700x550+10+10 tvg-shift=0 

#EXTINF:-1 tvg-name="Первый_канал" crop=688x556+16+8 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="Россия К" crop=688x556+16+8 ,Культура
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" crop=690x550+15+10 mono=1 ,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>");
}
?>

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

Для специалистов → Просмотр эфирного ТВ через ТВ-тюнер

Эфирные каналы имеют адреса вида 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-пакеты получают низкий приоритет и могут пропускаться.

Тем не менее, сейчас на рынке появляются роутеры, которые передают мультикаст по 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 ←┐  ←httpudp
    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:8001udp://@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 WL-500g "от Олега") и официальные прошивки для модемов Acorp 122/422/W422G, может быть установлен на DD-WRT и OpenWRT. Это значит, что вы можете напрямую обращаться по http к данным модемам - http://192.168.1.1:порт-прокси/udp/x.x.x.x:x и прописать в плеере в качестве сетевого интерфейса 192.168.1.1:порт-прокси без выделения отдельного компьютера под сервер (192.168.1.1 - стандартный адрес вашего модема/роутера, если настройки изменены, он может отличаться).

Оригинальная идея, метод преобразования адреса и реализация для Windows - BorPas, август 2006.

Дополнительно → Проекты третьих сторон



borpas.info     support@borpas.info    

← На страницу плеера