cherezov / dlnap Goto Github PK
View Code? Open in Web Editor NEWSimple python over the network media player to playback on DLNA/UPnP devices
License: MIT License
Simple python over the network media player to playback on DLNA/UPnP devices
License: MIT License
Hi there. I can't detect my Sony Bravia KDL-32EX525. It only detects my own pc as a device as 127.0.0.1. No external IPs?
I'm using Python 3.6 and no proxy.
Thanks a lot for this app. I've been looking for it for a long time since it creates new possibilities. I use eventghost for automation and a voice command like "Cast Iron Man" would play that movie on my TV.
Not sure how to proceed but please see the following output:
jonny@jonny-Latitude-E5430-vPro:~/dlnap-master/dlnap$ ./dlnap.py --ip 192.168.5.91 --log=debug --mute
INFO:DlnapDevice:=> New DlnapDevice (ip = 192.168.5.91) initialization..
INFO:DlnapDevice:location: http://192.168.5.91:7676/smp_25_
INFO:DlnapDevice:port: 7676
DEBUG:DlnapDevice:description xml: {u'root': [{u'device': [{u'manufacturerURL': [u'http://www.samsung.com/sec'], u'serviceList': [{u'service': [{u'controlURL': [u'/smp_27_'], u'serviceType': [u'urn:dial-multiscreen-org:service:dial:1'], u'serviceId': [u'urn:dial-multiscreen-org:serviceId:dial'], u'eventSubURL': [u'/smp_28_'], u'SCPDURL': [u'/smp_26_']}]}], u'modelName': [u'UE40HU6900'], u'serialNumber': [u'20090804RCR'], u'sec:Capabilities': [{u'sec:Capability': []}], u'sec:deviceID': [u'SHCJ6OTEDSFDY'], u'sec:ProductCap': [u'Resolution:1920X1080,Y2014'], u'modelNumber': [u'1.0'], u'deviceType': [u'urn:dial-multiscreen-org:device:dialreceiver:1'], u'friendlyName': [u'[TV]Samsung LED40'], u'modelURL': [u'http://www.samsung.com/sec'], u'modelDescription': [u'Samsung TV NS'], u'UDN': [u'uuid:07270e02-0078-1000-8cd0-fc8f9080e621'], u'manufacturer': [u'Samsung Electronics']}], u'specVersion': [{u'major': [u'1'], u'minor': [u'0']}]}]}
INFO:DlnapDevice:friendlyName: [TV]Samsung LED40
INFO:DlnapDevice:control_url: None
INFO:DlnapDevice:rendering_control_url: None
INFO:DlnapDevice:=> Initialization completed
INFO:DlnapDevice:=> New DlnapDevice (ip = 192.168.5.91) initialization..
INFO:DlnapDevice:location: http://192.168.5.91:7676/smp_25_
INFO:DlnapDevice:port: 7676
DEBUG:DlnapDevice:description xml: {u'root': [{u'device': [{u'manufacturerURL': [u'http://www.samsung.com/sec'], u'serviceList': [{u'service': [{u'controlURL': [u'/smp_27_'], u'serviceType': [u'urn:dial-multiscreen-org:service:dial:1'], u'serviceId': [u'urn:dial-multiscreen-org:serviceId:dial'], u'eventSubURL': [u'/smp_28_'], u'SCPDURL': [u'/smp_26_']}]}], u'modelName': [u'UE40HU6900'], u'serialNumber': [u'20090804RCR'], u'sec:Capabilities': [{u'sec:Capability': []}], u'sec:deviceID': [u'SHCJ6OTEDSFDY'], u'sec:ProductCap': [u'Resolution:1920X1080,Y2014'], u'modelNumber': [u'1.0'], u'deviceType': [u'urn:dial-multiscreen-org:device:dialreceiver:1'], u'friendlyName': [u'[TV]Samsung LED40'], u'modelURL': [u'http://www.samsung.com/sec'], u'modelDescription': [u'Samsung TV NS'], u'UDN': [u'uuid:07270e02-0078-1000-8cd0-fc8f9080e621'], u'manufacturer': [u'Samsung Electronics']}], u'specVersion': [{u'major': [u'1'], u'minor': [u'0']}]}]}
INFO:DlnapDevice:friendlyName: [TV]Samsung LED40
INFO:DlnapDevice:control_url: None
INFO:DlnapDevice:rendering_control_url: None
INFO:DlnapDevice:=> Initialization completed
INFO:DlnapDevice:=> New DlnapDevice (ip = 192.168.5.91) initialization..
INFO:DlnapDevice:location: http://192.168.5.91:7676/smp_25_
INFO:DlnapDevice:port: 7676
DEBUG:DlnapDevice:description xml: {u'root': [{u'device': [{u'manufacturerURL': [u'http://www.samsung.com/sec'], u'serviceList': [{u'service': [{u'controlURL': [u'/smp_27_'], u'serviceType': [u'urn:dial-multiscreen-org:service:dial:1'], u'serviceId': [u'urn:dial-multiscreen-org:serviceId:dial'], u'eventSubURL': [u'/smp_28_'], u'SCPDURL': [u'/smp_26_']}]}], u'modelName': [u'UE40HU6900'], u'serialNumber': [u'20090804RCR'], u'sec:Capabilities': [{u'sec:Capability': []}], u'sec:deviceID': [u'SHCJ6OTEDSFDY'], u'sec:ProductCap': [u'Resolution:1920X1080,Y2014'], u'modelNumber': [u'1.0'], u'deviceType': [u'urn:dial-multiscreen-org:device:dialreceiver:1'], u'friendlyName': [u'[TV]Samsung LED40'], u'modelURL': [u'http://www.samsung.com/sec'], u'modelDescription': [u'Samsung TV NS'], u'UDN': [u'uuid:07270e02-0078-1000-8cd0-fc8f9080e621'], u'manufacturer': [u'Samsung Electronics']}], u'specVersion': [{u'major': [u'1'], u'minor': [u'0']}]}]}
INFO:DlnapDevice:friendlyName: [TV]Samsung LED40
INFO:DlnapDevice:control_url: None
INFO:DlnapDevice:rendering_control_url: None
INFO:DlnapDevice:=> Initialization completed
INFO:DlnapDevice:=> New DlnapDevice (ip = 192.168.5.91) initialization..
INFO:DlnapDevice:location: http://192.168.5.91:7676/smp_25_
INFO:DlnapDevice:port: 7676
DEBUG:DlnapDevice:description xml: {u'root': [{u'device': [{u'manufacturerURL': [u'http://www.samsung.com/sec'], u'serviceList': [{u'service': [{u'controlURL': [u'/smp_27_'], u'serviceType': [u'urn:dial-multiscreen-org:service:dial:1'], u'serviceId': [u'urn:dial-multiscreen-org:serviceId:dial'], u'eventSubURL': [u'/smp_28_'], u'SCPDURL': [u'/smp_26_']}]}], u'modelName': [u'UE40HU6900'], u'serialNumber': [u'20090804RCR'], u'sec:Capabilities': [{u'sec:Capability': []}], u'sec:deviceID': [u'SHCJ6OTEDSFDY'], u'sec:ProductCap': [u'Resolution:1920X1080,Y2014'], u'modelNumber': [u'1.0'], u'deviceType': [u'urn:dial-multiscreen-org:device:dialreceiver:1'], u'friendlyName': [u'[TV]Samsung LED40'], u'modelURL': [u'http://www.samsung.com/sec'], u'modelDescription': [u'Samsung TV NS'], u'UDN': [u'uuid:07270e02-0078-1000-8cd0-fc8f9080e621'], u'manufacturer': [u'Samsung Electronics']}], u'specVersion': [{u'major': [u'1'], u'minor': [u'0']}]}]}
INFO:DlnapDevice:friendlyName: [TV]Samsung LED40
INFO:DlnapDevice:control_url: None
INFO:DlnapDevice:rendering_control_url: None
INFO:DlnapDevice:=> Initialization completed
INFO:DlnapDevice:=> New DlnapDevice (ip = 192.168.5.91) initialization..
INFO:DlnapDevice:location: http://192.168.5.91:7676/smp_15_
INFO:DlnapDevice:port: 7676
DEBUG:DlnapDevice:description xml: {u'root': [{u'device': [{u'manufacturerURL': [u'http://www.samsung.com/sec'], u'serviceList': [{u'service': [{u'controlURL': [u'/smp_17_'], u'serviceType': [u'urn:schemas-upnp-org:service:RenderingControl:1'], u'serviceId': [u'urn:upnp-org:serviceId:RenderingControl'], u'eventSubURL': [u'/smp_18_'], u'SCPDURL': [u'/smp_16_']}, {u'controlURL': [u'/smp_20_'], u'serviceType': [u'urn:schemas-upnp-org:service:ConnectionManager:1'], u'serviceId': [u'urn:upnp-org:serviceId:ConnectionManager'], u'eventSubURL': [u'/smp_21_'], u'SCPDURL': [u'/smp_19_']}, {u'controlURL': [u'/smp_23_'], u'serviceType': [u'urn:schemas-upnp-org:service:AVTransport:1'], u'serviceId': [u'urn:upnp-org:serviceId:AVTransport'], u'eventSubURL': [u'/smp_24_'], u'SCPDURL': [u'/smp_22_']}]}], u'modelName': [u'UE40HU6900'], u'iconList': [{u'icon': [{u'mimetype': [u'image/jpeg'], u'width': [u'48'], u'depth': [u'24'], u'url': [u'/dmr/icon_SML.jpg'], u'height': [u'48']}, {u'mimetype': [u'image/jpeg'], u'width': [u'120'], u'depth': [u'24'], u'url': [u'/dmr/icon_LRG.jpg'], u'height': [u'120']}, {u'mimetype': [u'image/png'], u'width': [u'48'], u'depth': [u'24'], u'url': [u'/dmr/icon_SML.png'], u'height': [u'48']}, {u'mimetype': [u'image/png'], u'width': [u'120'], u'depth': [u'24'], u'url': [u'/dmr/icon_LRG.png'], u'height': [u'120']}]}], u'dlna:X_DLNADOC': [u'DMR-1.50'], u'df:X_deviceCategory': [u'Display.TV.LCD Multimedia.DMR'], u'serialNumber': [u'20110517DMR'], u'sec:deviceID': [u'SHCJ6OTEDSFDY'], u'pnpx:X_compatibleId': [u'MS_DigitalMediaDeviceClass_DMR_V001'], u'sec:ProductCap': [u'Y2014,WebURIPlayable,SeekTRACK_NR,NavigateInPause'], u'modelNumber': [u'AllShare1.0'], u'deviceType': [u'urn:schemas-upnp-org:device:MediaRenderer:1'], u'friendlyName': [u'[TV]Samsung LED40'], u'modelURL': [u'http://www.samsung.com/sec'], u'modelDescription': [u'Samsung TV DMR'], u'UDN': [u'uuid:0c845882-00d2-1000-960f-fc8f9080e621'], u'pnpx:X_hardwareId': [u'VEN_0105&DEV_VD0001'], u'manufacturer': [u'Samsung Electronics']}], u'specVersion': [{u'major': [u'1'], u'minor': [u'0']}]}]}
INFO:DlnapDevice:friendlyName: [TV]Samsung LED40
INFO:DlnapDevice:control_url: /smp_23_
INFO:DlnapDevice:rendering_control_url: /smp_17_
INFO:DlnapDevice:=> Initialization completed
[TV]Samsung LED40 @ 192.168.5.91
DEBUG:DlnapDevice:POST /smp_17_ HTTP/1.1
User-Agent: ./dlnap.py/0.15
Accept: /
Content-Type: text/xml; charset="utf-8"
HOST: 192.168.5.91:7676
Content-Length: 449
SOAPACTION: "urn:schemas-upnp-org:service:RenderingControl:1#SetMute"
Connection: close
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:SetMute xmlns:u="urn:schemas-upnp-org:service:RenderingControl:1">
<InstanceID>0</InstanceID><DesiredMute>1</DesiredMute><Channel>Master</Channel>
</u:SetMute>
</s:Body>
</s:Envelope>
ERROR:root:Action Failed
I just tried to play some local mp3 files and everything failed. I analyzed the source and it seems that the post url is wrong. The following change fixed all of my problems:
if action in ["SetVolume", "SetMute", "GetVolume"]:
url = 'http://{ip}:{port}/{control}'.format(ip=self.ip, port=self.port, control=self.rendering_control_url)
urn = URN_RenderingControl_Fmt.format(self.ssdp_version)
else:
url = 'http://{ip}:{port}/{control}'.format(ip=self.ip, port=self.port, control=self.control_url)
urn = URN_AVTransport_Fmt.format(self.ssdp_version)
Results
Without the bugfix:
DEBUG:DlnapDevice:POST AVTransport/control HTTP/1.1
User-Agent: ./dlnap.py/0.15
Accept: */*
Content-Type: text/xml; charset=utf-8
HOST: 192.168.1.100:8080
Content-Length: 508
SOAPAction: "urn:schemas-upnp-org:service:AVTransport:1#SetAVTransportURI"
Connection: close
With bugfix:
DEBUG:DlnapDevice:POST http://192.168.1.100:8080/AVTransport/control HTTP/1.1
User-Agent: ./dlnap.py/0.15
Accept: */*
Content-Type: text/xml; charset="utf-8"
HOST: 192.168.1.100:8080
Content-Length: 508
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#SetAVTransportURI"
Connection: close
It works like a charm now.
Hi,
I'm not sure if this project is still active. I tried it out to control my audio system from my computer.
the system is apparently made by rakoit.com. It came with an android touch screen connected via wifi using DLNA so I thought to give this project a go.
I'm having however some issues:
packet = self._create_packet('Play', {'InstanceID': instance_id, 'Speed': 1})
packet = self._create_packet('Playing', {'InstanceID': instance_id, 'Speed': 1})
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:Playing xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">
<InstanceID>0</InstanceID><Speed>1</Speed>
</u:Playing>
</s:Body>
</s:Envelope>
ERROR:root:invalid action`
Also, it's not the music that I instructed it to play but the next song from the android interface.
I have the impression that the URI is not encoded correctly and certainly when there are characters like 'é' in the filename.
I found some HTTP API documentation for this device where it says that you need to convert the URI to HEX before sending it (and this needs to correctly convert characters like 'é' to C3A9 rather than E3)
I also tried passing it a URI from an MP3 on the andriod device, but also this just skips the music to the next song rather than starting the URI that was given. I'm guessing it can't find the URI because it is not correct encoded.
So, my guess so far is that the encoding is not correct for the rakoit.com device and for some reason the play doesn't work, while playing seems to cause music to start but returns an error as well.
any hints on where to start looking would be appreciated.
regards,
Johan
In my network there is a Pioneer N-30 streamer. It is discovered by the program. Unfortunately when I try to play something, I get back N-30 @ 192.168.0.14, but there is no music. Somebody an idea?
add support to lg web os
[LG] webOS TV UN8000PSD @ 192.168.0.4
ERROR:root:Transition not available
ERROR:root:Illegal MIME-type
see the description : it is this dlna renderer http://xxxx:49494/upnp/rendertransportSCPD.xml which is a gmediarenderer
WRONG
I was able to show mp4 by url and proxy but jpg and png the screen blips and goes back to standby. The python script never returns to the command line.
Hi
I have a Sony TV, model KDL 32EX525. It uses exactly the same profile as a PS3. No differences. The thing is: all my movies in MKV are not being displayed. Also, my MP4 files with SRT subtitles inside the same folder with the same filename are not being used too. What can I do to solve this?
~/Projects/python/dlnap/dlnap(master) » ./dlnap.py --device tv --play http://live.hkstv.hk.lxdns.com/live/hks/playlist.m3u8 --proxy
[TV] Samsung 6 Series (65) @ 192.168.0.175
ERROR:root:Invalid Args
ERROR:root:Invalid Args
ERROR:root:Invalid Args
Tested on these urls with same result:
https://qgy18.com/jsvideo/MPEG1/fox.mpg
http://flv.bn.netease.com/tvmrepo/2012/7/C/7/E868IGRC7-mobile.mp4
http://live.hkstv.hk.lxdns.com/live/hks/playlist.m3u8
I am writing a macOS app, works on Kodi, failed on samsung tv with same error: "Invalid Args". Do you know what's the reason?
<?xml version="1.0"?>
<root xmlns="urn:schemas-upnp-org:device-1-0" xmlns:pnpx="http://schemas.microsoft.com/windows/pnpx/2005/11" xmlns:df="http://schemas.microsoft.com/windows/2008/09/devicefoundation" xmlns:sec="http://www.sec.co.kr/dlna">
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<device>
<deviceType>urn:schemas-upnp-org:device:MediaRenderer:1</deviceType>
<pnpx:X_compatibleId>MS_DigitalMediaDeviceClass_DMR_V001</pnpx:X_compatibleId>
<df:X_deviceCategory>Display.TV.LCD Multimedia.DMR</df:X_deviceCategory>
<dlna:X_DLNADOC xmlns:dlna="urn:schemas-dlna-org:device-1-0">DMR-1.50</dlna:X_DLNADOC>
<friendlyName>[TV] Samsung 6 Series (65)</friendlyName>
<manufacturer>Samsung Electronics</manufacturer>
<manufacturerURL>http://www.samsung.com/sec</manufacturerURL>
<modelDescription>Samsung TV DMR</modelDescription>
<modelName>UA65KU6300</modelName>
<modelNumber>AllShare1.0</modelNumber>
<modelURL>http://www.samsung.com/sec</modelURL>
<serialNumber>20160113DMR</serialNumber>
<UDN>uuid:241f5305-7e7d-4ee3-a74a-5095ac5e942a</UDN>
<sec:deviceID/>
<iconList>
<icon>
<mimetype>image/jpeg</mimetype>
<width>48</width>
<height>48</height>
<depth>24</depth>
<url>/icon_SML.jpg</url>
</icon>
<icon>
<mimetype>image/jpeg</mimetype>
<width>120</width>
<height>120</height>
<depth>24</depth>
<url>/icon_LRG.jpg</url>
</icon>
<icon>
<mimetype>image/png</mimetype>
<width>48</width>
<height>48</height>
<depth>24</depth>
<url>/icon_SML.png</url>
</icon>
<icon>
<mimetype>image/png</mimetype>
<width>120</width>
<height>120</height>
<depth>24</depth>
<url>/icon_LRG.png</url>
</icon>
</iconList>
<serviceList>
<service>
<serviceType>urn:schemas-upnp-org:service:RenderingControl:1</serviceType>
<serviceId>urn:upnp-org:serviceId:RenderingControl</serviceId>
<controlURL>/upnp/control/RenderingControl1</controlURL>
<eventSubURL>/upnp/event/RenderingControl1</eventSubURL>
<SCPDURL>/RenderingControl_1.xml</SCPDURL>
</service>
<service>
<serviceType>urn:schemas-upnp-org:service:ConnectionManager:1</serviceType>
<serviceId>urn:upnp-org:serviceId:ConnectionManager</serviceId>
<controlURL>/upnp/control/ConnectionManager1</controlURL>
<eventSubURL>/upnp/event/ConnectionManager1</eventSubURL>
<SCPDURL>/ConnectionManager_1.xml</SCPDURL>
</service>
<service>
<serviceType>urn:schemas-upnp-org:service:AVTransport:1</serviceType>
<serviceId>urn:upnp-org:serviceId:AVTransport</serviceId>
<controlURL>/upnp/control/AVTransport1</controlURL>
<eventSubURL>/upnp/event/AVTransport1</eventSubURL>
<SCPDURL>/AVTransport_1.xml</SCPDURL>
</service>
<service>
<serviceType>urn:schemas-rvualliance-org:service:StreamSplicing:1</serviceType>
<serviceId>urn:upnp-org:serviceId:StreamSplicing</serviceId>
<controlURL>/upnp/control/StreamSplicing1</controlURL>
<eventSubURL>/upnp/event/StreamSplicing1</eventSubURL>
<SCPDURL>/StreamSplicing_1.xml</SCPDURL>
</service>
</serviceList>
<sec:ProductCap>Tizen,Y2016,WebURIPlayable,NavigateInPause,ScreenMirroringP2PMAC=fa:77:b8:9d:b4:e8,UHD_SCREEN</sec:ProductCap>
<pnpx:X_hardwareId>VEN_0105&DEV_VD0001</pnpx:X_hardwareId>
</device>
</root>
<?xml version="1.0" encoding="utf-8"?>
<scpd xmlns="urn:schemas-upnp-org:service-1-0">
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<actionList>
<action>
<name>Play</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>Speed</name>
<direction>in</direction>
<relatedStateVariable>TransportPlaySpeed</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>Stop</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>Next</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>Previous</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>SetPlayMode</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>NewPlayMode</name>
<direction>in</direction>
<relatedStateVariable>CurrentPlayMode</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetMediaInfo</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>NrTracks</name>
<direction>out</direction>
<relatedStateVariable>NumberOfTracks</relatedStateVariable>
<defaultValue>0</defaultValue>
</argument>
<argument>
<name>MediaDuration</name>
<direction>out</direction>
<relatedStateVariable>CurrentMediaDuration</relatedStateVariable>
</argument>
<argument>
<name>CurrentURI</name>
<direction>out</direction>
<relatedStateVariable>AVTransportURI</relatedStateVariable>
</argument>
<argument>
<name>CurrentURIMetaData</name>
<direction>out</direction>
<relatedStateVariable>AVTransportURIMetaData</relatedStateVariable>
</argument>
<argument>
<name>NextURI</name>
<direction>out</direction>
<relatedStateVariable>NextAVTransportURI</relatedStateVariable>
</argument>
<argument>
<name>NextURIMetaData</name>
<direction>out</direction>
<relatedStateVariable>NextAVTransportURIMetaData</relatedStateVariable>
</argument>
<argument>
<name>PlayMedium</name>
<direction>out</direction>
<relatedStateVariable>PlaybackStorageMedium</relatedStateVariable>
</argument>
<argument>
<name>RecordMedium</name>
<direction>out</direction>
<relatedStateVariable>RecordStorageMedium</relatedStateVariable>
</argument>
<argument>
<name>WriteStatus</name>
<direction>out</direction>
<relatedStateVariable>RecordMediumWriteStatus</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetDeviceCapabilities</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>PlayMedia</name>
<direction>out</direction>
<relatedStateVariable>PossiblePlaybackStorageMedia</relatedStateVariable>
</argument>
<argument>
<name>RecMedia</name>
<direction>out</direction>
<relatedStateVariable>PossibleRecordStorageMedia</relatedStateVariable>
</argument>
<argument>
<name>RecQualityModes</name>
<direction>out</direction>
<relatedStateVariable>PossibleRecordQualityModes</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>SetAVTransportURI</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>CurrentURI</name>
<direction>in</direction>
<relatedStateVariable>AVTransportURI</relatedStateVariable>
</argument>
<argument>
<name>CurrentURIMetaData</name>
<direction>in</direction>
<relatedStateVariable>AVTransportURIMetaData</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>SetNextAVTransportURI</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>NextURI</name>
<direction>in</direction>
<relatedStateVariable>NextAVTransportURI</relatedStateVariable>
</argument>
<argument>
<name>NextURIMetaData</name>
<direction>in</direction>
<relatedStateVariable>NextAVTransportURIMetaData</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>X_PrefetchURI</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>PrefetchURI</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_PrefetchURI</relatedStateVariable>
</argument>
<argument>
<name>PrefetchURIMetaData</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_PrefetchURIMetaData</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetTransportSettings</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>PlayMode</name>
<direction>out</direction>
<relatedStateVariable>CurrentPlayMode</relatedStateVariable>
</argument>
<argument>
<name>RecQualityMode</name>
<direction>out</direction>
<relatedStateVariable>CurrentRecordQualityMode</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetTransportInfo</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>CurrentTransportState</name>
<direction>out</direction>
<relatedStateVariable>TransportState</relatedStateVariable>
</argument>
<argument>
<name>CurrentTransportStatus</name>
<direction>out</direction>
<relatedStateVariable>TransportStatus</relatedStateVariable>
</argument>
<argument>
<name>CurrentSpeed</name>
<direction>out</direction>
<relatedStateVariable>TransportPlaySpeed</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>Pause</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>Seek</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>Unit</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_SeekMode</relatedStateVariable>
</argument>
<argument>
<name>Target</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_SeekTarget</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetPositionInfo</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>Track</name>
<direction>out</direction>
<relatedStateVariable>CurrentTrack</relatedStateVariable>
</argument>
<argument>
<name>TrackDuration</name>
<direction>out</direction>
<relatedStateVariable>CurrentTrackDuration</relatedStateVariable>
</argument>
<argument>
<name>TrackMetaData</name>
<direction>out</direction>
<relatedStateVariable>CurrentTrackMetaData</relatedStateVariable>
</argument>
<argument>
<name>TrackURI</name>
<direction>out</direction>
<relatedStateVariable>CurrentTrackURI</relatedStateVariable>
</argument>
<argument>
<name>RelTime</name>
<direction>out</direction>
<relatedStateVariable>RelativeTimePosition</relatedStateVariable>
</argument>
<argument>
<name>AbsTime</name>
<direction>out</direction>
<relatedStateVariable>AbsoluteTimePosition</relatedStateVariable>
</argument>
<argument>
<name>RelCount</name>
<direction>out</direction>
<relatedStateVariable>RelativeCounterPosition</relatedStateVariable>
</argument>
<argument>
<name>AbsCount</name>
<direction>out</direction>
<relatedStateVariable>AbsoluteCounterPosition</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>GetCurrentTransportActions</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>Actions</name>
<direction>out</direction>
<relatedStateVariable>CurrentTransportActions</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>X_DLNA_GetBytePositionInfo</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>TrackSize</name>
<direction>out</direction>
<relatedStateVariable>X_DLNA_CurrentTrackSize</relatedStateVariable>
</argument>
<argument>
<name>RelByte</name>
<direction>out</direction>
<relatedStateVariable>X_DLNA_RelativeBytePosition</relatedStateVariable>
</argument>
<argument>
<name>AbsByte</name>
<direction>out</direction>
<relatedStateVariable>X_DLNA_AbsoluteBytePosition</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>X_GetStoppedReason</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>StoppedReason</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_StoppedReason</relatedStateVariable>
</argument>
<argument>
<name>StoppedReasonData</name>
<direction>out</direction>
<relatedStateVariable>A_ARG_TYPE_StoppedReasonData</relatedStateVariable>
</argument>
</argumentList>
</action>
<action>
<name>X_PlayerAppHint</name>
<argumentList>
<argument>
<name>InstanceID</name>
<direction>in</direction>
<relatedStateVariable>A_ARG_TYPE_InstanceID</relatedStateVariable>
</argument>
<argument>
<name>UpnpClass</name>
<direction>in</direction>
<relatedStateVariable>X_ARG_TYPE_UpnpClass</relatedStateVariable>
</argument>
<argument>
<name>PlayerHint</name>
<direction>in</direction>
<relatedStateVariable>X_ARG_TYPE_PlayerHint</relatedStateVariable>
</argument>
</argumentList>
</action>
</actionList>
<serviceStateTable>
<stateVariable sendEvents="no">
<name>TransportState</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>STOPPED</allowedValue>
<allowedValue>PAUSED_PLAYBACK</allowedValue>
<allowedValue>PLAYING</allowedValue>
<allowedValue>TRANSITIONING</allowedValue>
<allowedValue>NO_MEDIA_PRESENT</allowedValue>
</allowedValueList>
<defaultValue>NO_MEDIA_PRESENT</defaultValue>
</stateVariable>
<stateVariable sendEvents="no">
<name>TransportStatus</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>OK</allowedValue>
<allowedValue>ERROR_OCCURRED</allowedValue>
</allowedValueList>
<defaultValue>OK</defaultValue>
</stateVariable>
<stateVariable sendEvents="no">
<name>TransportPlaySpeed</name>
<dataType>string</dataType>
<defaultValue>1</defaultValue>
</stateVariable>
<stateVariable sendEvents="no">
<name>NumberOfTracks</name>
<dataType>ui4</dataType>
<allowedValueRange>
<minimum>0</minimum>
<maximum>4294967295</maximum>
</allowedValueRange>
<defaultValue>0</defaultValue>
</stateVariable>
<stateVariable sendEvents="no">
<name>CurrentMediaDuration</name>
<dataType>string</dataType>
<defaultValue>00:00:00</defaultValue>
</stateVariable>
<stateVariable sendEvents="no">
<name>AVTransportURI</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>AVTransportURIMetaData</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>PlaybackStorageMedium</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>NONE</allowedValue>
<allowedValue>NETWORK</allowedValue>
</allowedValueList>
<defaultValue>NONE</defaultValue>
</stateVariable>
<stateVariable sendEvents="no">
<name>CurrentTrack</name>
<dataType>ui4</dataType>
<allowedValueRange>
<minimum>0</minimum>
<maximum>4294967295</maximum>
<step>1</step>
</allowedValueRange>
<defaultValue>0</defaultValue>
</stateVariable>
<stateVariable sendEvents="no">
<name>CurrentTrackDuration</name>
<dataType>string</dataType>
<defaultValue>00:00:00</defaultValue>
</stateVariable>
<stateVariable sendEvents="no">
<name>CurrentTrackMetaData</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>CurrentTrackURI</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>RelativeTimePosition</name>
<dataType>string</dataType>
<defaultValue>00:00:00</defaultValue>
</stateVariable>
<stateVariable sendEvents="no">
<name>AbsoluteTimePosition</name>
<dataType>string</dataType>
<defaultValue>00:00:00</defaultValue>
</stateVariable>
<stateVariable sendEvents="no">
<name>NextAVTransportURI</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>NextAVTransportURIMetaData</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>CurrentTransportActions</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>RecordStorageMedium</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>NOT_IMPLEMENTED</allowedValue>
</allowedValueList>
<defaultValue>NOT_IMPLEMENTED</defaultValue>
</stateVariable>
<stateVariable sendEvents="no">
<name>RecordMediumWriteStatus</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>NOT_IMPLEMENTED</allowedValue>
</allowedValueList>
<defaultValue>NOT_IMPLEMENTED</defaultValue>
</stateVariable>
<stateVariable sendEvents="no">
<name>RelativeCounterPosition</name>
<dataType>i4</dataType>
<defaultValue>2147483647</defaultValue>
</stateVariable>
<stateVariable sendEvents="no">
<name>AbsoluteCounterPosition</name>
<dataType>i4</dataType>
<defaultValue>2147483647</defaultValue>
</stateVariable>
<stateVariable sendEvents="no">
<name>PossiblePlaybackStorageMedia</name>
<dataType>string</dataType>
<defaultValue>NETWORK</defaultValue>
</stateVariable>
<stateVariable sendEvents="no">
<name>PossibleRecordStorageMedia</name>
<dataType>string</dataType>
<defaultValue>NOT_IMPLEMENTED</defaultValue>
</stateVariable>
<stateVariable sendEvents="no">
<name>PossibleRecordQualityModes</name>
<dataType>string</dataType>
<defaultValue>NOT_IMPLEMENTED</defaultValue>
</stateVariable>
<stateVariable sendEvents="no">
<name>CurrentPlayMode</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>NORMAL</allowedValue>
</allowedValueList>
<defaultValue>NORMAL</defaultValue>
</stateVariable>
<stateVariable sendEvents="no">
<name>CurrentRecordQualityMode</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>NOT_IMPLEMENTED</allowedValue>
</allowedValueList>
<defaultValue>NOT_IMPLEMENTED</defaultValue>
</stateVariable>
<stateVariable sendEvents="yes">
<name>LastChange</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_InstanceID</name>
<dataType>ui4</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_PrefetchURI</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_PrefetchURIMetaData</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_SeekMode</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>TRACK_NR</allowedValue>
<allowedValue>REL_TIME</allowedValue>
<allowedValue>ABS_TIME</allowedValue>
<allowedValue>ABS_COUNT</allowedValue>
<allowedValue>REL_COUNT</allowedValue>
<allowedValue>X_DLNA_REL_BYTE</allowedValue>
<allowedValue>FRAME</allowedValue>
</allowedValueList>
<defaultValue>REL_TIME</defaultValue>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_SeekTarget</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>X_DLNA_RelativeBytePosition</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>X_DLNA_AbsoluteBytePosition</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>X_DLNA_CurrentTrackSize</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_StoppedReason</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>A_ARG_TYPE_StoppedReasonData</name>
<dataType>string</dataType>
</stateVariable>
<stateVariable sendEvents="no">
<name>X_ARG_TYPE_UpnpClass</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>object.item.imageItem</allowedValue>
<allowedValue>object.item.audioItem</allowedValue>
<allowedValue>object.item.videoItem</allowedValue>
</allowedValueList>
</stateVariable>
<stateVariable sendEvents="no">
<name>X_ARG_TYPE_PlayerHint</name>
<dataType>string</dataType>
<allowedValueList>
<allowedValue>load</allowedValue>
<allowedValue>unload</allowedValue>
</allowedValueList>
</stateVariable>
</serviceStateTable>
</scpd>
Target device is a Panasonic DMR HW220.
dlna-fail.pcapng.gz
dlna-working.pcapng.gz
It looks like Windows lies about the mimetype - setting it to MPEG, where dlnap doesn't send a mimetype at all.
Hi
./dlnap.py
Discovered devices:
[a] [TV] Samsung Q70 Series (55) @ 192.168.88.11
[a] [TV] Samsung 3 Series (27) @ 192.168.88.64
./dlnap.py --ip 192.168.88.64 --play 'http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerEscapes.mp4' --proxy
[TV] Samsung 3 Series (27) @ 192.168.88.64
ERROR:root:Invalid Args
Without proxy the same:
./dlnap.py --ip 192.168.88.64 --play 'http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerEscapes.mp4'
[TV] Samsung 3 Series (27) @ 192.168.88.64
ERROR:root:Invalid Args
I see dialogbox on TV: "Info: Check network connection"
Hello,
When I search devices several times, than sometimes the searched devices show as 'a' and sometimes as 'x' with --all parameter. Sometimes they are randomly missing too. ex:
python2 dlnap.py --all
Discovered devices:
[a] Kodi (LibreELEC) @ 192.168.1.20
[a] Volumio @ 192.168.1.29
[a] Marantz M-CR611 @ 192.168.1.26
python2 dlnap.py --all
Discovered devices:
[a] Kodi (LibreELEC) @ 192.168.1.20
[a] Volumio @ 192.168.1.29
[a] Marantz M-CR611 @ 192.168.1.26
python2 dlnap.py --all
Discovered devices:
[a] Marantz M-CR611 @ 192.168.1.26
[a] Volumio @ 192.168.1.29
[x] Kodi (LibreELEC) @ 192.168.1.20
python2 dlnap.py --all
Discovered devices:
[a] Volumio @ 192.168.1.29
[a] Marantz M-CR611 @ 192.168.1.26
[kamil@kamildesktop dlnap]$ python2 dlnap.py --all
Discovered devices:
[a] Marantz M-CR611 @ 192.168.1.26
[a] Volumio @ 192.168.1.29
[a] Kodi (LibreELEC) @ 192.168.1.20
<sec:deviceID/>
in root/device
was parsed as the start of the node, not the node, which made his brother nodes behind him parsed as his childs.
While using dlnap I received a UnicodeDecodeError when trying to play a .mp3 file. This was fixed by changing line 272 to f = open(url, 'rb)
dlna.py run against Volumio returns "ERROR:root:Action Failed".
adding:
<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/" xmlns:arib="urn:schemas-arib-or-jp:elements-1-0/" xmlns:dtcp="urn:schemas-dtcp-com:metadata-1-0/" xmlns:pv="http://www.pv.com/pvns/" xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/"><item id="0$1$12$16583R2268170" refID="0$1$8I2268170" parentID="0$1$12$16583" restricted="1"><res protocolInfo="http-get:*:audio/wav:DLNA.ORG_PN=WAV;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01700000000000000000000000000000" >http://example.com/test.wav</res></item></DIDL-Lite>
to fixes this.
this I extracted from a test run of gupnp-av-cp (strace of an mp3) and adapted to the wav test file.
volumio runs upmpdcli. I sorted this out by adding logelevel = 6 and logfilename = /var/log/upmpdcli.log and running systemctl restart upmpdcli. With vanilla dlna I get:
:2:src/upmpd.cxx:132::checkContentFormat: didl parse failed
:2:src/avtransport.cxx:393::set(Next)AVTransportURI: unsupported format: uri http://example.com/test.wav metadata :2:libupnpp/device/device.cxx:354::UpnpDevice: Action failed: SetAVTransportURI code -101
this is volumio 2.238 running on an Odroid C2.
PS: playback and stop work fine.
No compatible devices found.TCL电视是什么问题呢
这个应用还支持那些电视呢 TCL智能电视可以吗
$ python --version
Python 3.6.2
$ uname -a
Linux blackbird 4.13.5-1-ARCH #1 SMP PREEMPT Fri Oct 6 09:58:47 CEST 2017 x86_64 GNU/Linux
$ dlnap.py --device tv --play ~/Videos/aviao.mp4 --proxy --log debug
INFO:DlnapDevice:=> New DlnapDevice (ip = 10.0.200.86) initialization..
INFO:DlnapDevice:location: http://10.0.200.86:7676/smp_11_
INFO:DlnapDevice:port: 7676
DEBUG:DlnapDevice:description xml: {'root': [{'specVersion': [{'major': ['1'], 'minor': ['0']}], 'device': [{'deviceType': ['urn:schemas-upnp-org:device:MediaRenderer:1'], 'pnpx:X_compatibleId': ['MS_DigitalMediaDeviceClass_DMR_V001'], 'df:X_deviceCategory': ['Display.TV.LCD Multimedia.DMR'], 'dlna:X_DLNADOC': ['DMR-1.50'], 'friendlyName': ['[TV]Samsung LED32'], 'manufacturer': ['Samsung Electronics'], 'manufacturerURL': ['http://www.samsung.com/sec'], 'modelDescription': ['Samsung TV DMR'], 'modelName': ['UN32J4303'], 'modelNumber': ['AllShare1.0'], 'modelURL': ['http://www.samsung.com/sec'], 'serialNumber': ['20110517DMR'], 'UDN': ['uuid:1017df81-000e-1000-aa9a-b8bbaff0dbce'], 'sec:deviceID': ['CPCHDC2MYPGGE'], 'iconList': [{'icon': [{'mimetype': ['image/jpeg'], 'width': ['48'], 'height': ['48'], 'depth': ['24'], 'url': ['/dmr/icon_SML.jpg']}, {'mimetype': ['image/jpeg'], 'width': ['120'], 'height': ['120'], 'depth': ['24'], 'url': ['/dmr/icon_LRG.jpg']}, {'mimetype': ['image/png'], 'width': ['48'], 'height': ['48'], 'depth': ['24'], 'url': ['/dmr/icon_SML.png']}, {'mimetype': ['image/png'], 'width': ['120'], 'height': ['120'], 'depth': ['24'], 'url': ['/dmr/icon_LRG.png']}]}], 'serviceList': [{'service': [{'serviceType': ['urn:schemas-upnp-org:service:RenderingControl:1'], 'serviceId': ['urn:upnp-org:serviceId:RenderingControl'], 'controlURL': ['/smp_13_'], 'eventSubURL': ['/smp_14_'], 'SCPDURL': ['/smp_12_']}, {'serviceType': ['urn:schemas-upnp-org:service:ConnectionManager:1'], 'serviceId': ['urn:upnp-org:serviceId:ConnectionManager'], 'controlURL': ['/smp_16_'], 'eventSubURL': ['/smp_17_'], 'SCPDURL': ['/smp_15_']}, {'serviceType': ['urn:schemas-upnp-org:service:AVTransport:1'], 'serviceId': ['urn:upnp-org:serviceId:AVTransport'], 'controlURL': ['/smp_19_'], 'eventSubURL': ['/smp_20_'], 'SCPDURL': ['/smp_18_']}]}], 'sec:ProductCap': ['Y2014,WebURIPlayable,SeekTRACK_NR,NavigateInPause,ScreenMirroringP2PMAC=5e:49:7d:b3:1d:2b'], 'pnpx:X_hardwareId': ['VEN_0105&DEV_VD0001']}]}]}
INFO:DlnapDevice:friendlyName: [TV]Samsung LED32
INFO:DlnapDevice:control_url: /smp_19_
INFO:DlnapDevice:rendering_control_url: /smp_13_
INFO:DlnapDevice:=> Initialization completed
DEBUG:DlnapDevice:POST /smp_19_ HTTP/1.1
User-Agent: /home/mnemonic/bin/dlnap.py/0.15
Accept: */*
Content-Type: text/xml; charset="utf-8"
HOST: 10.0.200.86:7676
Content-Length: 401
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Stop"
Connection: close
<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:Stop xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">
<InstanceID>0</InstanceID><Speed>1</Speed>
</u:Stop>
</s:Body>
</s:Envelope>
DEBUG:DlnapDevice:POST /smp_19_ HTTP/1.1
User-Agent: /home/mnemonic/bin/dlnap.py/0.15
Accept: */*
Content-Type: text/xml; charset="utf-8"
HOST: 10.0.200.86:7676
Content-Length: 532
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#SetAVTransportURI"
Connection: close
<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:SetAVTransportURI xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">
<InstanceID>0</InstanceID><CurrentURI>http://10.0.200.24:8000//home/mnemonic/Videos/aviao.mp4</CurrentURI><CurrentURIMetaData></CurrentURIMetaData>
</u:SetAVTransportURI>
</s:Body>
</s:Envelope>
DEBUG:DlnapDevice:POST /smp_19_ HTTP/1.1
User-Agent: /home/mnemonic/bin/dlnap.py/0.15
Accept: */*
Content-Type: text/xml; charset="utf-8"
HOST: 10.0.200.86:7676
Content-Length: 401
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Play"
Connection: close
<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<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>
----------------------------------------
Exception happened during processing of request from ('10.0.200.86', 44253)
Traceback (most recent call last):
File "/usr/lib/python3.6/socketserver.py", line 317, in _handle_request_noblock
self.process_request(request, client_address)
File "/usr/lib/python3.6/socketserver.py", line 348, in process_request
self.finish_request(request, client_address)
File "/usr/lib/python3.6/socketserver.py", line 361, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/usr/lib/python3.6/socketserver.py", line 696, in __init__
self.handle()
File "/usr/lib/python3.6/http/server.py", line 418, in handle
self.handle_one_request()
File "/usr/lib/python3.6/http/server.py", line 406, in handle_one_request
method()
File "/home/mnemonic/bin/dlnap.py", line 295, in do_GET
shutil.copyfileobj(f, self.wfile)
File "/usr/lib/python3.6/shutil.py", line 79, in copyfileobj
buf = fsrc.read(length)
File "/usr/lib/python3.6/codecs.py", line 321, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xee in position 31: invalid continuation byte
----------------------------------------
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.