DNLA SHARE вывод контента на SMART телевизоры
Модератор: immortal
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: DNLA SHARE вывод контента на SMART телевизоры
directman66 подскажи, я правильно понял, что модуль начинать надо отсюда
https://majordomo.smartliving.ru/forum/ ... 045#p72045
?
Этот скрипт все устройства корректно ищет? Или ещё какие есть варианты?
[USN] => uuid - уникальный для девайсов, и не меняется, правильно?
https://majordomo.smartliving.ru/forum/ ... 045#p72045
?
Этот скрипт все устройства корректно ищет? Или ещё какие есть варианты?
[USN] => uuid - уникальный для девайсов, и не меняется, правильно?
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
- Сообщения: 2801
- Зарегистрирован: Пн дек 26, 2016 9:51 am
- Откуда: Екатеринбург
- Благодарил (а): 380 раз
- Поблагодарили: 694 раза
- Контактная информация:
Re: DNLA SHARE вывод контента на SMART телевизоры
Я полагаю начинать надо аналогично с поиска устройств. Скрипт находит устройства, которые видимо указаны в широковещательом запросе. Например колонки гугл и приставки маг250 на этот запрос не ответили. Для их поиска есть другой алгоритм. Для них тоже надо будет оставить место на будущее.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
-
- Сообщения: 2801
- Зарегистрирован: Пн дек 26, 2016 9:51 am
- Откуда: Екатеринбург
- Благодарил (а): 380 раз
- Поблагодарили: 694 раза
- Контактная информация:
Re: DNLA SHARE вывод контента на SMART телевизоры
USN еще не разу не менялся у меня.nick7zmail писал(а): [USN] => uuid - уникальный для девайсов, и не меняется, правильно?
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
-
- Сообщения: 174
- Зарегистрирован: Вт июн 16, 2015 10:54 pm
- Благодарил (а): 16 раз
- Поблагодарили: 32 раза
Re: DNLA SHARE вывод контента на SMART телевизоры
я уже писал модель поиска устройств, можете заюзать его. https://majordomo.smartliving.ru/forum/ ... hilit=ssdp
-
- Сообщения: 2801
- Зарегистрирован: Пн дек 26, 2016 9:51 am
- Откуда: Екатеринбург
- Благодарил (а): 380 раз
- Поблагодарили: 694 раза
- Контактная информация:
Re: DNLA SHARE вывод контента на SMART телевизоры
Хрена себе, я не видел. Оказывается есть уже и заготовка модуля!
Думаю можно и его использовать! Установил, не одного устройства в сети не обнаружил. Хотя у меня их
Добавил обработчик ютуб ссылки
Думаю можно и его использовать! Установил, не одного устройства в сети не обнаружил. Хотя у меня их
СпойлерПоказать
СпойлерПоказать
Код: Выделить всё
//вызов rs(dnlaplay, array('fn' =>$path);
$fn=$params['fn'];
if ($fn==""){$fn="http://192.168.1.31:32469/object/df4b8e517919aa1f643c/file.mkv";}
if (strpos($fn,'youtube')>1) {
echo "передана ссылка на ютуб ".$fn."<br>";
//$pattern = "\=(.+?)\\";
//$pattern = "\S{0,}~v=(.+?)&|$";
//$pattern = "/v=(.*)";
//"/My name is '(.*)' and im fine/"
// $res=preg_match ($pattern, $fn);
$res1=parse_url($fn, PHP_URL_QUERY);
// echo $res1."<br>";
$res2=parse_str( $res1,$res);
$res=$res['v'];
//echo $res."<br>";
$newurl='https://hms.lostcut.net/youtube/g.php?v='.$res.'&link_only=1';
//echo $newurl."<br>";
$fn=file_get_contents($newurl);
echo $fn."<br>";
}
$luts=gg("9732d18b-48f1-7f50-2b02-463b0f37e9a7.timestamp");
$diff=(gmdate('i',trim(time()-$luts)));
$pattern = "|\b[0]+([1-9][\d]*)|is";
$diff2= preg_replace($pattern, "\\1", $diff);
echo "Информация была обновлена " .$diff2 . " минут назад.";
if ($diff2>60) { echo "Запускаю обновление данных!"; rs('dnlasearch');}
$url=gg('9732d18b-48f1-7f50-2b02-463b0f37e9a7.LOCATION');
//$host=str_replace('/','',explode(":",$url)[1]);
$host="192.168.1.41";
$port=str_replace('/','',explode(":",$url)[2]);
$controlURL=gg('9732d18b-48f1-7f50-2b02-463b0f37e9a7.controlURL');
echo 'host:'.$host."<br>";
echo 'port:'.$port."<br>";
echo 'controlURL:'.$controlURL."<br>";
//command:
//SetAVTransportURI
//Stop
//Play
//AVTransport
///AVTransport/9732d18b-48f1-7f50-2b02-463b0f37e9a7/control.xml
echo 'Stop<br>';
//Stop
$xml = '<?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>
';
$asnw=sendpacket($host,$port,$controlURL,'Stop', $xml);
echo $asnw;
echo 'SetAVTransportURI<br>' ;
sleep(1);
//SetAVTransportURI
$xml = '<?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:SetAVTransportURI xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID><CurrentURI>http://192.168.1.31:32469/object/df4b8e517919aa1f643c/file.mkv</CurrentURI><CurrentURIMetaData><DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" xmlns:sec="http://www.sec.co.kr/" xmlns:pv="http://www.pv.com/pvns/"><item id="df4b8e517919aa1f643c" parentID="c104054e5a4c8c3c046e" restricted="1"><upnp:class>object.item.videoItem</upnp:class><dc:title>Aritmija Web Dl</dc:title><dc:creator>Unknown</dc:creator><upnp:artist>Unknown</upnp:artist><upnp:albumArtURI>http://192.168.1.31:32469/proxy/c9ccea0d9cf75f43c34b/albumart.jpg</upnp:albumArtURI><upnp:genre>Unknown</upnp:genre><res protocolInfo="http-get:*:video/x-matroska:DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01500000000000000000000000000000" bitrate="692000" nrAudioChannels="6" size="4810724267" resolution="1920x1038" duration="1:55:52.000">'.$fn.'</res></item></DIDL-Lite></CurrentURIMetaData></u:SetAVTransportURI></s:Body></s:Envelope>
';
$asnw=sendpacket($host,$port,$controlURL,'SetAVTransportURI', $xml);
echo $asnw;
echo 'Play<br>';
sleep(1);
//Play
$xml= '<?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:Play xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID><Speed>1</Speed></u:Play></s:Body></s:Envelope>
';
$asnw=sendpacket($host,$port,$controlURL,'Play', $xml);
echo $asnw;
function sendpacket($host,$port,$AVTransport, $command, $xml){
///play
$body=$xml;
$headers = 'POST '.$AVTransport.' HTTP/1.1
Soapaction: "urn:schemas-upnp-org:service:AVTransport:1#'.$command.'"
CONTENT-TYPE: text/xml; charset="utf-8"
HOST: '.$host.':'.$port;
$content=$headers . '
Content-Length: '. strlen($body) .'
'. $body;
echo $host.":". $port;
$fp = fsockopen($host, $port , $errno, $errstr, 10);
if (!$fp)
{echo "Error opening socket: ".$errstr." (".$errno.")<br>";} else
{
$ret = "";
$buffer = "";
// fputs ($fp, $content);
// while (!feof($fp)) {
// $buffer = fgets($fp,128);
// echo "\n;" . $buffer . ";\n";
// $ret.= $buffer;
fwrite($fp, $content);
//while (!feof($fp)) {
//$buffer = fgets($fp,128);
//echo fgets($fp, 128);
//$ret.= $buffer;
// }
fclose($fp);
}
// echo "\n\nReturn:" . $ret . "!!\n";
fclose($fp);
return $ret;
}
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
-
- Сообщения: 2801
- Зарегистрирован: Пн дек 26, 2016 9:51 am
- Откуда: Екатеринбург
- Благодарил (а): 380 раз
- Поблагодарили: 694 раза
- Контактная информация:
Re: DNLA SHARE вывод контента на SMART телевизоры
Добавил пункт в концепцию.directman66 писал(а):Да, я старался избавиться от всех лишних библиотек. Надо поэксперементировать с xml файлом. Он от форматов видео меняетсяnick7zmail писал(а):Дак это получается вообще без сторонних библиотек сделано? Чисто кодом? А то я начал просматривать что для модуля надо - так и не понял особо. Ссылок нигде никаких нет))И еще картинка обложки передается. Нужны ли они - это еще вопрос. Нужно эксперементировать. Да и модуль нужен это точно!Код: Выделить всё
bitrate="692000" nrAudioChannels="6" size="4810724267" resolution="1920x1038" duration="1:55:52.000"&
Заметил, что порт AVTransport меняется при включении телевизора, поэтому если обновление данных по устройству было давно, нужно обновить параметры.
Мне кажется в модуле должно быть:
1) Список устройств с определением типа (модель телевизора , модель колонки или ресивера (Google Home, Echo dot...), название медиаприставкии (MAG245/250, wr320, китайские свистки, chromecast.. ). Поиск видимо придется осуществлять несколькими алгоритмами (DIAL, M-SEARCH, HTTP REST....)
2) В зависимости от типа устройства должен меняться протокол взаимодействия.
3) Привязка к HOOK SAY для колонок (чтобы Алиса на нее вещала свои сообщения)
4) Если файл лежит где-то локально, для его воспроизведения нужно поднимать web сервер или dnla. Как вариант можно попробовать использовать виртуальный хост apache2. Если файл лежит в сети по протоколам samba или ftp - пока мне не понятно что делать.
В статье из 1 поста ( https://hms.lostcut.net/viewtopic.php?id=119 ) в исходниках чувак как раз таки поднимает простенький simple server и по нему отдает поток. В принципе примеров реализации на php полно. Думаю легко решаемо.
5) Отправка ссылки приложению Youtube на телевизоре.
6) Раскурить что за TTS используют аналогичные проекты (для google home, Alexa). В какомто коде на джите видел использование движка гугл переводчика для проговаривания текста.
7) Сделать upnp сканер ресурсов домашней сети, чтобы была БД домашнего контента, который можно отправить на телевизор/Cast устройство.
8) Организовать поиск ютуб ссылки (например на запрос Дудь алгоритм должен вернуть https://www.youtube.com/watch?v=SPauxWv1Rnk,который мы уже преобразуем в
https://r1---sn-pouxga5o-vu2l.googlevid ... mm=31%2C29
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
-
- Сообщения: 174
- Зарегистрирован: Вт июн 16, 2015 10:54 pm
- Благодарил (а): 16 раз
- Поблагодарили: 32 раза
Re: DNLA SHARE вывод контента на SMART телевизоры
только что развернул образ для Rpi3, проверил модуль. все обнаруживает нормально.
СпойлерПоказать
-
- Сообщения: 178
- Зарегистрирован: Вс янв 05, 2014 5:37 am
- Благодарил (а): 10 раз
- Поблагодарили: 17 раз
Re: DNLA SHARE вывод контента на SMART телевизоры
Привет всем, интересная тема. Но у меня один вопрос. При запуске сам клиент dlna на тв надо запускать. И еще при попытке запуска скрипта вышла вот такая ошибка
СпойлерПоказать
https://r2---sn-pouxga5o-vu2l.googlevid ... 1518857486
Информация была обновлена 6 минут назад.host:192.168.1.187
port:1984
controlURL:/RenderingControl/ac4d0a1a-645a-b801-6312-20adfbf8270c/control.xml
Stop
192.168.1.187:1984
Warning: fsockopen(): in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(142) : eval()'d code on line 86
Error opening socket: ������� ���������� ���������� ���� �����������, �.�. �� ������� ���������� �� ��������� ����� �� ������� ������ ������, ��� ���� ��������� ��� ������������� ���������� ��-�� ��������� ������� ��� ������������� ����������. (10060)
Warning: fclose() expects parameter 1 to be resource, boolean given in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(142) : eval()'d code on line 110
SetAVTransportURI
192.168.1.187:1984
Warning: fsockopen(): in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(142) : eval()'d code on line 86
Error opening socket: ������� ���������� ���������� ���� �����������, �.�. �� ������� ���������� �� ��������� ����� �� ������� ������ ������, ��� ���� ��������� ��� ������������� ���������� ��-�� ��������� ������� ��� ������������� ����������. (10060)
Warning: fclose() expects parameter 1 to be resource, boolean given in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(142) : eval()'d code on line 110
Play
192.168.1.187:1984
Warning: fsockopen(): in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(142) : eval()'d code on line 86
Error opening socket: ������� ���������� ���������� ���� �����������, �.�. �� ������� ���������� �� ��������� ����� �� ������� ������ ������, ��� ���� ��������� ��� ������������� ���������� ��-�� ��������� ������� ��� ������������� ����������. (10060)
Warning: fclose() expects parameter 1 to be resource, boolean given in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(142) : eval()'d code on line 110
Информация была обновлена 6 минут назад.host:192.168.1.187
port:1984
controlURL:/RenderingControl/ac4d0a1a-645a-b801-6312-20adfbf8270c/control.xml
Stop
192.168.1.187:1984
Warning: fsockopen(): in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(142) : eval()'d code on line 86
Error opening socket: ������� ���������� ���������� ���� �����������, �.�. �� ������� ���������� �� ��������� ����� �� ������� ������ ������, ��� ���� ��������� ��� ������������� ���������� ��-�� ��������� ������� ��� ������������� ����������. (10060)
Warning: fclose() expects parameter 1 to be resource, boolean given in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(142) : eval()'d code on line 110
SetAVTransportURI
192.168.1.187:1984
Warning: fsockopen(): in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(142) : eval()'d code on line 86
Error opening socket: ������� ���������� ���������� ���� �����������, �.�. �� ������� ���������� �� ��������� ����� �� ������� ������ ������, ��� ���� ��������� ��� ������������� ���������� ��-�� ��������� ������� ��� ������������� ����������. (10060)
Warning: fclose() expects parameter 1 to be resource, boolean given in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(142) : eval()'d code on line 110
Play
192.168.1.187:1984
Warning: fsockopen(): in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(142) : eval()'d code on line 86
Error opening socket: ������� ���������� ���������� ���� �����������, �.�. �� ������� ���������� �� ��������� ����� �� ������� ������ ������, ��� ���� ��������� ��� ������������� ���������� ��-�� ��������� ������� ��� ������������� ����������. (10060)
Warning: fclose() expects parameter 1 to be resource, boolean given in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(142) : eval()'d code on line 110
-
- Сообщения: 2801
- Зарегистрирован: Пн дек 26, 2016 9:51 am
- Откуда: Екатеринбург
- Благодарил (а): 380 раз
- Поблагодарили: 694 раза
- Контактная информация:
Re: DNLA SHARE вывод контента на SMART телевизоры
На телевизоре сервис поднимается автоматически при включении. Возможно где-то в настройках требуется включить dnla или upnp. На какой OS у вас MD?alekszander писал(а):Привет всем, интересная тема. Но у меня один вопрос. При запуске сам клиент dlna на тв надо запускать. И еще при попытке запуска скрипта вышла вот такая ошибкаСпойлерПоказатьhttps://r2---sn-pouxga5o-vu2l.googlevid ... 1518857486
Информация была обновлена 6 минут назад.host:192.168.1.187
port:1984
controlURL:/RenderingControl/ac4d0a1a-645a-b801-6312-20adfbf8270c/control.xml
Stop
192.168.1.187:1984
Warning: fsockopen(): in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(142) : eval()'d code on line 86
Error opening socket: ������� ���������� ���������� ���� �����������, �.�. �� ������� ���������� �� ��������� ����� �� ������� ������ ������, ��� ���� ��������� ��� ������������� ���������� ��-�� ��������� ������� ��� ������������� ����������. (10060)
Warning: fclose() expects parameter 1 to be resource, boolean given in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(142) : eval()'d code on line 110
SetAVTransportURI
192.168.1.187:1984
Warning: fsockopen(): in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(142) : eval()'d code on line 86
Error opening socket: ������� ���������� ���������� ���� �����������, �.�. �� ������� ���������� �� ��������� ����� �� ������� ������ ������, ��� ���� ��������� ��� ������������� ���������� ��-�� ��������� ������� ��� ������������� ����������. (10060)
Warning: fclose() expects parameter 1 to be resource, boolean given in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(142) : eval()'d code on line 110
Play
192.168.1.187:1984
Warning: fsockopen(): in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(142) : eval()'d code on line 86
Error opening socket: ������� ���������� ���������� ���� �����������, �.�. �� ������� ���������� �� ��������� ����� �� ������� ������ ������, ��� ���� ��������� ��� ������������� ���������� ��-�� ��������� ������� ��� ������������� ����������. (10060)
Warning: fclose() expects parameter 1 to be resource, boolean given in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(142) : eval()'d code on line 110
Отправлено с моего Redmi Note 3 через Tapatalk
Последний раз редактировалось directman66 Сб фев 17, 2018 8:11 am, всего редактировалось 1 раз.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
-
- Сообщения: 2801
- Зарегистрирован: Пн дек 26, 2016 9:51 am
- Откуда: Екатеринбург
- Благодарил (а): 380 раз
- Поблагодарили: 694 раза
- Контактная информация:
Re: DNLA SHARE вывод контента на SMART телевизоры
может используются какие-то библиотеки, которых у меня нет? Я скопировал с джита modules и templates.T-REX-XP писал(а):только что развернул образ для Rpi3, проверил модуль. все обнаруживает нормально.
СпойлерПоказать
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram