?

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

clark15b
Sep. 5th, 2011 07:43 am (UTC)
А что именно шуршит? Логи можно? И с какими параметрами запускали?
dimovey
Sep. 5th, 2011 03:40 pm (UTC)
запускал с опцией -е и без нее. Вот что в verbose режиме идет:
/jffs/opt/bin/pshare -i br0 /jffs/udpxy/tv_http.m3u -e -v
starting UPnP service 'UPnP-IPTV'...
playlist: 'tv_http' -> /jffs/udpxy/tv_http.m3u
find multicast interface address by name 'br0'
multicast interface address: '192.168.1.1'
multicast group address: '239.255.255.250:1900'
root device uuid: 'f0ced35c-d26e-6695-dec1-ff5795b668f9'
device friendly name: 'UPnP-IPTV'
multicast upstream address: '192.168.1.1:30919'
multicast upstream ttl: 1
join to multicast group '239.255.255.250:1900' on interface '192.168.1.1'
send 273 bytes to multicast group '239.255.255.250:1900' via interface '192.168.1.1'
send 264 bytes to multicast group '239.255.255.250:1900' via interface '192.168.1.1'
send 316 bytes to multicast group '239.255.255.250:1900' via interface '192.168.1.1'
send 328 bytes to multicast group '239.255.255.250:1900' via interface '192.168.1.1'
send 330 bytes to multicast group '239.255.255.250:1900' via interface '192.168.1.1'
send 344 bytes to multicast group '239.255.255.250:1900' via interface '192.168.1.1'
GET '/t/dev.xml' from '192.168.1.37:4604'
GET '/t/dev.xml' from '192.168.1.33:63973'
GET '/t/dev.xml' from '192.168.1.33:63974'

Адрес 192.168.1.33 это компьютер, на котором стартую команду по SSH.
clark15b
Sep. 6th, 2011 06:59 am (UTC)
Попробуй с компа дернуть http://192.168.1.1:4044/t/dev.xml, должна вернуться XMLка.
И запусти pshare с ключом -d.
dimovey
Sep. 6th, 2011 07:13 am (UTC)
если я увижу xml то что это даст?просто тест соединения?как понять что результат правильный?
clark15b
Sep. 6th, 2011 07:21 am (UTC)
Тест соединения. Должна вернуться корректная XMLка которая должна распарситься броузером. Броузер не должен ни на что ругаться
dimovey
Sep. 6th, 2011 07:33 am (UTC)
понял,вечером отпишусь по результату.
dimovey
Sep. 6th, 2011 04:24 pm (UTC)
name='п═я┐я│я│п╨п╟я▐ пҐп╬я┤я▄(18+)', url='http://192.168.1.1:8000/udp/233.166.172.155:1234', mime='http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=01700000000000000000000000000000' (object.item.videoItem)
find multicast interface address by name 'br0'
multicast interface address: '192.168.1.1'
multicast group address: '239.255.255.250:1900'
root device uuid: 'f0ced35c-d26e-6695-dec1-ff5795b668f9'
device friendly name: 'UPnP-IPTV'
multicast upstream address: '192.168.1.1:29265'
multicast upstream ttl: 1
join to multicast group '239.255.255.250:1900' on interface '192.168.1.1'
send 273 bytes to multicast group '239.255.255.250:1900' via interface '192.168.1.1'
NOTIFY * HTTP/1.1
HOST: 239.255.255.250:1900
CACHE-CONTROL: max-age=1800
LOCATION: http://192.168.1.1:4044/t/dev.xml
NT: uuid:f0ced35c-d26e-6695-dec1-ff5795b668f9
NTS: ssdp:alive
Server: pShare UPnP Playlist Browser
USN: uuid:f0ced35c-d26e-6695-dec1-ff5795b668f9


send 264 bytes to multicast group '239.255.255.250:1900' via interface '192.168.1.1'
NOTIFY * HTTP/1.1
HOST: 239.255.255.250:1900
CACHE-CONTROL: max-age=1800
LOCATION: http://192.168.1.1:4044/t/dev.xml
NT: upnp:rootdevice
NTS: ssdp:alive
Server: pShare UPnP Playlist Browser
USN: uuid:f0ced35c-d26e-6695-dec1-ff5795b668f9::upnp:rootdevice


send 316 bytes to multicast group '239.255.255.250:1900' via interface '192.168.1.1'
NOTIFY * HTTP/1.1
HOST: 239.255.255.250:1900
CACHE-CONTROL: max-age=1800
LOCATION: http://192.168.1.1:4044/t/dev.xml
NT: urn:schemas-upnp-org:device:MediaServer:1
NTS: ssdp:alive
Server: pShare UPnP Playlist Browser
USN: uuid:f0ced35c-d26e-6695-dec1-ff5795b668f9::urn:schemas-upnp-org:device:MediaServer:1


