0%

DLNA DMR 和 DMP 分析

使用wireshark抓包分析DMRDMP实现,包括设备发现、控制、播放等过程

环境

DMR 流程

Notify或应答M-SEARCH->应答GET XML/SCPD->SOAP ACTION->GET DATA->PLAY

DMR 设备入网广播

使用ssdp:alive通知消息,协议upnpv2.0 1.2,包含三种数据包

  1. Three discovery messages for the root device.
  2. Two discovery messages for each embedded device. 可选项,在本次抓包中不存在
  3. Once for each service type in each device.

结构如下:

1553563823157

1553563848007

1553563870264

Frame 33-35为表 1 数据,Frame 36-38为表 3 数据,分别为三种service

  1. NT: urn:schemas-upnp-org:service:AVTransport:1\r\n
  2. NT: urn:schemas-upnp-org:service:ConnectionManager:1\r\n
  3. NT: urn:schemas-upnp-org:service:RenderingControl:1\r\n

相关代码:

33-35libupnp:UpnpSendAdvertisement

36-38libupnp:

DMC 入网搜索设备

发送M-SEARCH ssdp:discover发现设备,协议upnpv2.0: 1.3

1553565538242

应答格式

1553565566078

对应帧为243-253,对应两种ST search target

  1. upnp:rootdevice,Search for root devices only.
  2. urn:schemas-upnp-org:device:deviceType:ver,Search for any device of this type where deviceType andver are defined by the UPnP Forum working committee.
    • ST: urn:schemas-upnp-org:device:MediaServer:1\r\n
    • ST: urn:schemas-upnp-org:device:MediaRenderer:1\r\n

应答帧Frame 251,信息如下

HTTP/1.1 200 OK
CACHE-CONTROL: max-age=100
DATE: Tue, 26 Mar 2019 00:57:36 GMT
EXT:
LOCATION: http://192.168.199.183:49494/description.xml
OPT: "http://schemas.upnp.org/upnp/1/0/"; ns=01
01-NLS: 066fa5e8-4f62-11e9-9d14-bbebc675453c
SERVER: Linux/4.13.0-45-generic, UPnP/1.0, Portable SDK for UPnP devices/1.6.22
X-User-Agent: redsonic
ST: urn:schemas-upnp-org:device:MediaRenderer:1
USN: uuid:GMediaRender-1_0-000-000-002::urn:schemas-upnp-org:device:MediaRenderer:1

DMC 获取描述文件

通过HTTP GET/POST来完成,协议upnp: 2

1553566959878

Frame 257

GET /description.xml HTTP/1.1
HOST: 192.168.199.183:49494
DATE: Tue, 26 Mar 2019 00:57:35 GMT
CONNECTION: close
USER-AGENT: Linux/4.4.23+ UPnP/1.0 HUAWEI_iCOS/iCOS V1R1C00 DLNADOC/1.50

应答帧258-261使用TCP发送数据

HTTP/1.1 200 OK
CONTENT-LENGTH: 2073
CONTENT-TYPE: text/xml
DATE: Tue, 26 Mar 2019 00:57:36 GMT
LAST-MODIFIED: Tue, 26 Mar 2019 00:56:44 GMT
SERVER: Linux/4.13.0-45-generic, UPnP/1.0, Portable SDK for UPnP devices/1.6.22
X-User-Agent: redsonic
CONNECTION: close

description.xml如下

