DNLA SHARE вывод контента на SMART телевизоры

Всё, что не подходит под вышеперечисленные разделы

Модератор: immortal

directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

DNLA SHARE вывод контента на SMART телевизоры

Сообщение directman66 » Пн июн 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 плееру ссылку на поток.
Копипаст
СпойлерПоказать
Т.к. при включении устройства оно в сети создаёт свой 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)
СпойлерПоказать
UPnP-av-ContentDirectory-v1-Service.pdf
(1.11 МБ) 301 скачивание

В течении где-то 3-х секунд устройства в сети должны ответить и сообщить о своём существовании.
Где в заголовках ответа мы можем узнать их LOCATION - ссылку на xml с описанием устройства и его сервисов (типа может проигрывать файлы и проч). А также заодно и узнать по какому порту он в данный момент работает.

Сходив по этой ссылке узнаём всё о сервисах и какие параметры нужно передавать, чтобы отдавать команды.

В нашем случае, используется только сервис "AVTransport", который как раз отвечает за удалённую установку ссылки и команды Stop, Play, GetCurrentPosition или типа того.

Теперь при общении с устройством в заголовках запроса добавляем поле "SOAPACTION" с указанием сервиса и команды.
Также передаём дополнительную информацию в виде XML, где указывает параметры в зависимости от команды.
В случае указания файла, который ему нужно проиграть, также добавляется DIDL-Lite сообщение в формате xml, где описываются формат(ы) файла(ов) передаваемые телеку - его MIME-тип, имя, длительность, размер и проч.
приложения для 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

спецификация протокола
UPnP-av-ContentDirectory-v1-Service.pdf
(1.11 МБ) 301 скачивание
Последний раз редактировалось directman66 Чт фев 15, 2018 8:25 am, всего редактировалось 2 раза.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
ngservis
Сообщения: 92
Зарегистрирован: Ср ноя 19, 2014 4:15 pm
Откуда: Альметьевск
Благодарил (а): 7 раз
Поблагодарили: 4 раза

Re: вывод уведомлений на удаленные телевизоры (DNLA, upnp)

Сообщение ngservis » Вт июн 27, 2017 9:18 am

Не проще ли на роутер оставить кастомные прошивки с готовым сервером dlna и уже готовым плэйлистом каналов и мультимедиа ,и не грузить сервер MD лишней информацией? А для передачи с устройств андроид использовать готовые HDMI ТВ stick DLNA , которые продают на алиэспрессе от 700-800 руб.

Отправлено с моего X5max_PRO через Tapatalk
Rasberry PI + arduino mega 2560
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

Re: вывод уведомлений на удаленные телевизоры (DNLA, upnp)

Сообщение skysilver » Вт июн 27, 2017 10:22 am

А мне вот всегда интересно как это на практике применить? Какие реальные полезные сценарии можно реализовать? Какой тайный смысл использовать ТВ как терминал? Большую часть времени он выключен. А когда включен, то я бы не хотел, чтобы мой просмотр прерывал умный дом своими уведомлениями.
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Аватара пользователя
lanket
Сообщения: 1168
Зарегистрирован: Вт окт 14, 2014 11:27 pm
Откуда: Санкт-Петербург
Благодарил (а): 260 раз
Поблагодарили: 163 раза

Re: вывод уведомлений на удаленные телевизоры (DNLA, upnp)

Сообщение lanket » Вт июн 27, 2017 11:50 am

skysilver писал(а):А мне вот всегда интересно как это на практике применить? Какие реальные полезные сценарии можно реализовать? Какой тайный смысл использовать ТВ как терминал? Большую часть времени он выключен. А когда включен, то я бы не хотел, чтобы мой просмотр прерывал умный дом своими уведомлениями.
У меня за счёт модуля уведомлений kodi очень выручают. За что отдельное спасибо автору, помоему это многоуважаемый nick7zmail.
Села батарея у телефона а у тебя на экране меседж. Сыну пора спать, его Алиса уведомляет за 15, 5 минут и что уже пора идти спать. Думаю ещё и вырубить телек можно с помощью DNLA чтобы не игнарировал.
Лично мне очень удобно.

Отправлено с моего Redmi Note 3 через Tapatalk
Разработка голосового асистента для Мажордомо по любому ключевому слову.
:arrow: Обсужение
:arrow: gitHub 2й версии терминала
:arrow: GitHub модуля для МД
gitHub сырого модуля 2й версии
:arrow: Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: вывод уведомлений на удаленные телевизоры (DNLA, upnp)

Сообщение directman66 » Вт июн 27, 2017 3:20 pm

