14 грудня 2011 р.

Дивимося IPTV на телевізорах з підтримкою DLNA

Умови, є
  • інтернет провайдер що надає послугу IPTV
  • телевізор з підтримкою DLNA, у моєму випадку Samsung LE40B650
  • роутер з підтримкою OpenWrt, у моєму випадку TP-LINK 1043

Завдання - дивимося на телевізорі телевізійні канали з IPTV.
Реалізація:
Ідея реалізації у переформуванні пакетів з одонго траспортного потоку в інший, сам відеопотік не перекодується, як транслювався, наприклад у кодуванні mpeg2, так і буде і транслюватися.
Так от пакунок xupnpd і займається переформуванні траспортного потоку з IPTV до формату який може підтримуватися багатьма телевізорами, наприклад - DLNA.
Так як у домашніх мережах використовується реалізація IPTV поверх IGMP, то для роутера за звичай встановлюється пакунок udp proxy, що переформатує потік з IGMP/UDP до TCP.
Встановлюємо  udpxy, це дозволяє дивитися IPTV у локальній мережі, особливо через WiFi тому як використовується TCP, а не UDP.



Якщо не використовується опція cfg.udpxy_url, то необхідно дещо модифікувати наш файл з переліком каналів. 
 З udp://@238.0.0.20:1234 на http://routerIP:udpxy_port/udp/238.0.0.20:1234
Де routerIP адреса нашого роутреа,  udpxy_port порт з налаштувань udpxy, у моєму випадку такий запис http://192.168.0.1:8881/udp/238.0.64.8:1234. Де192.168.0.1:8881 параметри нашого udpxy proxy.
Готуємо таким чином новий  файл з переліком каналів, зберігаючи кодування, наприклад UTF-8.
Якщо використовується опція cfg.udpxy_url , наприклад cfg.udpxy_url='http://192.168.0.1:8881', то файл модифікувати не потрібно, це зробить автоматично xupnpd.

Встановлюємо  xupnpd
з репозиторії: opkg install
або ось дзеркало на одну з останніх версій пакунку xupnpd для платформи ar71xx.
Я використовую сайт розробника, завантажую, наприклад xupnpd-rc6.tar.gz, розархівовую, видаляю непотрібні файли xupnpd-mipsel, xupnpd-mipsel-ddwrt, а файл для своєї платформи xupnpd-ar71xx перейменовую до xupnpd.
Редагуємо файл налаштувань xupnpd.lua.
Переписую до теки в роутер (WinSCP) надаю атрибут до виконання chmod +x xupnpd.