<root xmlns="urn:schemas-upnp-org:device-1-0">
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<device>
<deviceType>urn:schemas-upnp-org:device:MediaRenderer:1</deviceType>
<presentationURL/>
<friendlyName>My Renderer</friendlyName>
<manufacturer>Ivo Clarysse, Henner Zeller</manufacturer>
<manufacturerURL>http://github.com/hzeller/gmrender-resurrect</manufacturerURL>
<modelDescription>gmediarender 0.0.7-git</modelDescription>
<modelName>gmediarender</modelName>
<modelNumber>2018-08-18_a7b0b1b</modelNumber>
<modelURL>http://github.com/hzeller/gmrender-resurrect</modelURL>
<UDN>uuid:GMediaRender-1_0-000-000-002</UDN>
<iconList>
<icon>
<mimetype>image/png</mimetype>
<width>64</width>
<height>64</height>
<depth>24</depth>
<url>/upnp/grender-64x64.png</url>
</icon>
<icon>
<mimetype>image/png</mimetype>
<width>128</width>
<height>128</height>
<depth>24</depth>
<url>/upnp/grender-128x128.png</url>
</icon>
</iconList>
<serviceList>
<service>
<serviceType>urn:schemas-upnp-org:service:AVTransport:1</serviceType>
<serviceId>urn:upnp-org:serviceId:AVTransport</serviceId>
<SCPDURL>/upnp/rendertransportSCPD.xml</SCPDURL>
<controlURL>/upnp/control/rendertransport1</controlURL>
<eventSubURL>/upnp/event/rendertransport1</eventSubURL>
</service>
<service>
<serviceType>urn:schemas-upnp-org:service:ConnectionManager:1</serviceType>
<serviceId>urn:upnp-org:serviceId:ConnectionManager</serviceId>
<SCPDURL>/upnp/renderconnmgrSCPD.xml</SCPDURL>
<controlURL>/upnp/control/renderconnmgr1</controlURL>
<eventSubURL>/upnp/event/renderconnmgr1</eventSubURL>
</service>
<service>
<serviceType>urn:schemas-upnp-org:service:RenderingControl:1</serviceType>
<serviceId>urn:upnp-org:serviceId:RenderingControl</serviceId>
<SCPDURL>/upnp/rendercontrolSCPD.xml</SCPDURL>
<controlURL>/upnp/control/rendercontrol1</controlURL>
<eventSubURL>/upnp/event/rendercontrol1</eventSubURL>
</service>
</serviceList>
</device>
<URLBase>http://192.168.199.183:49494/</URLBase>
</root>

service分析

<service>
<serviceType>urn:schemas-upnp-org:service:RenderingControl:1</serviceType>
<serviceId>urn:upnp-org:serviceId:RenderingControl</serviceId>
<SCPDURL>/upnp/rendercontrolSCPD.xml</SCPDURL>
<controlURL>/upnp/control/rendercontrol1</controlURL>
<eventSubURL>/upnp/event/rendercontrol1</eventSubURL>
</service>
  • serviceType: UPnP service type
  • serviceId: Service identifier
  • SCPDURL: URL for service description clause 2.5
  • controlURL: URL for control clause 3
  • eventSubURL: URL for eventing clause 4

数据包分析

  1. Frame 282-298获取/upnp/rendertransportSCPD.xml
  2. Frame 309-315获取/upnp/renderconnmgrSCPD.xml
  3. Frame 325-337获取/upnp/rendercontrolSCPD.xml

353订阅消息,upnp2.0: 4.1

SUBSCRIBE /upnp/event/rendertransport1 HTTP/1.1
HOST: 192.168.199.183:49494
CALLBACK: <http://192.168.199.114:49153/>
NT: upnp:event
TIMEOUT: Second-300
CONNECTION: close

355为应答

HTTP/1.1 200 OK
DATE: Tue, 26 Mar 2019 00:57:37 GMT
SERVER: Linux/4.13.0-45-generic, UPnP/1.0, Portable SDK for UPnP devices/1.6.22
CONTENT-LENGTH: 0
X-User-Agent: redsonic
SID: uuid:263cbdde-4f62-11e9-9d14-bbebc675453c
TIMEOUT: Second-300

366发送消息NOTIFYupnp2.0 4.3.2 Unicast eventing: Event messages: NOTIFY

