?

Log in

No account? Create an account

Previous Entry | Next Entry

Сразу скажу - IPTV на Sony PlayStation 3 реально, при этом без компьютера!
Достаточно иметь подходящий роутер и прямые руки.
Первым шагом делаем это: clark15b.livejournal.com/110936.html
Вторым шагом качаем мой pshare и запускаем на том же роутере рядом с udpxy.

Кому интересны подробности читаем дальше...

История началась с того как решил я пробросить в домашнюю сеть сквозь D-Link DIR-320 мультикастовое TV от Butovo.com

В общем-то эффекта добился и теперь у меня на роутере крутится udpxy для подписки на мультикаст потоки провайдера и трансляции их внутри юникастом (HTTP) по требованию клиентов.
Остается подсунуть правильный плейлист плееру и вот тебе IPTV даже через WiFi и даже в HD.

Следующим шагом захотел я смотреть это дело не на компе, а на хардварном медиаплеере IconBit HDS4L.

К сожалению в официальной прошивке нет возможности подсунуть плейлист для просмотра потокового видео по сети, а альтернативная кривая и тормозная.

В общем самый естественный вариант - UPnP который есть в родной прошивке.

Задача: Парсить плейлисты и раздавать их по UPnP в качестве набора ссылок на юникастовые потоки udpxy.
Главное требование: Никакого транскодинга видео и все должно работать на роутере или насе (никаких компов).

Для эксперимента добавил линк в TVercity и попробовал посмотреть на PS3 - консоль ругнулась на тип файла и отказалась показывать. На этом я понял что PS3 мне TV не покажет :(
Ну хоть IconBit и ладно.

Начал экспериментировать с моим насом.
Родной Twonky вроде как умеет раздавать плейлисты, но только для радио и, похоже, что именно в виде файла, а не набора ссылок из плейлиста как надо.
Пробовал ushare - плейлисты знает, но раздает их как файлы и не понимает UTF-8.
MediaTomb должен уметь то, что надо, но вместе с Twonky жить отказался да и не легкий он.
Переходить с Twonky на MediaTomb не хочу т.к. первый, на мой взгляд, гораздо лучше.
Другого софта не нашел, только упоминания какого-то мода ushare - ushare_iptv для какой-то железки. Видимо он и должен уметь парсить плейлисты и отдавать по UPnP ссылки как набор медиафайлов.

Вообще похоже весь софт который в состоянии работать на роутерах и насах раздает плейлисты просто как файлы в надежде что клиент умеет с ними обращаться. В UPnP для m3u файлов даже и mime-тип есть: "audio/mpegurl" (ключевое слово audio).
Неужели есть клиенты которые это умеют?

Решил написать свой DLNA медиасервер с единственным сервисом ContentDirectory.
Интерфейс этого сервиса предназначен для навигации по библиотеке медиасервера, но он не обязан отдавать наружу ссылки на свой контент - это могут быть ссылки куда угодно (в нашем случае на udpxy).

Потратил неделю и вот оно чудо - моя штука заставила показывать IPTV через udpxy не только IconBit, но и Sony PlayStation3.
Причем не только каналы стандартной четкости, но и высокой четкости (HDTV).

В результате вчера ночью смотрел MCM TOP на PS3 :)

Программу назвал pshare, вот линк: ps3muxer.org/pshare.html

Стабильно работает на PC и на mipsel (D-Link DIR-320 с DD-WRT) .

Исходники (для DD-WRT/OpenWRT собирать так) и пакет для mipsel тут: code.google.com/p/tsdemuxer/downloads/list
SVN: 'svn co https://tsdemuxer.googlecode.com/svn/trunk/pshare'

С pshare нормально работают: PS3, IconBit, VideoLAN и Windows Media Player.

В общем на DIR-320 у меня крутится udpxy и pshare, Бутово.Ком раздает мультикастом ТВ каналы (в т.ч. и HD), смотрю все это на PS3 и IconBit.
При этом PS3 показывает все, показывает очень хорошо и не глючит.

IconBit странно сортирует плейлист и долго тупит в начале - картинка есть, а звука секунд 5 нет.

Как ни странно PS3 опять лучше :)

Теперь смотрю и в комнате и на кухне с наса HD кино, а с роутера ТВ - высокие технологи :))))
И главное ничего не шумит и не греется, а роутер у меня работает всегда и готов раздавать ТВ.



(просмотр IPTV на Sony PlayStation 3 без компьютера и транскодирования)

Comments

Илья Ваганов
Jun. 17th, 2011 07:19 am (UTC)
Re: pShare
теперь вот так...:
FREEBSD# make
gcc -I/usr/include -fno-exceptions -fno-rtti -O2 -DWITH_LIBUUID -o pshare main.cpp upnp.cpp soap.cpp tmpl.cpp mem.cpp proxy.cpp common.cpp -luuid
upnp.cpp: In function 'void upnp::uuid_gen(char*)':
upnp.cpp:34: error: 'uuid_generate' was not declared in this scope
upnp.cpp:36: error: 'uuid_unparse_lower' was not declared in this scope
upnp.cpp: In function 'int upnp::get_if_info(const char*, upnp::if_info*)':
upnp.cpp:73: error: 'struct ifreq' has no member named 'ifr_ifrn'
upnp.cpp: In function 'int upnp::get_if_list(upnp::if_info*, int)':
upnp.cpp:132: error: 'struct ifreq' has no member named 'ifr_ifrn'
*** Error code 1

Stop in /tmp/src.
clark15b
Jun. 17th, 2011 07:21 am (UTC)
Re: pShare
Ясно, тогда делаем проще... в Makefile ищем '-DWITH_LIBUUID' '-luuid' и стираем.
Илья Ваганов
Jun. 17th, 2011 08:21 am (UTC)
Re: pShare
gcc -I/usr/include -fno-exceptions -fno-rtti -O2 -o pshare main.cpp upnp.cpp soap.cpp tmpl.cpp mem.cpp proxy.cpp common.cpp
upnp.cpp: In function 'int upnp::get_if_info(const char*, upnp::if_info*)':
upnp.cpp:73: error: 'struct ifreq' has no member named 'ifr_ifrn'
upnp.cpp: In function 'int upnp::get_if_list(upnp::if_info*, int)':
upnp.cpp:132: error: 'struct ifreq' has no member named 'ifr_ifrn'
*** Error code 1