xupnpd.lua
-- multicast interface for SSDP exchange, 'eth0', 'br0', 'br-lan' for example
cfg.ssdp_interface='br-lan'
-- external 'udpxy' url for multicast playlists (udp://@...)
cfg.udpxy_url='http://192.168.0.1:8881'
-- downstream interface for builtin multicast proxy (comment 'cfg.udpxy_url' for processing 'udp://@...' playlists)
cfg.mcast_interface='eth0.2'
-- 'cfg.proxy' enables proxy for injection DLNA headers to stream
-- 0-off, 1-radio, 2-radio/TV
cfg.proxy=2
-- 'cfg.dlna_extras' enables DLNA extras
cfg.dlna_extras=true
-- XBox360 compatible mode
cfg.xbox360=false
-- enables UPnP/DLNA notify when reload playlist
cfg.dlna_notify=true
-- group by 'group-title'
cfg.group=true
-- Device name
cfg.name='1-TRIOLAN-IPTV'
-- default mime type (mpeg, mpeg1, mpeg2, ts)
cfg.default_mime_type='mpeg'
-- playlist (m3u file path or path with alias
playlist=
{
{ './playlists/trio.m3u', 'TRIOLAN.tv' },
}


eth0.2 - це інтерфейс до котрого підключена мережа провайдера
br-lan - це інтерфейс до котрого підключена локальна мережа, міст провідної та Wi-Fi.



Так як я робив самостійну компіляцію то не мав сценарію запуску тому ось він може бути такий:

/etc/init.d/xupnpd
#!/bin/sh /etc/rc.common
START=99
STOP=99
start() {
   XUPNPDROOTDIR=/opt/xupnpd-rc /opt/xupnpd-rc/xupnpd
}
stop () {
   killall xupnpd
}
Не забудьте надати дозвіл на виконання chmod +x /etc/init.d/xupnpd

Запускаємо  /etc/init.d/xupnpd start

А ось на веб сторінці xupnpd ми можемо керувати файлами з переліком каналів. Або дивитися статус перегляду поточного каналу.

Звертаємося до веб-сторінки xupnpd, http://ip_routera:4041, та завантажуємо файл .m3u


Сторінка програми xupnpd

Додавання файлу .m3u

Інформація про канал на кліентах
Навантаження на роутер при перегляді одного каналу: ~12%+5%=17%

Навантаження CPU роутера, команда "top"

Ось фотографії з екрану мого телевізора:





Ще, є можливість встановити xupnpd посередньо у сам телевізор згідно цієї інструкці. 
Але цього я ще не перевіряв.

Ревізія 321, xupnpd_321-1_ar71xx.ipk

udpxy-1.0.23-0 + патчи від SnpJke : http://forum.ixbt.com/topic.cgi?id=14:54404-22#563 

8 коментарів:

Руслан сказав...

Шановний LeXXai, як ти приєднав ТВ-ящик до роутера? Через ЛАН чи ВЛАН?
Якщо через ВЛАН, то яке обладнання з боку ТВ-ящика потрібно встановити?
Думаю собі придбати TP-LINK 1043, є SONY KDL-37W5500 (http://www.sony.ua/product/tv-94-37-lcd/kdl-37w5500#pageType=TechnicalSpecs).
Але немає можливості тягнути кабель. Чи можна вирішити питання перегляду IPTV через ВФ?

LeXXai сказав...

Підключено зараз через LAN, але раніше підключав через Wi-Fi за допомогою додатковою точки доступу у режимі клієнта. Тобто роутер на стороні підключення провідного інтернету, і точка доступу біля телевізора, котра в свою чергу підключена до телевізора коротким проводом. І таким чином можна дивитися IPTV. Але з вважаю краще (якщо кошти є) поставати біля телевізора Media Player з підтрикою IPTV і WiFi.

Руслан сказав...

Дякую за відповідь.
Використання Медіаплеєра вимагає використання пульту керування ним. А чи не можна через пульт телевізора з ДЛНА напряму керувати вибором каналів?

LeXXai сказав...

Так, вибір каналів можливий. Канали представлені я окремі медіа файли. Тому пультом вибираємо потрібний канал, я к фільм. В залежності від моделі телевізора, перебір може бути різний.

Руслан сказав...

Як в такому разі потрібно підключити телевізор до медіаплеєра? По якому кабелю?
Яке потрібно налаштування?
Пробач, що так цікавлюсь, але чесно кажучи набридло вмикати тюнер і телевізор, який має аналогічні функції. Тобто хочеться, щоб ввімкнув плеэр і все. А далы керувати тілтьки з пульту телевізора

LeXXai сказав...

Мабуть, я не зрозумів Вас. Незалежний Медіаплеер має свій пульт і своє керування, від телевізора потрібне буде тільки вмикання і вибір вхідного сигналу. У моїй публікації йде річ об іншому методі, де використовуються вже присутні функції Медіаплеера телевізора, і пульт телевізора.

Kir сказав...

Здравствуйте, исправьте Ваш пост: нет необходимости редактировать список каналов Триолан.
Нужно раскомментировать строку:
-- external 'udpxy' url for multicast playlists (udp://@...)
--cfg.udpxy_url='http://192.168.0.1:8881' <- вот эту строку!
Ввести адрес Вашего роутера и нужный порт.
Список каналов можно спокойно загружать через Вэб интерфейс программы.
Также можно подключить локальные папки с контентом (на подключенном диске или флешке) и т.п.

LeXXai сказав...

Дякую, підправив.


Коли забув ти рідну мову, біднієш духом ти щодня...
When you forgot your native language you would become a poor at spirit every day ...

Д.Білоус / D.Bilous
Рабів до раю не пускають. Будь вільним!

ipv6 ready