NOTIFY / HTTP/1.1
HOST: 192.168.199.114:49153
CONTENT-TYPE: text/xml; charset="utf-8"
CONTENT-LENGTH: 2168
NT: upnp:event
NTS: upnp:propchange
SID: uuid:263cbdde-4f62-11e9-9d14-bbebc675453c
SEQ: 0

<e:propertyset xmlns:e="urn:schemas-upnp-org:event-1-0">
<e:property>
<LastChange>&lt;?xml version="1.0"?&gt;
&lt;Event xmlns="urn:schemas-upnp-org:metadata-1-0/AVT/"&gt;
&lt;InstanceID val="0"&gt;
&lt;TransportStatus val="OK"&gt;&lt;/TransportStatus&gt;
&lt;NextAVTransportURI val=""&gt;&lt;/NextAVTransportURI&gt;
&lt;NextAVTransportURIMetaData val=""&gt;&lt;/NextAVTransportURIMetaData&gt;
&lt;CurrentTrackMetaData val=""&gt;&lt;/CurrentTrackMetaData&gt;
&lt;RelativeCounterPosition val="2147483647"&gt;&lt;/RelativeCounterPosition&gt;
&lt;PlaybackStorageMedium val="UNKNOWN"&gt;&lt;/PlaybackStorageMedium&gt;
&lt;RelativeTimePosition val="0:00:00"&gt;&lt;/RelativeTimePosition&gt;
&lt;PossibleRecordStorageMedia val="NOT_IMPLEMENTED"&gt;&lt;/PossibleRecordStorageMedia&gt;
&lt;CurrentPlayMode val="NORMAL"&gt;&lt;/CurrentPlayMode&gt;
&lt;TransportPlaySpeed val="1"&gt;&lt;/TransportPlaySpeed&gt;
&lt;PossiblePlaybackStorageMedia val="NETWORK,UNKNOWN"&gt;&lt;/PossiblePlaybackStorageMedia&gt;
&lt;AbsoluteTimePosition val="NOT_IMPLEMENTED"&gt;&lt;/AbsoluteTimePosition&gt;
&lt;CurrentTrack val="0"&gt;&lt;/CurrentTrack&gt;
&lt;CurrentTrackURI val=""&gt;&lt;/CurrentTrackURI&gt;
&lt;CurrentTransportActions val="PLAY"&gt;&lt;/CurrentTransportActions&gt;
&lt;NumberOfTracks val="0"&gt;&lt;/NumberOfTracks&gt;
&lt;AVTransportURI val=""&gt;&lt;/AVTransportURI&gt;
&lt;AbsoluteCounterPosition val="2147483647"&gt;&lt;/AbsoluteCounterPosition&gt;
&lt;CurrentRecordQualityMode val="NOT_IMPLEMENTED"&gt;&lt;/CurrentRecordQualityMode&gt;
&lt;CurrentMediaDuration val=""&gt;&lt;/CurrentMediaDuration&gt;
&lt;AVTransportURIMetaData val=""&gt;&lt;/AVTransportURIMetaData&gt;
&lt;RecordStorageMedium val="NOT_IMPLEMENTED"&gt;&lt;/RecordStorageMedium&gt;
&lt;RecordMediumWriteStatus val="NOT_IMPLEMENTED"&gt;&lt;/RecordMediumWriteStatus&gt;
&lt;CurrentTrackDuration val="0:00:00"&gt;&lt;/CurrentTrackDuration&gt;
&lt;TransportState val="STOPPED"&gt;&lt;/TransportState&gt;
&lt;PossibleRecordQualityModes val="NOT_IMPLEMENTED"&gt;&lt;/PossibleRecordQualityModes&gt;
&lt;/InstanceID&gt;
&lt;/Event&gt;
</LastChange>
</e:property>
</e:propertyset>

511发送SOAPACTION

POST /upnp/control/rendertransport1 HTTP/1.1
HOST: 192.168.199.183:49494
Content-Length: 264
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Stop"
USER-AGENT: Linux/4.4.23+ UPnP/1.0 HUAWEI_iCOS/iCOS V1R1C00 DLNADOC/1.50
CONNECTION: close

