Проксируем IPTV в HTTP

Для тех зашел сюда в поисках халявного IPTV сразу даю ссылку на свой плейлист, — смотрите на здоровье. Для успешного просмотра у вас должен быть открыт 4022 порт на хост berezhinskiy.name Трансляция ограничена 6ю смотрящими одновременно.

Для остальных — маленькое HOWTO на тему проксирования UDP multicast по протоколу HTTP:
Решение реализуется с помощью udpxy и 2х строк в rc.conf. Для начала проверим активирована ли поддержка мультикаст на интерфейсе:

# ifconfig net0 | grep MULTICAST
net0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500

Ставим udpxy:

# cd /usr/ports/net/udpxy/ && make install clean

Добавляем в rc.conf флаги запуска, стартуем и проверяем что порт слушается:

# cat /etc/rc.conf | grep udpxy
udpxy_enable="YES"
udpxy_flags="-m net0 -p 4022 -S -c 6"
# /usr/local/etc/rc.d/udpxy start
Starting udpxy.
# sockstat | grep udpxy
root     udpxy      56048 5  tcp4   *:4022                *:*

Флаги запуска:
* -m — имя интерфейса мультикаст-каналов
* -p — TCP порт для HTTP запросов к приложению
* -c — максимальное количество клиентов, обслуживаемых одновременно
* -l — записывать журнал приложения в указанный файл
* -S — передавать статистику о клиентских соединениях
Далее берем плейлист, который нам дал провайдер и изменяем под наши нужды:

# head tv_all.m3u
#EXTM3U
#EXTINF:0,1 - Channel 5 (Ukraine)
udp://@239.100.0.1:5004
#EXTINF:0,2 - 1+1 international (H264)
udp://@239.100.0.10:5004
#EXTINF:0,3 - UR1
udp://@239.100.0.101:5004
#EXTINF:0,4 - RADIO ERA
udp://@239.100.0.102:5004
#EXTINF:0,5 - L.Radio
# cat tv_all.m3u | sed -e 's@udp://\@@http://berezhinskiy.name:4022/udp/@' > TV.m3u

Естественно, заменяем http://berezhinskiy.name:4022 на свои ip:port, запускаем VLC/winamp/wmp и проверяем работоспособность. Если что не фурычит — смотрим лог и гуглим :)
Если вы оставили опцию -S в флагах запуска, — статистика будет доступна по адресу http://ip:port/status

Опубликовано 10.12.2011 в 18:16 · Автор Berezhinskiy · Ссылка
Рубрики: FreeBSD · Теги: , , , , ,

Написать комментарий