DNLA SHARE вывод контента на SMART телевизоры
Добавлено: Пн июн 26, 2017 9:31 pm
Не для кого не секрет, что почти все современные smart телевизоры и STB (mag250 и тд) приставки имеют на борту DNLA клиенты с поддержкой upnp протокола. Протокол upnp позволяет передавать устройству ссылку на видео или аудио-поток, в том числе, насколько я понимаю возможен и вывод изображений). Получается это идеальный терминал для вывода дополнительной информации.
Некоторые приложениями на андройд отправляют поток на телевизор. Для MD идеально бы подошел php dnla сервер. В теме viewtopic.php?f=5&t=4024 мы уже пытались поднять этот вопрос, но пока безуспешно. Пишут, что не все устройства можно подключить. Если честно, я взываю сообщество к помощи, так как сам пока не осилил.
Также в сети есть приложения под WIN (https://hms.lostcut.net/viewtopic.php?id=119 , https://github.com/WendyH/testdlna), которое позволяет отправить dnla плееру ссылку на поток.
Копипаст
приложения для android (LazyMedia+, WiTV https://4pda.ru/forum/index.php?showtopic=352140, bubbleupnp https://4pda.ru/forum/index.php?showtopic=272708)
примеры серверов на php
https://github.com/jalder/FuelPHP_UPnP
https://github.com/jalder/UPnP
https://github.com/ttyridal/phpdlna
спецификация протокола
Некоторые приложениями на андройд отправляют поток на телевизор. Для MD идеально бы подошел php dnla сервер. В теме viewtopic.php?f=5&t=4024 мы уже пытались поднять этот вопрос, но пока безуспешно. Пишут, что не все устройства можно подключить. Если честно, я взываю сообщество к помощи, так как сам пока не осилил.
Также в сети есть приложения под WIN (https://hms.lostcut.net/viewtopic.php?id=119 , https://github.com/WendyH/testdlna), которое позволяет отправить dnla плееру ссылку на поток.
Копипаст
SPOILERSPOILER_SHOW
Т.к. при включении устройства оно в сети создаёт свой http сервер, порт работы может устанавливаться разный и отличаться от случая к случаю.
Поэтому для начала посылается широковещательный UDP запрос в локальную сеть по адресу
239.255.255.250:1900 с определёнными заголовками:
M-SEARCH * HTTP/1.1
HOST:239.255.255.250:1900
MAN:"ssdp:discover"
ST:upnp:rootdevice
MX:3
USER-AGENT: unix/5.1 UPnP/1.0 testdlna/1.0
(Спецификация upnp)
В течении где-то 3-х секунд устройства в сети должны ответить и сообщить о своём существовании.
Где в заголовках ответа мы можем узнать их LOCATION - ссылку на xml с описанием устройства и его сервисов (типа может проигрывать файлы и проч). А также заодно и узнать по какому порту он в данный момент работает.
Сходив по этой ссылке узнаём всё о сервисах и какие параметры нужно передавать, чтобы отдавать команды.
В нашем случае, используется только сервис "AVTransport", который как раз отвечает за удалённую установку ссылки и команды Stop, Play, GetCurrentPosition или типа того.
Теперь при общении с устройством в заголовках запроса добавляем поле "SOAPACTION" с указанием сервиса и команды.
Также передаём дополнительную информацию в виде XML, где указывает параметры в зависимости от команды.
В случае указания файла, который ему нужно проиграть, также добавляется DIDL-Lite сообщение в формате xml, где описываются формат(ы) файла(ов) передаваемые телеку - его MIME-тип, имя, длительность, размер и проч.
Поэтому для начала посылается широковещательный UDP запрос в локальную сеть по адресу
239.255.255.250:1900 с определёнными заголовками:
M-SEARCH * HTTP/1.1
HOST:239.255.255.250:1900
MAN:"ssdp:discover"
ST:upnp:rootdevice
MX:3
USER-AGENT: unix/5.1 UPnP/1.0 testdlna/1.0
(Спецификация upnp)
SPOILERSPOILER_SHOW
В течении где-то 3-х секунд устройства в сети должны ответить и сообщить о своём существовании.
Где в заголовках ответа мы можем узнать их LOCATION - ссылку на xml с описанием устройства и его сервисов (типа может проигрывать файлы и проч). А также заодно и узнать по какому порту он в данный момент работает.
Сходив по этой ссылке узнаём всё о сервисах и какие параметры нужно передавать, чтобы отдавать команды.
В нашем случае, используется только сервис "AVTransport", который как раз отвечает за удалённую установку ссылки и команды Stop, Play, GetCurrentPosition или типа того.
Теперь при общении с устройством в заголовках запроса добавляем поле "SOAPACTION" с указанием сервиса и команды.
Также передаём дополнительную информацию в виде XML, где указывает параметры в зависимости от команды.
В случае указания файла, который ему нужно проиграть, также добавляется DIDL-Lite сообщение в формате xml, где описываются формат(ы) файла(ов) передаваемые телеку - его MIME-тип, имя, длительность, размер и проч.
примеры серверов на php
https://github.com/jalder/FuelPHP_UPnP
https://github.com/jalder/UPnP
https://github.com/ttyridal/phpdlna
спецификация протокола