<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>
</u:Stop>
</s:Body>
</s:Envelope>

521

POST /upnp/control/rendertransport1 HTTP/1.1
HOST: 192.168.199.183:49494
Content-Length: 1168
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#SetAVTransportURI"
USER-AGENT: Linux/4.4.23+ UPnP/1.0 HUAWEI_iCOS/iCOS V1R1C00 DLNADOC/1.50
CONNECTION: close

<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://192.168.199.114:49152/upnp/service/local/98070551/0/0.jpg</CurrentURI>
<CurrentURIMetaData>&lt;DIDL-Lite xmlns=&quot;urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:upnp=&quot;urn:schemas-upnp-org:metadata-1-0/upnp/&quot; xmlns:dlna=&quot;urn:schemas-dlna-org:metadata-1-0/&quot; xmlns:huawei=&quot;urn:schemas-upnp-org:metadata-1-0/upnp/huawei/&quot;&gt;&lt;item id=&quot;0&quot; parentID=&quot;-1&quot; restricted=&quot;1&quot;&gt;&lt;dc:title&gt;dlna_default_image&lt;/dc:title&gt;&lt;upnp:class&gt;object.item.imageItem.photo&lt;/upnp:class&gt;&lt;res protocolInfo=&quot;http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=01&quot; size=&quot;501872&quot;&gt;http://192.168.199.114:49152/upnp/service/local/98070551/0/0.jpg&lt;/res&gt;&lt;/item&gt;&lt;/DIDL-Lite&gt;</CurrentURIMetaData>
</u:SetAVTransportURI>
</s:Body>
</s:Envelope>

533 EVENT NOTIFY

541 PLAY

POST /upnp/control/rendertransport1 HTTP/1.1
HOST: 192.168.199.183:49494
Content-Length: 282
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Play"
USER-AGENT: Linux/4.4.23+ UPnP/1.0 HUAWEI_iCOS/iCOS V1R1C00 DLNADOC/1.50
CONNECTION: close

<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>

565 DMR 获取图片数据

GET /upnp/service/local/98070551/0/0.jpg HTTP/1.1
Host: 192.168.199.114:49152
Connection: close
icy-metadata: 1
User-Agent: GStreamer souphttpsrc 1.12.3 libsoup/2.60.1

切换节目

1514:STOP

1524:SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#SetAVTransportURI"\r\n

1544:SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Play"\r\n

1563 GET Video

DMP 抓包分析

大致流程discover->description->post soapaction->get Data->Play

Discover

DMPclient发送M-SEARCH ssdp:discover来发现serverFrame270

M-SEARCH * HTTP/1.1
HOST: 239.255.255.250:1900
MAN: "ssdp:discover"
MX: 5
ST: urn:schemas-upnp-org:device:MediaServer:1

相关代码libupnp:UpnpSearchAsyncvlc有相关实现,应答如下,Frame271

HTTP/1.1 200 OK
CACHE-CONTROL: max-age=1810
DATE: Tue, 26 Mar 2019 03:25:52 GMT
ST: urn:schemas-upnp-org:device:MediaServer:1
USN: uuid:4d696e69-444c-164e-9d41-28d2446289b1::urn:schemas-upnp-org:device:MediaServer:1
EXT:
SERVER: 4.13.0-37-generic DLNADOC/1.50 UPnP/1.0 MiniDLNA/1.2.1
LOCATION: http://192.168.199.183:8200/rootDesc.xml
Content-Length: 0

Description

根据LOACTION获取描述文件,请求如下,Frame275

GET /rootDesc.xml HTTP/1.1
HOST: 192.168.199.183:8200
DATE: Tue, 26 Mar 2019 03:25:51 GMT
CONNECTION: close
USER-AGENT: Linux/4.4.23+, UPnP/1.0, Portable SDK for UPnP devices/1.6.19

