IPTV в последнее время приобрел бешеную популярность, однако производители телевизоров не торопятся реализовывать поддержку IPTV в своей продукции. Разберемся, как самостоятельно реализовать просмотр IPTV средствами современных устройств - десктопов и мобильных устройств на базе Android.

Будем считать, что тем, кто использует роутеры с заводскими прошивками, эта статья интересна не будет. Все описанное ниже относится к роутеру DIR-825 с прошивкой DD-WRT. Для других роутеров параметры могут незначительно отличаться, но суть это не меняет.

План работ следующий:

  1. Обход фаервола - создадим правила для IPTV
  2. Установим udp proxy на базе udpxy
  3. Настроим программное обеспечение для просмотра IPTV

IPTV и firewall

Весьма правильно, что в роутерах изначально включен firewall. Но в нашем случае он будет являться помехой для работы IPTV. Существует два способа обхода этой проблемы: первый - простой, а второй -  правильный.

1. Простой способ - заходим на вкладку Security и отключаем SPI Firewall. Жмем Save.

Рекомендую использовать этот способ в тестовых целях - например при возникновении проблем в настройке IPTV. Постоянно оставлять роутер в работе с отключенным firewall не следует.

2. Правильный способ - сообщить роутеру об отсутствии необходимости резать наш IPTV. Добавим правило в iptables нашего роутера:

iptables -I INPUT -d 224.0.0.0/240.0.0.0 -j ACCEPT

Правила добавляются во вкладке Administration => Commands.

Установка прокси-сервера udpxy

Основное программное обеспечение, позволяющее решить нашу задачу - это демон udpxy, для UNIX/Linux, позволяющий организовать мультикаст трафика UDP для TCP (HTTP) клиентов. В нашем примере используется компиляция udpxy для процессоров Atheros, т.к. Dlink DIR-825 работает на процессоре Atheros AR7161.

Выполним на роутере следующие команды:

wget http://xkr446.hotbox.ru/udpxy -P /tmp
chmod +x /tmp/udpxy
/tmp/udpxy -a 192.168.1.1 -p 4022 -m ВАШ_WAN_IP_АДРЕС -B 1Mb -M 30

Итак, что здесь происходит:

  1. wget скачивает udpxy и помещает его в каталог /tmp.
  2. На udpxy добавляются права на выполнение.
  3. Запускается демон ( укажите лучше полный путь /tmp/udpxy ) на 192.168.1.1:4022 ( -a 192.168.1.1 -p 4022 ), используя внешний IP ( -m ВАШ_WAN_IP_АДРЕС ), предоставленный вашим провайдером, выделяя 1Мб памяти для буферизации ( -B 1Mb  - именно с этим параметром надо будет играться, если качество трансляции далеко от желаемого).

Сделаем ту же последовательность команд универсальной, заменим адреса на системные переменные и выгрузив udpxy с нашего сервера:

wget http://fight.org.ua/soft-catalogue/udpxy -P /tmp 
chmod +x /tmp/udpxy
/tmp/udpxy -a $(nvram get lan_ipaddr) -p 4022 -m $(nvram get wan_ipaddr) -B 1Mb -M 30

Для роутера DIR-615 подойдет следующая последовательность команд (здесь используется другая сборка udpxy):

wget http://dl.dropbox.com/u/14930004/udpxy
chmod +x udpxy
/tmp/udpxy -a $(nvram get lan_ipaddr)  -p 4022 -m $(nvram get wan_ipaddr) -B 1Mb -M 30

 

Назначаем данный скрипт в автозагрузку - Administration => Command => Save Startup

Перезагружаем роутер: Administration => Reboot router

 

Проверить статус работу UDP Proxy можно по следующему адресу:

http://192.168.1.1:4022/status

Если все сделано правильно, мы увидим такую табличку:

Настройка программного обеспечения для просмотра IPTV

Android

Для промотра IPTV с Android понадобятся два приложения - IPTV и  KM Player. Первое представляет собой клиент. В его же настройках выбирается видеоплеер, которому суждено воспроизводить видео. По умолчанию это KM Player и он достаточно хорош, чтоб не менять его на что-либо другое.

Для воспроизведения звука могут потребоваться дополнительные кодеки, которые можно скачать в том же Play Market: для устройств с процессором ARM V6 и ARM v7.

Windows и Linux

Здесь все просто, но есть один момент.

Для просмотра трансляции используем обычный и привычный VLC плеер. Однако, с полпинка все не заведется - VLC отказывается воспроизводить плейлист провайдера.  Причина проста - ведь мы транслируем IPTV через наш udpxy.

Для просмотра трансляции через VLC необходимо в файле плейлиста заменить настройки каналов с вида udp://@230.33.0.4:1234 на http://192.168.1.1:4022/udp/230.33.0.4:1234 и скормить его VLC.