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

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

Модератор: immortal

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

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

Сообщение directman66 » Пт фев 16, 2018 9:07 am

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

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

Сообщение directman66 » Пт фев 16, 2018 9:11 am

directman66 писал(а): Мне кажется в модуле должно быть:
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). В какомто коде на джите видел использование движка гугл переводчика для проговаривания текста.
nick7zmail берешься? Я помогу, чем смогу.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

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

Сообщение nick7zmail » Пт фев 16, 2018 9:15 am

Дак да...попробую...может что и выйдет путного))

Отправлено с моего Xperia XZ1 Compact через Tapatalk
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

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

Сообщение nick7zmail » Пт фев 16, 2018 9:17 am

directman66 писал(а):Но этот вариант из приложения ютуб не катит. Уже нашел решение, добавил в пост! И ведь работает!!
5 пункт модуля почти готов!
А разве трансляции ютуб вообще относятся каким-то боком к Dlna?

Отправлено с моего Xperia XZ1 Compact через Tapatalk
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

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

Сообщение directman66 » Пт фев 16, 2018 9:19 am

nick7zmail писал(а):
directman66 писал(а):Но этот вариант из приложения ютуб не катит. Уже нашел решение, добавил в пост! И ведь работает!!
5 пункт модуля почти готов!
А разве трансляции ютуб вообще относятся каким-то боком к Dlna?

Отправлено с моего Xperia XZ1 Compact через Tapatalk
Если есть такая возможность, почему-бы не воспользоваться. Например говоришь Алисе, включи на телевизоре Машу и Медведь, или например Включи Дудя на Ютубе! В итоге ссылку ютуб мы открываем по протоколу upnp, без приложения для телевизоров, которое постоянно зависает и тормозит. И есть не на всех телевизорах. У меня оно иногда просто висит и не открывается.

Хотелось бы скачать исходники https://hms.lostcut.net/youtube/g.php
Можно ли как это сделать ?

нашел https://github.com/WendyH/HMS-Youtube


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

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

Сообщение directman66 » Пт фев 16, 2018 12:02 pm

Вот эти функции нужно переделать на php https://github.com/WendyH/testdlna/blob ... na/DLNA.cs

Словарь mime устройств:
СпойлерПоказать

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