应答中传输描述文件,如下

<root xmlns="urn:schemas-upnp-org:device-1-0">
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<device>
<deviceType>urn:schemas-upnp-org:device:MediaServer:1</deviceType>
<friendlyName>My DLNA XXX</friendlyName>
<manufacturer>Justin Maggard</manufacturer>
<manufacturerURL>http://www.netgear.com/</manufacturerURL>
<modelDescription>MiniDLNA on Linux</modelDescription>
<modelName>Windows Media Connect compatible (MiniDLNA)</modelName>
<modelNumber>1</modelNumber>
<modelURL>http://www.netgear.com</modelURL>
<serialNumber>12345678</serialNumber>
<UDN>uuid:4d696e69-444c-164e-9d41-28d2446289b1</UDN>
<dlna:X_DLNADOC xmlns:dlna="urn:schemas-dlna-org:device-1-0">DMS-1.50</dlna:X_DLNADOC>
<presentationURL>/</presentationURL>
<iconList>
<icon>
<mimetype>image/png</mimetype>
<width>48</width>
<height>48</height>
<depth>24</depth>
<url>/icons/sm.png</url>
</icon>
<icon>
<mimetype>image/png</mimetype>
<width>120</width>
<height>120</height>
<depth>24</depth>
<url>/icons/lrg.png</url>
</icon>
<icon>
<mimetype>image/jpeg</mimetype>
<width>48</width>
<height>48</height>
<depth>24</depth>
<url>/icons/sm.jpg</url>
</icon>
<icon>
<mimetype>image/jpeg</mimetype>
<width>120</width>
<height>120</height>
<depth>24</depth>
<url>/icons/lrg.jpg</url>
</icon>
</iconList>
<serviceList>
<service>
<serviceType>urn:schemas-upnp-org:service:ContentDirectory:1</serviceType>
<serviceId>urn:upnp-org:serviceId:ContentDirectory</serviceId>
<controlURL>/ctl/ContentDir</controlURL>
<eventSubURL>/evt/ContentDir</eventSubURL>
<SCPDURL>/ContentDir.xml</SCPDURL>
</service>
<service>
<serviceType>urn:schemas-upnp-org:service:ConnectionManager:1</serviceType>
<serviceId>urn:upnp-org:serviceId:ConnectionManager</serviceId>
<controlURL>/ctl/ConnectionMgr</controlURL>
<eventSubURL>/evt/ConnectionMgr</eventSubURL>
<SCPDURL>/ConnectionMgr.xml</SCPDURL>
</service>
<service>
<serviceType>
urn:microsoft.com:service:X_MS_MediaReceiverRegistrar:1
</serviceType>
<serviceId>
urn:microsoft.com:serviceId:X_MS_MediaReceiverRegistrar
</serviceId>
<controlURL>/ctl/X_MS_MediaReceiverRegistrar</controlURL>
<eventSubURL>/evt/X_MS_MediaReceiverRegistrar</eventSubURL>
<SCPDURL>/X_MS_MediaReceiverRegistrar.xml</SCPDURL>
</service>
</serviceList>
</device>
</root>

POST SOAPACTION

根据xml中描述的service选择相关操作,例如操作文件夹请求如下,Frame335

POST /ctl/ContentDir HTTP/1.1
HOST: 192.168.199.183:8200
CONTENT-LENGTH: 440
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:ContentDirectory:1#Browse"
USER-AGENT: Linux/4.4.23+, UPnP/1.0, Portable SDK for UPnP devices/1.6.19

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body><u:Browse xmlns:u="urn:schemas-upnp-org:service:ContentDirectory:1">
<ObjectID>0</ObjectID>
<BrowseFlag>BrowseDirectChildren</BrowseFlag>
<Filter>*</Filter>
<StartingIndex>0</StartingIndex>
<RequestedCount>5000</RequestedCount>
<SortCriteria></SortCriteria>
</u:Browse>
</s:Body>
</s:Envelope>

