Некоторые приложениями на андройд отправляют поток на телевизор. Для MD идеально бы подошел php dnla сервер. В теме viewtopic.php?f=5&t=4024 мы уже пытались поднять этот вопрос, но пока безуспешно. Пишут, что не все устройства можно подключить. Если честно, я взываю сообщество к помощи, так как сам пока не осилил.
Также в сети есть приложения под WIN (https://hms.lostcut.net/viewtopic.php?id=119 , https://github.com/WendyH/testdlna), которое позволяет отправить dnla плееру ссылку на поток.
Копипаст
Поэтому для начала посылается широковещательный 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-тип, имя, длительность, размер и проч.
примеры серверов на php
https://github.com/jalder/FuelPHP_UPnP
https://github.com/jalder/UPnP
https://github.com/ttyridal/phpdlna
спецификация протокола