также одним из сценариев может быть включением мультика ребенку по расписанию.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: вывод уведомлений на удаленные телевизоры (DNLA, upnp)

Сообщение directman66 » Пн ноя 27, 2017 8:26 pm

Темя моя ушла куда-то далеко и видимо народ просто не понял о чем речь.

Друзья, DLNA шаринг позволяет открывать телевизору любые внешние ссылки, в том числе и из открытого интернета. Это очень интересное развитие направления для уведомления о чем - нибудь или просто включения контента, прослушивания музыки и т.д. Причем разобравшись, нет необходимости что-то дополнительно приобретать. Телевизоры SMART есть уже у большинства.

Я так понимаю суть надо разделить:

1) Послать широковещательный пакет UPD в локальную сеть по адресу
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

2)Прослушать ответы
3) Если ответ телевизора, то определить порт, по которому он ждет команды
4) Что-то отправить телевизору )


похоже тут уже готовое решение https://github.com/artheus/PHP-UPnP/blo ... .class.php
другой похожий код https://github.com/T-REX-XP/UPnP/blob/m ... c/Core.php (Этот код нашего одногруппника, уже потом понял)

но сходу почему-то не взлетает
Последний раз редактировалось directman66 Пн ноя 27, 2017 10:55 pm, всего редактировалось 1 раз.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: DNLA SHARE вывод контента на SMART телевизоры

Сообщение directman66 » Пн ноя 27, 2017 10:14 pm

Пока удалось получить список устройств upnp (уже результат!!!)

Взято отсюда https://fossies.org/linux/ampache/upnp/find.php
СпойлерПоказать

Код: Выделить всё

error_reporting(E_ALL);
ini_set('display_errors', 1);

class UPnPFind
{
    /**
     * Find devices by UPnP multicast message and stores them to cache
     *
     * @return array  Parsed device list
     */
    public static function findDevices()
    {
        $discover = self::discover(10);

        return($discover); //!!

        /*
        $devices = array();
        flush();
        foreach ($discover as $response) {

            $device = new Device();
            if ($device->initByDiscoveryReponse($response)) {

                $device->saveToCache();

                try {
                    $client = $device->getClient('ConnectionManager');
                    $protocolInfo = $client->call('GetProtocolInfo');

                    $sink = $protocolInfo['Sink'];
                    $tmp = explode(',', $sink);

                    $protocols = array();

                    foreach ($tmp as $protocol) {
                        $t = explode(':', $protocol);
                        if ($t[0] == 'http-get') {
                            $protocols[] = $t[2];
                        }
                    }
                } catch (UPnPException $upnpe) {
                    $protocols = array();
                }

                $device->protocolInfo = $protocols;

                $cache[$device->getId()] = array(
                    'name' => $device->getName(),
                    'services' => $device->getServices(),
                    'icons' => $device->getIcons(),
                    'protocols' => $device->getProtocolInfo()
                );
            }
        }

        return $cache;
        */
    }

    /**
     * Performs a standardized UPnP multicast request to 239.255.255.250:1900
     * and listens $timeout seconds for responses
     *
     * Thanks to artheus (https://github.com/artheus/PHP-UPnP/blob/master/phpupnp.class.php)
     *
     * @param int $timeout Timeout to wait for responses
     *
     * @return array  Response
     */
    private static function discover($timeout = 2)
    {
        $msg  = 'M-SEARCH * HTTP/1.1' . "\r\n";
        $msg .= 'HOST: 239.255.255.250:1900' . "\r\n";
        $msg .= 'MAN: "ssdp:discover"' . "\r\n";
        $msg .= "MX: 3\r\n";
        $msg .= "ST: upnp:rootdevice\r\n";
        $msg .= '' . "\r\n";

        $socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
        socket_set_option($socket, SOL_SOCKET, SO_BROADCAST, 1);
        socket_sendto($socket, $msg, strlen($msg), 0, '239.255.255.250', 1900);

        socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec' => $timeout, 'usec' => 0));

        $response = array();
        do {
            $buf = null;
            @socket_recvfrom($socket, $buf, 1024, MSG_WAITALL, $from, $port);

            if (!is_null($buf)) {
                $response[] = self::discoveryReponse2Array($buf);
            }
        } while (!is_null($buf));
        //socket_close($socket);

        return $response;
    }