send 328 bytes to multicast group '239.255.255.250:1900' via interface '192.168.1.1'
NOTIFY * HTTP/1.1
HOST: 239.255.255.250:1900
CACHE-CONTROL: max-age=1800
LOCATION: http://192.168.1.1:4044/t/dev.xml
NT: urn:schemas-upnp-org:service:ContentDirectory:1
NTS: ssdp:alive
Server: pShare UPnP Playlist Browser
USN: uuid:f0ced35c-d26e-6695-dec1-ff5795b668f9::urn:schemas-upnp-org:service:ContentDirectory:1


send 330 bytes to multicast group '239.255.255.250:1900' via interface '192.168.1.1'
NOTIFY * HTTP/1.1
HOST: 239.255.255.250:1900
CACHE-CONTROL: max-age=1800
LOCATION: http://192.168.1.1:4044/t/dev.xml
NT: urn:schemas-upnp-org:service:ConnectionManager:1
NTS: ssdp:alive
Server: pShare UPnP Playlist Browser
USN: uuid:f0ced35c-d26e-6695-dec1-ff5795b668f9::urn:schemas-upnp-org:service:ConnectionManager:1


send 344 bytes to multicast group '239.255.255.250:1900' via interface '192.168.1.1'
NOTIFY * HTTP/1.1
HOST: 239.255.255.250:1900
CACHE-CONTROL: max-age=1800
LOCATION: http://192.168.1.1:4044/t/dev.xml
NT: urn:microsoft.com:service:X_MS_MediaReceiverRegistrar:1
NTS: ssdp:alive
Server: pShare UPnP Playlist Browser
USN: uuid:f0ced35c-d26e-6695-dec1-ff5795b668f9::urn:microsoft.com:service:X_MS_MediaReceiverRegistrar:1


GET '/t/dev.xml' from '192.168.1.33:61632'
GET '/t/dev.xml' from '192.168.1.37:4271'
GET '/t/dev.xml' from '192.168.1.33:61635'
GET '/t/dev.xml' from '192.168.1.33:61639'
GET '/t/dev.xml' from '192.168.1.33:61649'
GET '/favicon.ico' from '192.168.1.33:61651'
GET '/t/dev.xml' from '192.168.1.33:61660'
GET '/favicon.ico' from '192.168.1.33:61662'
GET '/favicon.ico' from '192.168.1.33:61664'
GET '/favicon.ico' from '192.168.1.33:61666'

это лог с опцией d

Firefox xml не выдал со след ошибкой
Ошибка синтаксического анализа XML: элемент не найден
Адрес: http://192.168.1.1:4044/t/dev.xml
Строка 1, символ 1:
clark15b
Sep. 7th, 2011 08:35 am (UTC)
Бинго!

Рекомендую запустить с опцией '-r www_root', где www_root путь к месту где лежат dev.xml,cds.xml,cms.xml,msr.xml и т.д.

Если не заработает то сделай 'telnet 192.168.1.1 4044', напиши там
'GET /t/dev.xml HTTP/1.0' и два раза на enter.

В ответ вывалятся HTTP заголовки и т.д. Пришли что вернется.
dimovey
Sep. 7th, 2011 04:42 pm (UTC)


HTTP/1.1 200 OK
Pragma: no-cache
Cache-control: no-cache
Date: Wed, 7 Sep 2011 16:42:21 GMT
Server: pShare UPnP Playlist Browser
Accept-Ranges: none
Connection: close
Content-Type: text/xml
EXT:





1
0


urn:schemas-upnp-org:device:MediaServer:1

UPnP-IPTV
Anton Burdinuk <clark15b@gmail.
com>
http://ps3muxer.org/pshare.html</ manufacturerURL>
UPnP Playlist Browser from Anton Burdi
nuk <clark15b@gmail.com>
pShare UPnP
Playlist Browser
0.0.2
http://ps3muxer.org/pshare.html
PSHARE-0.0
.2
uuid:58fb9ce9-3093-8a12-a395-5d904bbf62b8



image/png

48
48

8
/icon-48x48.png





urn:schemas-upnp-org:service:ContentDirectory:1

urn:upnp-org:serviceId:ContentDirectory

/cds.xml
/cds_control
/cds_event



urn:schemas-upnp-org:service:Con
nectionManager:1
urn:upnp-org:serviceId:
ConnectionManager
/cms.xml

/cms_control
/cms_e
vent


urn:microsoft.com:service:X_MS_MediaReceiverRegistrar:1

urn:microsoft.com:serviceId:X_MS_MediaReceiverRegistra
r
/msr.xml
/msr_control
/msr_event


/

http://192.168.1.1:4044/



Connection to host lost.

C:\Users\Dimovey>
clark15b
Sep. 8th, 2011 08:17 am (UTC)
Ого, даже не знаю как такое возможно.

dev.xml не испорчен? Может там где лишний '#'?

Пришли на мыло файл с роутера (clark15b собака gmail.com)
dimovey
Sep. 8th, 2011 08:35 am (UTC)
ok,скину как дома буду.фишка в том,что с компа и на Филипс ТВ я его вижу теперь, другое дело что с компа воспроизведение начинается с боольшой задержкой,а на телеке после выбора канала вообще черный экран.А PopcornHour с200 так и не видит плейлист.