private static IDictionary<string, string> VideoMIMEmappings = new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase) {
            #region Big freaking list of mime types
            {".3g2" , "video/3gpp"},
            {".3gp" , "video/3gpp"},
            {".3gp2", "video/3gpp2"},
            {".3gpp", "video/3gpp"},
            {".asf" , "video/x-ms-asf"},
            {".asr" , "video/x-ms-asf"},
            {".asx" , "video/x-ms-asf"},
            {".avi" , "video/avi"},
            {".dif" , "video/x-dv"},
            {".divx", "video/avi"},
            {".dvr-ms","video/x-ms-dvr"},
            {".dv"  , "video/x-dv"},
            {".evo" , "video/mpeg"},
            {".flv" , "video/x-flv"},
            {".IVF" , "video/x-ivf"},
            {".lsf" , "video/x-la-asf"},
            {".lsx" , "video/x-la-asf"},
            {".m1v" , "video/mpeg"},
            {".m2t" , "video/vnd.dlna.mpeg-tts"},
            {".m2ts", "video/vnd.dlna.mpeg-tts"},
            {".m2v" , "video/mpeg"},
            {".m4v" , "video/mp4"},
            {".mkv" , "video/x-matroska"},
            {".mod" , "video/mpeg"},
            {".mov" , "video/quicktime"},
            {".movie","video/x-sgi-movie"},
            {".mp2v", "video/mpeg"},
            {".mp4" , "video/mp4"},
            {".mp4v", "video/mp4"},
            {".mpe" , "video/mpeg"},
            {".mpeg", "video/mpeg"},
            {".mpg" , "video/mpeg"},
            {".mpv2", "video/mpeg"},
            {".mqv" , "video/quicktime"},
            {".mts" , "video/vnd.dlna.mpeg-tts"},
            {".ogm" , "video/x-ogm"},
            {".nsc" , "video/x-ms-asf"},
            {".qt"  , "video/quicktime"},
            {".smpg"  , "video/x-mpegurl"},
            {".ssif"  , "video/vnd.dlna.mpeg-tts"},
            {".tp"  , "video/mpeg"},
            {".ts"  , "video/vnd.dlna.mpeg-tts"},
            {".tts" , "video/vnd.dlna.mpeg-tts"},
            {".vbk" , "video/mpeg"},
            {".vob" , "video/mpeg"},
            {".webm" , "video/webm"},
            {".wm"  , "video/x-ms-wm"},
            {".wmp" , "video/x-ms-wmp"},
            {".wmv" , "video/x-ms-wmv"},
            {".wmx" , "video/x-ms-wmx"},
            {".wvx" , "video/x-ms-wvx"},
            {".wtv" , "video/wtv"},
            {".xvid" , "video/avi"},

            {".aac" , "audio/vnd.dlna.adts"},
            {".ac3" , "audio/ac3"},
            {".ADT" , "audio/vnd.dlna.adts"},
            {".ADTS" , "audio/vnd.dlna.adts"},
            {".aif" , "audio/aiff"},
            {".aifc" , "audio/aiff"},
            {".aiff" , "audio/aiff"},
            {".amr" , "audio/amr"},
            {".ape" , "audio/x-ape"},
            {".au" , "audio/basic"},
            {".awb" , "audio/awb"},
            {".cda" , "audio/cda"},
            {".dff" , "audio/x-dff"},
            {".dsf" , "audio/x-dsf"},
            {".dts" , "audio/dts"},
            {".flac" , "audio/x-flac"},
            {".m3u" , "audio/x-mpegurl"},
            {".m4a" , "audio/mp4"},
            {".mid" , "audio/mid"},
            {".midi" , "audio/mid"},
            {".mka" , "audio/x-matroska"},
            {".mp1" , "audio/mpeg"},
            {".mp2" , "audio/mpeg"},
            {".mp3" , "audio/mpeg"},
            {".mpa" , "audio/mpeg"},
            {".rmi" , "audio/mid"},
            {".s16be" , "audio/L16"},
            {".smp3" , "audio/x-mpegurl"},
            {".snd" , "audio/basic"},
            {".wav" , "audio/x-wav"},
            {".wax" , "audio/x-ms-wax"},
            {".wma" , "audio/x-ms-wma"},

            { ".bmp" , "image/bmp"},
            { ".bw" , "image/bw"},
            { ".cel" , "image/cel"},
            { ".cut" , "image/cut"},
            { ".dib" , "image/dib"},
            { ".emf" , "image/emf"},
            { ".eps" , "image/eps"},
            { ".fax" , "image/fax"},
            { ".gif" , "image/gif"},
            { ".icb" , "image/icb"},
            { ".ico" , "image/x-icon"},
            { ".jfif" , "image/jpeg"},
            { ".jpe" , "image/jpeg"},
            { ".jpeg" , "image/jpeg"},
            { ".jpg" , "image/jpeg"},
            { ".jps" , "image/x-jps|image/jpeg"},
            { ".pbm" , "image/pbm"},
            { ".pcc" , "image/pcc"},
            { ".pcd" , "image/pcd"},
            { ".pcx" , "image/pcx"},
            { ".pdd" , "image/pdd"},
            { ".pgm" , "image/pgm"},
            { ".pic" , "image/pic"},
            { ".png" , "image/png"},
            { ".pns" , "iimage/pns|image/png"},
            { ".ppm" , "image/ppm"},
            { ".psd" , "image/psd"},
            { ".psp" , "image/psp"},
            { ".rgb" , "image/rgb"},
            { ".rgba" , "image/rgba"},
            { ".rla" , "image/rla"},
            { ".rle" , "image/rle"},
            { ".rpf" , "image/rpf"},
            { ".scr" , "image/scr"},
            { ".sgi" , "image/sgi"},
            { ".svg" , "image/svg+xml"},
            { ".tga" , "image/tga"},
            { ".tif" , "image/tiff"},
            { ".tiff" , "image/tiff"},
            { ".wdp" , "image/vnd.ms-photo"} 

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

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

private string GetDIDLVideoMetadata(string fileUri, string title, string time, string date, int size = 0, string itemId = "advert", string parentId = "0", int restricted = 1) {
            string mime = (MIMEtype.Length > 0) ? MIMEtype : GetMIMEfromExt(Path.GetExtension(fileUri));
            Console.WriteLine("Установлен MIME-тип файла: " + mime);
            StringBuilder sb = new StringBuilder();
            sb.AppendLine("<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/\">");
            sb.AppendLine("<item id=\"" + itemId + "\" parentID=\"" + parentId + "\" restricted=\"" + restricted + "\">");
            sb.AppendLine("<upnp:storageMedium>UNKNOWN</upnp:storageMedium>");
            sb.AppendLine("<upnp:writeStatus>UNKNOWN</upnp:writeStatus>");
            sb.AppendLine("<dc:title>" + title + "</dc:title>");
            sb.AppendLine("<upnp:class>object.item.videoItem</upnp:class>");
            sb.AppendLine("<dc:date>" + date + "</dc:date>");
            sb.AppendLine("<res protocolInfo=\"http-get:*:" + mime + ":*\" duration=\"" + time + "\" size=\"" + size + "\">" + fileUri + "</res>");
            sb.AppendLine("</item></DIDL-Lite>");
            return sb.ToString(); 

Генерация xml
СпойлерПоказать

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

    private void SetPayload(string parameterName = "", string parameterValue = "", string additionalData = "") {
            StringBuilder sb = new StringBuilder();
            sb.AppendLine("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
            sb.AppendLine("<s:Envelope s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">");
            sb.AppendLine("   <s:Body>");
            sb.AppendLine("      <u:" + SoapCommand + " xmlns:u=\"" + NameSpace + "\">");
            if (SoapService=="AVTransport") sb.AppendLine  ("         <InstanceID>0</InstanceID>");
            if (parameterName .Length > 0 ) sb.AppendFormat("         <" + parameterName + ">{0}</" + parameterName + ">\r\n", parameterValue);
            if (additionalData.Length > 0 ) sb.AppendLine  ("         "  + additionalData);
            sb.AppendLine("      </u:" + SoapCommand + ">");
            sb.AppendLine("   </s:Body>");
            sb.AppendLine("</s:Envelope>");
            RequestPayload = sb.ToString();
        }
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Аватара пользователя
Gelezako
Сообщения: 963
Зарегистрирован: Чт июн 02, 2016 9:33 pm
Благодарил (а): 205 раз
Поблагодарили: 106 раз
Контактная информация:

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

Сообщение Gelezako » Пт фев 16, 2018 2:56 pm

directman66 писал(а): Echo dot добавился?
не, и у меня не dot версия, а полноценная с большими колонками.
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

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

Сообщение directman66 » Пт фев 16, 2018 2:58 pm

Гугл хоум мини тоже не появился. С ними придется отдельно что-то решать.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Аватара пользователя
Gelezako
Сообщения: 963
Зарегистрирован: Чт июн 02, 2016 9:33 pm
Благодарил (а): 205 раз
Поблагодарили: 106 раз
Контактная информация:

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

Сообщение Gelezako » Пт фев 16, 2018 3:12 pm

directman66 писал(а):Гугл хоум мини тоже не появился. С ними придется отдельно что-то решать.
а откуда у тебя информация что Амазон Эко поддерживаеn DNLA или upnp? Я погуглил и не нашёл подтверждение. Но нашёл опровержение в вики :(
It does not appear to be capable of playing music streamed from a local UPnP/DLNA media server.
За это сообщение автора Gelezako поблагодарил:
directman66 (Пт фев 16, 2018 3:13 pm)
Рейтинг: 1.16%
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

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

Сообщение directman66 » Пт фев 16, 2018 3:14 pm

Gelezako писал(а):
directman66 писал(а):Гугл хоум мини тоже не появился. С ними придется отдельно что-то решать.
а откуда у тебя информация что Амазон Эко поддерживаеn DNLA или upnp? Я погуглил и не нашёл подтверждение. Но нашёл опровержение в вики :(
It does not appear to be capable of playing music streamed from a local UPnP/DLNA media server.
Запусти bubbleupnp и посмотри, есть ли возможность на него отправить звук. Если есть - значит поддерживает. А без этой технологии вряд ли они бы выпустили ip колонку.

Отправлено с моего Redmi Note 3 через Tapatalk
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Ответить