    /**
     * Transforms discovery response string to key/value array
     *
     * @param string $res discovery response
     *
     * @return \stdObj
     */
    private static function discoveryReponse2Array($res)
    {
        $result = array();
        $lines  = explode("\n", trim($res));

        if (trim($lines[0]) == 'HTTP/1.1 200 OK') {
            array_shift($lines);
        }

        foreach ($lines as $line) {
echo '<br>';         
            $tmp = explode(':', trim($line));

            $key   = strtoupper(array_shift($tmp));
            $value = (count($tmp) > 0 ? trim(join(':', $tmp)) : null);

            $result[$key] = $value;
         echo $value;
        }

        return (Object)$result;
    }
}


$devices = UPnPFind::findDevices();
//echo $devices;

 
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: DNLA SHARE вывод контента на SMART телевизоры

Сообщение directman66 » Вс фев 11, 2018 11:05 pm

По сути надо просто переписать код промежуточный итог:
СпойлерПоказать

Код: Выделить всё

//error_reporting(E_ALL);
//ini_set('display_errors', 1);

$timeout=2;
        $msg  = 'M-SEARCH * HTTP/1.1' . "\r\n";
        $msg .= 'HOST: 239.255.255.250:1900' . "\r\n";
        $msg .= 'MAN: "ssdp:discover"' . "\r\n";
        $msg .= "MX: 3\r\n";
        $msg .= "ST: upnp:rootdevice\r\n";
        $msg .= '' . "\r\n";

        $socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
        socket_set_option($socket, SOL_SOCKET, SO_BROADCAST, 1);
        socket_sendto($socket, $msg, strlen($msg), 0, '239.255.255.250', 1900);

        socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec' => $timeout, 'usec' => 0));

        $response = array();
        do {
            $buf = null;
            @socket_recvfrom($socket, $buf, 1024, MSG_WAITALL, $from, $port);

            if (!is_null($buf)) {
//echo  $buf."<br>";
                $response[] = discoveryReponse2Array($buf);
            }
        } while (!is_null($buf));
        socket_close($socket);
echo "<br>------------------<br>";
print_r($response);
echo "<br>------------------<br>";
echo "<br>------------------<br>";
foreach ($response as $obj)
{
$usn=$obj[USN];
$CACHECONTROL=$obj['CACHE-CONTROL']; 
$DATE=$obj[DATE];
$LOCATION=$obj[LOCATION];
$SERVER=$obj[SERVER];
$ST=$obj[ST]; 
$NLS=$obj['01-NLS']; 
$boot=$obj['BOOTID.UPNP.ORG']; 
$conf=$obj['CONFIGID.UPNP.ORG']; 
$xuser=$obj['X-USER-AGENT'];  
$ext=$obj[EXT];
$opt=$obj[OPT]; 
 
 
 
 

 
 $obj=explode (":",$usn);
 print_r($obj);
$objn=$obj[1]; 
echo '<br>$objn:'.$objn.'<br>';
addClassObject('dnla',$objn); 
sg($objn.".USN",$usn);
sg($objn.".CACHECONTROL",$CACHECONTROL);
sg($objn.".LOCATION",$LOCATION);
sg($objn.".SERVER",$SERVER);
sg($objn.".NLS",$NLS);
sg($objn.".EXT",$ext); 
sg($objn.".OPT",$opt);  
sg($objn.".BOOTIDUPNPORG",$boot); 
sg($objn.".CONFIGIDUPNPORG",$conf); 
sg($objn.".XUSERAGENT",$xuser);  
sg($objn.".DATE",$DATE);   
sg($objn.".ST",$ST);  

 
//SQLUpdate('objects', array("ID"=>$this->id, "DESCRIPTION"=>$SERVER);  
//echo "id:".get_id($objn);
 
SQLUpdate('objects', array("ID"=>get_id($objn), "DESCRIPTION"=>$SERVER));   
 
//if ($prop=='0' ) echo 'name:'.$NAME."<br>"; 
//скачиваем LOCATION
$url=$LOCATION;
$answ=file_get_contents($url);
sg($objn.".LOCATIONXML",$answ); 
 
 
echo "**<br>"; 
}



   
//////////////////////////////   
//////////////////////////////   
//////////////////////////////   
//////////////////////////////


function discoveryReponse2Array($res)
    {
        $result = array();
        $lines  = explode("\n", trim($res));

        if (trim($lines[0]) == 'HTTP/1.1 200 OK') {
            array_shift($lines);
        }

        foreach ($lines as $line) {
            $tmp = explode(':', trim($line));
            $key   = strtoupper(array_shift($tmp));
            $value = (count($tmp) > 0 ? trim(join(':', $tmp)) : null);
            $result[$key] = $value;
        }

//        return (Object)$result;
         return $result;
    }