Frame 442-569为翻到文件夹最底层,会传输大量图片数据上来

<?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:BrowseResponse xmlns:u="urn:schemas-upnp-org:service:ContentDirectory:1"><Result>&lt;DIDL-Lite xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/"&gt;
&lt;item id="3$FF0$64$13$B" parentID="3$FF0" restricted="1" refID="64$13$B"&gt;&lt;dc:title&gt;543161&lt;/dc:title&gt;&lt;upnp:class&gt;object.item.imageItem.photo&lt;/upnp:class&gt;&lt;res size="532088" resolution="2048x1345" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/MediaItems/25615.jpg&lt;/res&gt;&lt;res resolution="1024x575" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/Resized/25615.jpg?width=1024,height=575&lt;/res&gt;&lt;res resolution="640x359" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/Resized/25615.jpg?width=640,height=359&lt;/res&gt;&lt;res resolution="160x89" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/Resized/25615.jpg?width=160,height=89&lt;/res&gt;&lt;/item&gt;&lt;item id="3$FF0$64$13$2B" parentID="3$FF0" restricted="1" refID="64$13$2B"&gt;&lt;dc:title&gt;543159&lt;/dc:title&gt;&lt;upnp:class&gt;object.item.imageItem.photo&lt;/upnp:class&gt;&lt;res size="461737" resolution="1920x1260" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/MediaItems/25616.jpg&lt;/res&gt;&lt;res resolution="1024x671" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/Resized/25616.jpg?width=1024,height=671&lt;/res&gt;&lt;res resolution="640x419" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/Resized/25616.jpg?width=640,height=419&lt;/res&gt;&lt;res resolution="160x104" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/Resized/25616.jpg?width=160,height=104&lt;/res&gt;&lt;/item&gt;&lt;item id="3$FF0$64$13$2D" parentID="3$FF0" restricted="1" refID="64$13$2D"&gt;&lt;dc:title&gt;543117&lt;/dc:title&gt;&lt;upnp:class&gt;object.item.imageItem.photo&lt;/upnp:class&gt;&lt;res size="674720" resolution="2880x1800" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/MediaItems/25618.jpg&lt;/res&gt;&lt;res resolution="1024x639" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/Resized/25618.jpg?width=1024,height=639&lt;/res&gt;&lt;res resolution="640x399" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/Resized/25618.jpg?width=640,height=399&lt;/res&gt;&lt;res resolution="160x98" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/Resized/25618.jpg?width=160,height=98&lt;/res&gt;&lt;/item&gt;&lt;item id="3$FF0$64$13$2F" parentID="3$FF0" restricted="1" refID="64$13$2F"&gt;&lt;dc:title&gt;543019&lt;/dc:title&gt;&lt;upnp:class&gt;object.item.imageItem.photo&lt;/upnp:class&gt;&lt;res size="753825" resolution="1920x1200" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/MediaItems/25620.jpg&lt;/res&gt;&lt;res resolution="1024x639" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/Resized/25620.jpg?width=1024,height=639&lt;/res&gt;&lt;res resolution="640x399" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/Resized/25620.jpg?width=640,height=399&lt;/res&gt;&lt;res resolution="160x99" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/Resized/25620.jpg?width=160,height=99&lt;/res&gt;&lt;/item&gt;&lt;item id="3$FF0$64$13$31" parentID="3$FF0" restricted="1" refID="64$13$31"&gt;&lt;dc:title&gt;543128&lt;/dc:title&gt;&lt;upnp:class&gt;object.item.imageItem.photo&lt;/upnp:class&gt;&lt;res size="836038" resolution="2048x1325"  protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/MediaItems/25603.jpg&lt;/res&gt;&lt;res resolution="1024x681" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/Resized/25603.jpg?width=1024,height=681&lt;/res&gt;&lt;res resolution="640x426" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/Resized/25603.jpg?width=640,height=426&lt;/res&gt;&lt;res resolution="160x106" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/Resized/25603.jpg?width=160,height=106&lt;/res&gt;&lt;/item&gt;&lt;item id="3$FF0$64$13$21" parentID="3$FF0" restricted="1" refID="64$13$21"&gt;&lt;dc:title&gt;542965&lt;/dc:title&gt;&lt;upnp:class&gt;object.item.imageItem.photo&lt;/upnp:class&gt;&lt;res size="1726194" resolution="1920x1200" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/MediaItems/25606.jpg&lt;/res&gt;&lt;res resolution="1024x639" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/Resized/25606.jpg?width=1024,height=639&lt;/res&gt;&lt;res resolution="640x399" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/Resized/25606.jpg?width=640,height=399&lt;/res&gt;&lt;res resolution="160x99" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/Resized/25606.jpg?width=160,height=99&lt;/res&gt;&lt;/item&gt;&lt;item id="3$FF0$64$13$23" parentID="3$FF0" restricted="1" refID="64$13$23"&gt;&lt;dc:title&gt;542998&lt;/dc:title&gt;&lt;upnp:class&gt;object.item.imageItem.photo&lt;/upnp:class&gt;&lt;res size="2904437" resolution="1920x1200" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/MediaItems/25608.jpg&lt;/res&gt;&lt;res resolution="1024x639" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/Resized/25608.jpg?width=1024,height=639&lt;/res&gt;&lt;res resolution="640x399" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/Resized/25608.jpg?width=640,height=399&lt;/res&gt;&lt;res resolution="160x99" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/Resized/25608.jpg?width=160,height=99&lt;/res&gt;&lt;/item&gt;&lt;item id="3$FF0$64$13$2C" parentID="3$FF0" restricted="1" refID="64$13$2C"&gt;&lt;dc:title&gt;542934&lt;/dc:title&gt;&lt;upnp:class&gt;object.item.imageItem.photo&lt;/upnp:class&gt;&lt;res size="1098202" resolution="2048x1360" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/MediaItems/25617.jpg&lt;/res&gt;&lt;res resolution="1024x680" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/Resized/25617.jpg?width=1024,height=680&lt;/res&gt;&lt;res resolution="640x425" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/Resized/25617.jpg?width=640,height=425&lt;/res&gt;&lt;res resolution="160x106" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/Resized/25617.jpg?width=160,height=106&lt;/res&gt;&lt;/item&gt;&lt;item id="3$FF0$64$13$2E" parentID="3$FF0" restricted="1" refID="64$13$2E"&gt;&lt;dc:title&gt;542994&lt;/dc:title&gt;&lt;upnp:class&gt;object.item.imageItem.photo&lt;/upnp:class&gt;&lt;res size="970686" resolution="1920x1200" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/MediaItems/25619.jpg&lt;/res&gt;&lt;res resolution="1024x639" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/Resized/25619.jpg?width=1024,height=639&lt;/res&gt;&lt;res resolution="640x399" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/Resized/25619.jpg?width=640,height=399&lt;/res&gt;&lt;res resolution="160x99" protocolInfo="http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=00F00000000000000000000000000000"&gt;http://192.168.199.183:8200/Resized/25619.jpg?width=160,height=99&lt;/res&gt;&lt;/item&gt;&lt;/DIDL-Lite&gt;</Result>
<NumberReturned>50</NumberReturned>
<TotalMatches>50</TotalMatches>
<UpdateID>1</UpdateID></u:BrowseResponse></s:Body></s:Envelope>

播放某个具体图片请求,Frame 755

GET /MediaItems/25602.jpg HTTP/1.1
Host: 192.168.199.183:8200
Accept: */*
Accept-Language: en_US
User-Agent: VLC/3.0.4 LibVLC/3.0.4
Range: bytes=0-