function get_id($prop)
{
$sql='SELECT id   FROM `objects`  WHERE TITLE ="'.$prop.'"';
$rec = SQLSelect($sql); 
return $rec[0][id];
}
Что работает:
1) создание списка устройств upnp
2) добавление новых объектов в класс DNLA и заполнение его характеристик
3) скачивание LOCATION файла и запись его в свойство LOCATIONXML

Что требуется:
4) Поиск протокола AVTransport
5) Передача команды управления

Нашел интереснй проект, там почти все, что нужно уже есть. https://github.com/DjMomo/sonos/blob/ma ... .class.php
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: DNLA SHARE вывод контента на SMART телевизоры

Сообщение directman66 » Вт фев 13, 2018 10:56 am

В общем удалось проснифить запросы, которые отдает приложение BubbleUPnP. Очень кстати познавательно.
СпойлерПоказать

Код: Выделить всё

POST /AVTransport/9732d18b-48f1-7f50-2b02-463b0f37e9a7/control.xml HTTP/1.1
Soapaction: "urn:schemas-upnp-org:service:AVTransport:1#GetTransportInfo"
Content-type: text/xml;charset=utf-8
Content-Length: 329
Host: 192.168.1.97:1359
Connection: Keep-Alive
User-Agent: Android/6.0.1 UPnP/1.0 BubbleUPnP/2.9.1

<?xml version="1.0" encoding="utf-8" standalone="yes"?><s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><u:GetTransportInfo xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID></u:GetTransportInfo></s:Body></s:Envelope>HTTP/1.1 200 OK
Ext: 
Date: Mon, 12 Feb 2018 20:26:56 GMT
Server: Linux/i686 UPnP/1.0 DLNADOC/1.50 LGE_DLNA_SDK/04.28.14
DLNADeviceName.lge.com: %5bTV%5d%5bLG%5d47LA662
Content-Length: 445
Content-Type: text/xml; charset="utf-8"

<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><u:GetTransportInfoResponse xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><CurrentTransportState>TRANSITIONING</CurrentTransportState><CurrentTransportStatus>OK</CurrentTransportStatus><CurrentSpeed>1</CurrentSpeed></u:GetTransportInfoResponse></s:Body></s:Envelope>POST /AVTransport/9732d18b-48f1-7f50-2b02-463b0f37e9a7/control.xml HTTP/1.1
Soapaction: "urn:schemas-upnp-org:service:AVTransport:1#GetPositionInfo"
Content-type: text/xml;charset=utf-8
Content-Length: 327
Host: 192.168.1.97:1359
Connection: Keep-Alive
User-Agent: Android/6.0.1 UPnP/1.0 BubbleUPnP/2.9.1

<?xml version="1.0" encoding="utf-8" standalone="yes"?><s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><u:GetPositionInfo xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID></u:GetPositionInfo></s:Body></s:Envelope>HTTP/1.1 200 OK
Ext: 
Date: Mon, 12 Feb 2018 20:26:56 GMT
Server: Linux/i686 UPnP/1.0 DLNADOC/1.50 LGE_DLNA_SDK/04.28.14
DLNADeviceName.lge.com: %5bTV%5d%5bLG%5d47LA662
Content-Length: 1778
Content-Type: text/xml; charset="utf-8"

<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><u:GetPositionInfoResponse xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><Track>1</Track><TrackDuration>1:54:58</TrackDuration><TrackMetaData><DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/"><item id="01bebf4b306373657d08" parentID="c104054e5a4c8c3c046e" restricted="1"><dc:title>American Made (2017)</dc:title><dc:creator>Doug Liman</dc:creator><dc:date>2017-08-17T00:00:00Z</dc:date><upnp:artist>Doug Liman</upnp:artist><upnp:actor>Doug Liman</upnp:actor><upnp:author>Doug Liman</upnp:author><upnp:genre>боевик; комедия; криминал; история</upnp:genre><upnp:albumArtURI>http://192.168.1.31:32469/proxy/cb337220f78068f6a959/albumart.jpg</upnp:albumArtURI><res duration="1:54:58" size="10799641557" resolution="1920x1036" bitrate="1565375" nrAudioChannels="6" protocolInfo="http-get:*:video/x-matroska:DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01500000000000000000000000000000">http://192.168.1.31:32469/object/01bebf4b306373657d08/file.mkv</res><upnp:class>object.item.videoItem</upnp:class></item></DIDL-Lite></TrackMetaData><TrackURI>http://192.168.1.31:32469/object/01bebf4b306373657d08/file.mkv</TrackURI><RelTime>00:00:00</RelTime><AbsTime>NOT_IMPLEMENTED</AbsTime><RelCount>-1</RelCount><AbsCount>0</AbsCount></u:GetPositionInfoResponse></s:Body></s:Envelope>POST /AVTransport/9732d18b-48f1-7f50-2b02-463b0f37e9a7/control.xml HTTP/1.1
Soapaction: "urn:schemas-upnp-org:service:AVTransport:1#GetPositionInfo"
Content-type: text/xml;charset=utf-8
Content-Length: 327
Host: 192.168.1.97:1359
Connection: Keep-Alive
User-Agent: Android/6.0.1 UPnP/1.0 BubbleUPnP/2.9.1

<?xml version="1.0" encoding="utf-8" standalone="yes"?><s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><u:GetPositionInfo xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID></u:GetPositionInfo></s:Body></s:Envelope>HTTP/1.1 200 OK
Ext: 
Date: Mon, 12 Feb 2018 20:26:57 GMT
Server: Linux/i686 UPnP/1.0 DLNADOC/1.50 LGE_DLNA_SDK/04.28.14
DLNADeviceName.lge.com: %5bTV%5d%5bLG%5d47LA662
Content-Length: 1778
Content-Type: text/xml; charset="utf-8"

<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><u:GetPositionInfoResponse xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><Track>1</Track><TrackDuration>1:54:58</TrackDuration><TrackMetaData><DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/"><item id="01bebf4b306373657d08" parentID="c104054e5a4c8c3c046e" restricted="1"><dc:title>American Made (2017)</dc:title><dc:creator>Doug Liman</dc:creator><dc:date>2017-08-17T00:00:00Z</dc:date><upnp:artist>Doug Liman</upnp:artist><upnp:actor>Doug Liman</upnp:actor><upnp:author>Doug Liman</upnp:author><upnp:genre>боевик; комедия; криминал; история</upnp:genre><upnp:albumArtURI>http://192.168.1.31:32469/proxy/cb337220f78068f6a959/albumart.jpg</upnp:albumArtURI><res duration="1:54:58" size="10799641557" resolution="1920x1036" bitrate="1565375" nrAudioChannels="6" protocolInfo="http-get:*:video/x-matroska:DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01500000000000000000000000000000">http://192.168.1.31:32469/object/01bebf4b306373657d08/file.mkv</res><upnp:class>object.item.videoItem</upnp:class></item></DIDL-Lite></TrackMetaData><TrackURI>http://192.168.1.31:32469/object/01bebf4b306373657d08/file.mkv</TrackURI><RelTime>00:00:00</RelTime><AbsTime>NOT_IMPLEMENTED</AbsTime><RelCount>-1</RelCount><AbsCount>0</AbsCount></u:GetPositionInfoResponse></s:Body></s:Envelope>
Пытаюсь для начала сэумулировать команду stop
СпойлерПоказать

Код: Выделить всё

$url = 'http://192.168.1.41:1359'; // ссылка, по которой нам надо зайти
// задаём поля, которые будут отправлены при логине     

  $fields_string =
     '/AVTransport/9732d18b-48f1-7f50-2b02-463b0f37e9a7/control.xml HTTP/1.1'. "\r\n".
    'Content-type: text/xml;charset=utf-8'. "\r\n".
    'Content-Length: 305'. "\r\n".
    'Host: 192.168.1.97:1359'. "\r\n".
    'User-Agent: Android/6.0.1 UPnP/1.0 BubbleUPnP/2.9.1'. "\r\n".
     '<?xml version="1.0" encoding="utf-8" standalone="yes"?><s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><u:Stop xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID></u:Stop></s:Body></s:Envelope>'
      ;


echo $fields_string;
$host="192.168.1.97";
$port=1359;
   $socket = socket_create(AF_INET, SOCK_STREAM, getprotobyname("tcp"));  // Create Socket
      if (socket_connect($socket, $host, $port)) {  //Connect
         
 for ($j = 0; $j <count ($fields_string); $j++) {
socket_write ($socket,  ( ($fields_string[$j])));   // by group data transmission
 }
 }



      
     
//echo "<br>------------------<br>";
//print_r($response);
уже пробовал разные варианты работы с сокетом, но не на один не реагирует.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: DNLA SHARE вывод контента на SMART телевизоры

Сообщение nick7zmail » Вт фев 13, 2018 11:03 am

Хах))) снова подняли старую тему...https://majordomo.smartliving.ru/forum/ ... hilit=dlna
Там даже экспорт класса МД есть, в котором, вроде, работали функции.
Единственное на колонку broadlink команды stop/play и тп не работали. Но они не работали и через тот же home media server. Телек вроде реагировал на них.

Вот тут подробный мануал использования написан https://majordomo.smartliving.ru/forum/ ... 297#p52297
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Ответить