工作生活

UPnP交互网络包示例

2019-07-01  本文已影响0人  云中的醉

转载文章,原文链接

1 概况

1.1 基础协议

1.2 UPnP Device Architecture (UDA)

  1. Addressing : IP assignment on any network (AutoIP)
  2. Discovery : Of services/devices (SSDP)
  3. Description : Syntax for devices/services (SCPD/DDD)
  4. Control : Of device services (SOAP)
  5. Eventing : Updates of variables (GENA)
  6. Presentation : Access to device HTML page

1.3 Device Control Protocols (DCPs)

1.4 UPnP Architecture Diagram

Standard Services           Device Control Protocols

Common Architecture         3.Control; 4.Eventing; 5.Presentation
                            2.Description
                            1.Discovery
                            0.Addressing

Base                        HTTP, XML, TCP, UDP, IP

2 协议

2.1 术语

2.2 发现(Discovery)

2.2.1 Advertising

多播内容:

如:

NOTIFY * HTTP/1.1
HOST: 239.255.255.250:1900
CACHE-CONTROL: max-age = seconds until advertisement expires
LOCATION: URL for UPnP description for root device
NT: search target
NTS: ssdp:alive
USN: advertisement UUID

2.2.2 Searching

多播内容:

如:

M-SEARCH * HTTP/1.1
MX: 3
MAN: "ssdp:discover"
HOST: 239.255.255.250:1900
ST: ssdp:all

2.2.3 Responding

单播内容:

如:

HTTP/1.1 200 OK
Location: http://172.16.5.92:1074/
Cache-Control: max-age=1800
Server: UPnP/1.0 DLNADOC/1.50 Platinum/1.0.4.11
EXT:
USN: uuid:2b82a0e2-27b0-b245-80bd-8922a9494b47::upnp:rootdevice
ST: upnp:rootdevice
Date: Wed, 17 Feb 2016 09:41:57 GMT

2.3 描述

2.3.1 设备描述

<root xmlns:dlna="urn:schemas-dlna-org:device-1-0"
    configid="2369201"
    xmlns="urn:schemas-upnp-org:device-1-0">
    <specversion>
        <major>1</major>
        <minor>1</minor>
    </specversion>
    <device> 
        <!-- 物理描述: -->
        <friendlyname>miketest platinum upnp media server</friendlyname>
        <manufacturer>plutinosoft</manufacturer>
        <manufacturerurl>http://www.plutinosoft.com/</manufacturerurl>
        <modeldescription>platinum file media server</modeldescription>
        <modelname>platinum file media server</modelname>
        <modelnumber>1.0</modelnumber>
        <modelurl>http://www.plutinosoft.com/</modelurl>
        <serialnumber>xxx</serialnumber>
        <udn>uuid:9081d7c5-7b76-a146-613c-b5188bc1bcb4</udn>
        <upc>universal product product code</upc> 
        <!-- 逻辑描述: -->
        <devicetype>urn:schemas-upnp-org:device:mediaserver:1</devicetype>
        <dlna:x_dlnadoc xmlns:dlna="urn:schemas-dlna-org:device-1-0">dms-1.50</dlna:x_dlnadoc>
        <servicelist>
            <service>
                <servicetype>urn:schemas-upnp-org:service:contentdirectory:1</servicetype>
                <serviceid>urn:upnp-org:serviceid:contentdirectory</serviceid>
                <scpdurl>/contentdirectory/9081d7c5-7b76-a146-613c-b5188bc1bcb4/scpd.xml</scpdurl>
                <controlurl>/contentdirectory/9081d7c5-7b76-a146-613c-b5188bc1bcb4/control.xml
                </controlurl>
                <eventsuburl>/contentdirectory/9081d7c5-7b76-a146-613c-b5188bc1bcb4/event.xml
                </eventsuburl>
            </service>
            <service>
                <servicetype>urn:schemas-upnp-org:service:connectionmanager:1</servicetype>
                <serviceid>urn:upnp-org:serviceid:connectionmanager</serviceid>
                <scpdurl>/connectionmanager/9081d7c5-7b76-a146-613c-b5188bc1bcb4/scpd.xml</scpdurl>
                <controlurl>/connectionmanager/9081d7c5-7b76-a146-613c-b5188bc1bcb4/control.xml
                </controlurl>
                <eventsuburl>/connectionmanager/9081d7c5-7b76-a146-613c-b5188bc1bcb4/event.xml
                </eventsuburl>
            </service>
        </servicelist> 
        <!-- 其他描述: -->
        <iconlist>
            <icon>
                <mimetype>image/png</mimetype>
                <width>72</width>
                <height>72</height>
                <depth>32</depth>
                <url>/dev/9081d7c5-7b76-a146-613c-b5188bc1bcb4/icon.png</url>
            </icon>
        </iconlist>
        <presentationurl>url for presentation</presentationurl>
    </device>
</root>

上面是MediaServer, 所以serviceList中包括ContentDirectory, ConnectionManager两种服务. 如果是MediaRenderer, 则包括: AVTransport, ConnectionManager, RenderingControl几种服务.

2.3.2 服务描述

<!--?xml version="1.0" encoding="utf-8"?-->
<scpd xmlns="urn:schemas-upnp-org:service-1-0">
    <specversion>
        <major>1</major>
        <minor>0</minor>
    </specversion> 
    <!-- 动作(action)描述: -->
    <actionlist>
        <action>
            <name>browse</name>
            <argumentlist>
                <argument>
                    <name>objectid</name>
                    <direction>in</direction>
                    <relatedstatevariable>a_arg_type_objectid</relatedstatevariable>
                </argument>
                ...
                <argument>
                    <name>result</name>
                    <direction>out</direction>
                    <relatedstatevariable>a_arg_type_result</relatedstatevariable>
                </argument>
                ...
            </argumentlist>
        </action>
        <action>
            <name>getsortcapabilities</name>
            <argumentlist>
                <argument>
                    <name>sortcaps</name>
                    <direction>out</direction>
                    <relatedstatevariable>sortcapabilities</relatedstatevariable>
                </argument>
            </argumentlist>
        </action>
        ...
    </actionlist> 
    <!-- 状态变量描述 -->
    <servicestatetable>
        <statevariable sendevents="no">
            <name>a_arg_type_browseflag</name>
            <datatype>string</datatype>
            <allowedvaluelist>
                <allowedvalue>browsemetadata</allowedvalue>
                <allowedvalue>browsedirectchildren</allowedvalue>
            </allowedvaluelist>
        </statevariable>
        <statevariable sendevents="yes">
            <name>systemupdateid</name>
            <datatype>ui4</datatype>
        </statevariable>
        ...
    </servicestatetable>
</scpd>

2.4 控制

2.4.1 通用协议格式

命令:

POST path of control URL HTTP/1.1
HOST: host of control URL:port of control URL
CONTENT-LENGTH: bytes in body
CONTENT-TYPE: text/xml; charset="utf-8"
SOAPACTION: "urn:schemas-upnp-org:service:serviceType:v#actionName"
<!--?xml version="1.0"?-->
<s:envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
    s:encodingstyle="http://schemas.xmlsoap.org/soap/encoding/">
    <s:body>
        <u:actionname xmlns:u="urn:schemas-upnp-org:service:serviceType:v">
            <argumentname>in arg value</argumentname>
            other in args and their values go here, if any
        </u:actionname>
    </s:body>
</s:envelope>

响应:

HTTP/1.1 200 OK
CONTENT-LENGTH: bytes in body
CONTENT-TYPE: text/xml; charset="utf-8"
DATE: when response was generated
EXT:
SERVER: OS/version UPnP/1.0 product/version
<!--?xml version="1.0"?-->
<s:envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
    s:encodingstyle="http://schemas.xmlsoap.org/soap/encoding/">
    <s:body>
        <u:actionnameresponse xmlns:u="urn:schemas-upnp-org:service:serviceType:v">
            <argumentname>out arg value</argumentname>
            other out args and their values go here, if any
        </u:actionnameresponse>
    </s:body>
</s:envelope>

2.4.2 Browse

2.4.2.1 浏览目录

Action:

POST /ContentDirectory/f1062579-d833-971e-8db8-76b28da5dc2d/control.xml HTTP/1.1
SOAPAction: "urn:schemas-upnp-org:service:ContentDirectory:1#Browse"
User-Agent: UPnP/1.0 DLNADOC/1.50 Platinum/1.0.5.13
Host: 172.16.5.92:1873
Content-Length: 571
Content-Type: text/xml; charset="utf-8"
<!--?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:browse xmlns:u="urn:schemas-upnp-org:service:ContentDirectory:1">
            <objectid>0</objectid>
            <browseflag>BrowseDirectChildren</browseflag>
            <filter>dc:date,upnp:genre,res,res@duration,res@size,upnp:albumArtURI,\
                upnp:album,upnp:artist,upnp:author,searchable,childCount
            </filter>
            <startingindex>0</startingindex>
            <requestedcount>30</requestedcount>
            <sortcriteria></sortcriteria>
        </u:browse>
    </s:body>
</s:envelope>

Response:

HTTP/1.1 200 OK
Ext:
Date: Thu, 01 Jan 1970 16:56:28 GMT
Content-Length: 1083
Content-Type: text/xml; charset="utf-8"
Server: UPnP/1.0 DLNADOC/1.50 Platinum/1.0.4.11
<!--?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>
                <didl-lite xmlns:dc="http://purl.org/dc/elements/1.1/"
                    xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/"
                    xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/"
                    xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/">
                    <container
                        id="0/usb"
                        parentid="0"
                        restricted="1">
                        <dc:title>usb</dc:title>
                        <upnp:genre>Unknown</upnp:genre>
                        <upnp:class>object.container.storageFolder</upnp:class>
                    </container>
                    <container
                        id="0/LiveProgram"
                        parentid="0"
                        restricted="1">
                        <dc:title>LiveProgram</dc:title>
                        <upnp:genre>Unknown</upnp:genre>
                        <upnp:class>object.container.storageFolder</upnp:class>
                    </container>
                </didl-lite>
            </result>
            <numberreturned>2</numberreturned>
            <totalmatches>2</totalmatches>
            <updateid>1</updateid>
        </u:browseresponse>
    </s:body>
</s:envelope>

2.4.2.2 浏览文件

Action:

POST /ContentDirectory/260ae85c-6cc5-4734-86ff-9f5753971493/control.xml HTTP/1.1
SOAPAction: "urn:schemas-upnp-org:service:ContentDirectory:1#Browse"
User-Agent: UPnP/1.0 DLNADOC/1.50 Platinum/1.0.5.13
Host: 172.16.5.92:1135
Content-Length: 585
Content-Type: text/xml; charset="utf-8"
<!--?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:browse xmlns:u="urn:schemas-upnp-org:service:ContentDirectory:1">
            <objectid>0/usb/media/mp4</objectid>
            <browseflag>BrowseDirectChildren</browseflag>
            <filter>dc:date,upnp:genre,res,res@duration,res@size,upnp:albumArtURI,\
                upnp:album,upnp:artist,upnp:author,searchable,childCount
            </filter>
            <startingindex>0</startingindex>
            <requestedcount>30</requestedcount>
            <sortcriteria></sortcriteria>
        </u:browse>
    </s:body>
</s:envelope>

Response:

HTTP/1.1 200 OK
Ext:
Date: Thu, 01 Jan 1970 19:39:07 GMT
Content-Length: 1567
Content-Type: text/xml; charset="utf-8"
Server: UPnP/1.0 DLNADOC/1.50 Platinum/1.0.4.11
<!--?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>
                <didl-lite xmlns:dc="http://purl.org/dc/elements/1.1/"
                    xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/"
                    xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/"
                    xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/">
                    <item
                        id="0/usb/media/mp4/alan.mp4"
                        parentid="0/usb/media/mp4"
                        restricted="1">
                        <dc:title>alan</dc:title>
                        <upnp:genre>Unknown</upnp:genre>
                        <res
                            protocolinfo="http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_SP_AAC; \
                                DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01500000000000000000000000000000"
                            size="37748317">
                            http://172.16.5.92:1135/usb/%25/media/mp4/alan.mp4
                        </res>
                        <upnp:class>object.item.videoItem</upnp:class>
                    </item>
                    <item
                        id="0/usb/media/mp4/avenger.mp4"
                        parentid="0/usb/media/mp4"
                        restricted="1">
                        <dc:title>avenger</dc:title>
                        <upnp:genre>Unknown</upnp:genre>
                        <res
                            protocolinfo="http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_SP_AAC; \
                                DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01500000000000000000000000000000"
                            size="133090990">
                            http://172.16.5.92:1135/usb/%25/media/mp4/avenger.mp4
                        </res>
                        <upnp:class>object.item.videoItem</upnp:class>
                    </item>
                </didl-lite>
            </result>
            <numberreturned>2</numberreturned>
            <totalmatches>2</totalmatches>
            <updateid>1</updateid>
        </u:browseresponse>
    </s:body>
</s:envelope>

2.4.3 SetAVTransportURI

Action:

POST /AVTransport/a9e91358-f1d3-8081-6700-657b903a4cdf/control.xml HTTP/1.1
SOAPAction: "urn:schemas-upnp-org:service:AVTransport:1#SetAVTransportURI"
User-Agent: UPnP/1.0 DLNADOC/1.50 Platinum/1.0.5.13
Host: 172.16.5.92:1146
Content-Length: 1318
Content-Type: text/xml; charset="utf-8"
<!--?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://172.16.5.90:1191/%25/F378CB0AC0D9CF6C47F2E8675FF24DEF/buildings_alan.mp4
            </currenturi>
            <currenturimetadata>
                <didl-lite xmlns:dc="http://purl.org/dc/elements/1.1/"
                    xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/"
                    xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/"
                    xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/">
                    <item
                        id="/media/f/avstream/mp4/buildings_alan.mp4"
                        parentid="/media/f/avstream/mp4/"
                        restricted="1">
                        <dc:title>buildings_alan</dc:title>
                        <dc:creator>Unknown</dc:creator>
                        <dc:date>2015-05-20T00:00:00Z</dc:date>
                        <upnp:genre>Unknown</upnp:genre>
                        <res
                            protocolinfo="http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_SP_AAC; \
                                DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01500000000000000000000000000000"
                            size="136059975">
                            http://172.16.5.90:1191/%25/F378CB0AC0D9CF6C47F2E8675FF24DEF/buildings_alan.mp4
                        </res>
                        <upnp:class>object.item.videoItem</upnp:class>
                    </item>
                </didl-lite>
            </currenturimetadata>
        </u:setavtransporturi>
    </s:body>
</s:envelope>

Response:

HTTP/1.1 200 OK
Ext:
Date: Thu, 01 Jan 1970 21:03:21 GMT
Content-Length: 277
Content-Type: text/xml; charset="utf-8"
Server: UPnP/1.0 DLNADOC/1.50 Platinum/1.0.4.11
<!--?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:setavtransporturiresponse xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"></u:setavtransporturiresponse>
    </s:body>
</s:envelope>

2.4.4 Play

如下: i3/i21: ... 等行表示包发送的方向. 本例中172.16.5.90为CP, 172.16.5.92为Renderer,.

POST /AVTransport/a9e91358-f1d3-8081-6700-657b903a4cdf/control.xml HTTP/1.1
SOAPAction: "urn:schemas-upnp-org:service:AVTransport:1#Play"
User-Agent: UPnP/1.0 DLNADOC/1.50 Platinum/1.0.5.13
Host: 172.16.5.92:1146
Content-Length: 306
Content-Type: text/xml; charset="utf-8"
<!--?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>
NOTIFY /a9e91358-f1d3-8081-6700-657b903a4cdf/urn:upnp-org:serviceId:AVTransport HTTP/1.1
NT: upnp:event
NTS: upnp:propchange
SID: uuid:db690087-714d-0ba5-fec8-7d19a4dbf60d
SEQ: 2
User-Agent: Neptune/1.1.3
Host: 172.16.5.90:1334
Content-Length: 324
Content-Type: text/xml; charset="utf-8"
<!--?xml version="1.0" encoding="UTF-8"?-->
<e:propertyset xmlns:e="urn:schemas-upnp-org:event-1-0">
    <e:property>
        <lastchange>
            <event xmlns="urn:schemas-upnp-org:metadata-1-0/AVT/">
                <instanceid val="0">
                    <transportstate val="TRANSITIONING"></transportstate>
                </instanceid>
            </event>
        </lastchange>
    </e:property>
</e:propertyset>
i23   : 172.16.5.90:1334 > 172.16.5.92:40036, len:111
HTTP/1.1 200 OK
Date: Fri, 08 Apr 2016 03:55:19 GMT
Content-Length: 0
Server: UPnP/1.0 DLNADOC/1.50 Kodi
GET /%25/F378CB0AC0D9CF6C47F2E8675FF24DEF/buildings_alan.mp4 HTTP/1.1
User-Agent: Lavf/57.25.100
Accept: */*
Range: bytes=0-
Connection: close
Host: 172.16.5.90:1191
Icy-MetaData: 1


GET /%25/F378CB0AC0D9CF6C47F2E8675FF24DEF/buildings_alan.mp4 HTTP/1.1
...
HTTP/1.1 200 OK
Ext:
Date: Thu, 01 Jan 1970 21:03:38 GMT
Content-Length: 264
Content-Type: text/xml; charset="utf-8"
Server: UPnP/1.0 DLNADOC/1.50 Platinum/1.0.4.11
<!--?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:playresponse xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"></u:playresponse>
    </s:body>
</s:envelope>
NOTIFY /a9e91358-f1d3-8081-6700-657b903a4cdf/urn:upnp-org:serviceId:AVTransport HTTP/1.1
NT: upnp:event
NTS: upnp:propchange
SID: uuid:db690087-714d-0ba5-fec8-7d19a4dbf60d
SEQ: 3
User-Agent: Neptune/1.1.3
Host: 172.16.5.90:1334
Content-Length: 318
Content-Type: text/xml; charset="utf-8"
<!--?xml version="1.0" encoding="UTF-8"?-->
<e:propertyset xmlns:e="urn:schemas-upnp-org:event-1-0">
    <e:property>
        <lastchange>
            <event xmlns="urn:schemas-upnp-org:metadata-1-0/AVT/">
                <instanceid val="0">
                    <transportstate val="PLAYING"></transportstate>
                </instanceid>
            </event>
        </lastchange>
    </e:property>
</e:propertyset>
i1896 : 172.16.5.90:1334 > 172.16.5.92:40036, len:111
HTTP/1.1 200 OK
Date: Fri, 08 Apr 2016 03:55:20 GMT
Content-Length: 0
Server: UPnP/1.0 DLNADOC/1.50 Kodi
NOTIFY /a9e91358-f1d3-8081-6700-657b903a4cdf/urn:upnp-org:serviceId:AVTransport HTTP/1.1
NT: upnp:event
NTS: upnp:propchange
SID: uuid:db690087-714d-0ba5-fec8-7d19a4dbf60d
SEQ: 4
User-Agent: Neptune/1.1.3
Host: 172.16.5.90:1334
Content-Length: 429
Content-Type: text/xml; charset="utf-8"
<!--?xml version="1.0" encoding="UTF-8"?-->
<e:propertyset xmlns:e="urn:schemas-upnp-org:event-1-0">
    <e:property>
        <lastchange>
            <event xmlns="urn:schemas-upnp-org:metadata-1-0/AVT/">
                <instanceid val="0">
                    <numberoftracks val="1">
                        <currenttrack val="1">
                            <currenttrackduration val="00:04:45">
                                <currentmediaduration val="00:04:45"></currentmediaduration>
                            </currenttrackduration>
                        </currenttrack>
                    </numberoftracks>
                </instanceid>
            </event>
        </lastchange>
    </e:property>
</e:propertyset>
i6980 : 172.16.5.90:1334 > 172.16.5.92:40036, len:111
HTTP/1.1 200 OK
Date: Fri, 08 Apr 2016 03:55:21 GMT
Content-Length: 0
Server: UPnP/1.0 DLNADOC/1.50 Kodi
...

2.5 事件

2.5.1 通用协议格式

订阅(Subscribing):

SUBSCRIBE publisher path HTTP/1.1
HOST: publisher host:publisher port
CALLBACK: <delivery URL>
NT: upnp:event
TIMEOUT: Second-requested subscription duration

响应Response:

HTTP/1.1 200 OK
DATE: when response was generated
SERVER: OS/version UPnP/1.0 product/version
SID: uuid:subscription-UUID
TIMEOUT: Second-actual subscription duration

事件通知(Eventing):

NOTIFY delivery path HTTP/1.1
HOST: delivery host:delivery port
CONTENT-TYPE: text/xml
CONTENT-LENGTH: Bytes in body
NT: upnp:event
NTS: upnp:propchange
SID: uuid:subscription-UUID
SEQ: event key
<!--?xml version="1.0"?-->
<e:propertyset xmlns:e="urn:schemas-upnp-org:event-1-0">
    <e:property>
        <variablename>new value</variablename>
    </e:property>
    Other variable names and values (if any) go here.
</e:propertyset>

取消订阅:

UNSUBSCRIBE publisher path HTTP/1.1
HOST: publisher host:publisher port
SID: uuid:subscription UUID

2.5.2 订阅(Subscribing)/事件通知(Eventing)示例

2.5.2.1 AVTransport

Subscribing:

SUBSCRIBE /AVTransport/a44792d5-e283-2b1c-d4b7-0a1d06f5df27/event.xml HTTP/1.1
NT: upnp:event
CALLBACK: <http://172.16.5.90:1306/a44792d5-e283-2b1c-d4b7-0a1d06f5df27/urn:upnp-org:serviceId:AVTransport>
TIMEOUT: Second-1800
User-Agent: UPnP/1.0 DLNADOC/1.50 Kodi
Host: 172.16.5.92:1153

Response:

HTTP/1.1 200 OK
SID: uuid:fb5c0474-782f-b216-3cdd-c161d69d8dc6
TIMEOUT: Second-1800
Date: Wed, 13 Apr 2016 06:09:58 GMT
Content-Length: 0
Server: UPnP/1.0 DLNADOC/1.50 Platinum/1.0.4.11

Eventing(起始播放时):

NOTIFY /a44792d5-e283-2b1c-d4b7-0a1d06f5df27/urn:upnp-org:serviceId:AVTransport HTTP/1.1
NT: upnp:event
NTS: upnp:propchange
SID: uuid:fb5c0474-782f-b216-3cdd-c161d69d8dc6
SEQ: 0
User-Agent: Neptune/1.1.3
Host: 172.16.5.90:1306
Content-Length: 3500
Content-Type: text/xml; charset="utf-8"
<!--?xml version="1.0" encoding="UTF-8"?-->
<e:propertyset xmlns:e="urn:schemas-upnp-org:event-1-0">
    <e:property>
        <lastchange>
            <event xmlns="urn:schemas-upnp-org:metadata-1-0/AVT/">
                <instanceid val="0">
                    <currentplaymode val="NORMAL">
                        <recordstoragemedium val="NOT_IMPLEMENTED">
                            <currenttrackuri val="">
                                <currenttrackduration val="00:00:00">
                                    <currentrecordqualitymode val="NOT_IMPLEMENTED">
                                        <currentmediaduration val="00:00:00">
                                            <avtransporturi val="http://172.16.5.90:1191/%25/417D1D61A0DABEAADBADAC3C6806B811/amazing_spider_man_2.mp4">
                                                <transportstate val="STOPPED">
                                                    <currenttrackmetadata val="">
                                                        <nextavtransporturi val="">
                                                            <possiblerecordqualitymodes val="NOT_IMPLEMENTED">
                                                                <currenttrack val="0">
                                                                    <nextavtransporturimetadata val="">
                                                                        <playbackstoragemedium val="NONE">
                                                                            <currenttransportactions val="Play,Pause,Stop,Seek,Next,Previous">
                                                                                <recordmediumwritestatus val="NOT_IMPLEMENTED">
                                                                                    <possibleplaybackstoragemedia val="NONE,NETWORK,HDD,CD-DA,UNKNOWN">
                                                                                        <avtransporturimetadata val="&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:sec=&quot;http://www.sec.co.kr/&quot;
                            xmlns:xbmc=&quot;urn:schemas-xbmc-org:metadata-1-0/&quot;>&lt;item
                            id=&quot;/media/f/avstream/mp4/amazing_spider_man_2.mp4&quot;
                            parentID=&quot;&quot;
                            restricted=&quot;1&quot;>&lt;dc:title>amazing_spider_man_2&lt;/dc:title>&lt;dc:creator>Unknown&lt;/dc:creator>&lt;dc:date>2014-09-04&lt;/dc:date>&lt;dc:publisher>Unknown&lt;/dc:publisher>&lt;upnp:genre>Unknown&lt;/upnp:genre>&lt;upnp:albumArtURI
                            dlna:profileID=&quot;JPEG_TN&quot;>http://172.16.5.90:1191/%25/849BE949E91D458B577B57B2075DD85D/amazing_spider_man_2.mp4&lt;/upnp:albumArtURI>&lt;upnp:lastPlaybackTime>1601-01-01T00:00:00+21:36&lt;/upnp:lastPlaybackTime>&lt;upnp:playbackCount>0&lt;/upnp:playbackCount>&lt;upnp:episodeSeason>0&lt;/upnp:episodeSeason>&lt;res
                            duration=&quot;2:21:34.000&quot; size=&quot;1425378294&quot;
                            resolution=&quot;1280x720&quot;
                            protocolInfo=&quot;http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_SP_AAC;DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01500000000000000000000000000000&quot;>http://172.16.5.90:1191/%25/417D1D61A0DABEAADBADAC3C6806B811/amazing_spider_man_2.mp4&lt;/res>&lt;res
                            protocolInfo=&quot;xbmc.org:*:thumb:*&quot;>http://172.16.5.90:1191/%25/849BE949E91D458B577B57B2075DD85D/amazing_spider_man_2.mp4&lt;/res>&lt;xbmc:dateadded>1601-01-01&lt;/xbmc:dateadded>&lt;xbmc:rating>0.0&lt;/xbmc:rating>&lt;xbmc:artwork
                            type=&quot;thumb&quot;>http://172.16.5.90:1191/%25/849BE949E91D458B577B57B2075DD85D/amazing_spider_man_2.mp4&lt;/xbmc:artwork>&lt;upnp:class>object.item.videoItem&lt;/upnp:class>&lt;/item>&lt;/DIDL-Lite>">
                                                                                            <numberoftracks val="0">
                                                                                                <possiblerecordstoragemedia val="NOT_IMPLEMENTED">
                                                                                                    <transportstatus val="OK">
                                                                                                        <transportplayspeed val="1"></transportplayspeed>
                                                                                                    </transportstatus>
                                                                                                </possiblerecordstoragemedia>
                                                                                            </numberoftracks>
                                                                                        </avtransporturimetadata>
                                                                                    </possibleplaybackstoragemedia>
                                                                                </recordmediumwritestatus>
                                                                            </currenttransportactions>
                                                                        </playbackstoragemedium>
                                                                    </nextavtransporturimetadata>
                                                                </currenttrack>
                                                            </possiblerecordqualitymodes>
                                                        </nextavtransporturi>
                                                    </currenttrackmetadata>
                                                </transportstate>
                                            </avtransporturi>
                                        </currentmediaduration>
                                    </currentrecordqualitymode>
                                </currenttrackduration>
                            </currenttrackuri>
                        </recordstoragemedium>
                    </currentplaymode>
                </instanceid>
            </event>
        </lastchange>
    </e:property>
</e:propertyset>

Response:

HTTP/1.1 200 OK
Date: Wed, 13 Apr 2016 06:09:43 GMT
Content-Length: 0
Server: UPnP/1.0 DLNADOC/1.50 Kodi

Eventing(TRANSITIONING):

NOTIFY /a44792d5-e283-2b1c-d4b7-0a1d06f5df27/urn:upnp-org:serviceId:AVTransport HTTP/1.1
NT: upnp:event
NTS: upnp:propchange
SID: uuid:fb5c0474-782f-b216-3cdd-c161d69d8dc6
SEQ: 1
User-Agent: Neptune/1.1.3
Host: 172.16.5.90:1306
Content-Length: 2534
Content-Type: text/xml; charset="utf-8"
<!--?xml version="1.0" encoding="UTF-8"?-->
<e:propertyset xmlns:e="urn:schemas-upnp-org:event-1-0">
    <e:property>
        <lastchange>
            <event xmlns="urn:schemas-upnp-org:metadata-1-0/AVT/">
                <instanceid val="0">
                    <avtransporturi val="http://172.16.5.90:1191/%25/FD5D04760DCC122162D0CDEA0FECD3B3/alan.mp4">
                        <avtransporturimetadata val="&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:sec=&quot;http://www.sec.co.kr/&quot;
                            xmlns:xbmc=&quot;urn:schemas-xbmc-org:metadata-1-0/&quot;>&lt;item
                            id=&quot;/media/f/avstream/mp4/alan.mp4&quot;
                            parentID=&quot;&quot;
                            restricted=&quot;1&quot;>&lt;dc:title>alan&lt;/dc:title>&lt;dc:creator>Unknown&lt;/dc:creator>&lt;dc:date>2013-01-07&lt;/dc:date>&lt;dc:publisher>Unknown&lt;/dc:publisher>&lt;upnp:genre>Unknown&lt;/upnp:genre>&lt;upnp:albumArtURI
                            dlna:profileID=&quot;JPEG_TN&quot;>http://172.16.5.90:1191/%25/73D7D987DD67085B244D64E912BE8C6C/alan.mp4&lt;/upnp:albumArtURI>&lt;upnp:lastPlaybackTime>2016-02-24T18:12:53+21:36&lt;/upnp:lastPlaybackTime>&lt;upnp:playbackCount>0&lt;/upnp:playbackCount>&lt;upnp:episodeSeason>0&lt;/upnp:episodeSeason>&lt;res
                            duration=&quot;0:02:33.000&quot; size=&quot;37748317&quot;
                            resolution=&quot;720x480&quot;
                            protocolInfo=&quot;http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_SP_AAC;DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01500000000000000000000000000000&quot;>http://172.16.5.90:1191/%25/FD5D04760DCC122162D0CDEA0FECD3B3/alan.mp4&lt;/res>&lt;res
                            protocolInfo=&quot;xbmc.org:*:thumb:*&quot;>http://172.16.5.90:1191/%25/73D7D987DD67085B244D64E912BE8C6C/alan.mp4&lt;/res>&lt;xbmc:dateadded>1601-01-01&lt;/xbmc:dateadded>&lt;xbmc:rating>0.0&lt;/xbmc:rating>&lt;xbmc:artwork
                            type=&quot;thumb&quot;>http://172.16.5.90:1191/%25/73D7D987DD67085B244D64E912BE8C6C/alan.mp4&lt;/xbmc:artwork>&lt;upnp:class>object.item.videoItem&lt;/upnp:class>&lt;/item>&lt;/DIDL-Lite>">
                            <transportstate val="TRANSITIONING"></transportstate>
                        </avtransporturimetadata>
                    </avtransporturi>
                </instanceid>
            </event>
        </lastchange>
    </e:property>
</e:propertyset>

Response:

HTTP/1.1 200 OK
Date: Wed, 13 Apr 2016 06:09:59 GMT
Content-Length: 0
Server: UPnP/1.0 DLNADOC/1.50 Kodi

Eventing(PLAYING):

NOTIFY /a44792d5-e283-2b1c-d4b7-0a1d06f5df27/urn:upnp-org:serviceId:AVTransport HTTP/1.1
NT: upnp:event
NTS: upnp:propchange
SID: uuid:fb5c0474-782f-b216-3cdd-c161d69d8dc6
SEQ: 2
User-Agent: Neptune/1.1.3
Host: 172.16.5.90:1306
Content-Length: 318
Content-Type: text/xml; charset="utf-8"
<!--?xml version="1.0" encoding="UTF-8"?-->
<e:propertyset xmlns:e="urn:schemas-upnp-org:event-1-0">
    <e:property>
        <lastchange>
            <event xmlns="urn:schemas-upnp-org:metadata-1-0/AVT/">
                <instanceid val="0">
                    <transportstate val="PLAYING"></transportstate>
                </instanceid>
            </event>
        </lastchange>
    </e:property>
</e:propertyset>

Response:

HTTP/1.1 200 OK
Date: Wed, 13 Apr 2016 06:10:00 GMT
Content-Length: 0
Server: UPnP/1.0 DLNADOC/1.50 Kodi

Eventing(STOPPED):

NOTIFY /a44792d5-e283-2b1c-d4b7-0a1d06f5df27/urn:upnp-org:serviceId:AVTransport HTTP/1.1
NT: upnp:event
NTS: upnp:propchange
SID: uuid:fb5c0474-782f-b216-3cdd-c161d69d8dc6
SEQ: 4
User-Agent: Neptune/1.1.3
Host: 172.16.5.90:1306
Content-Length: 466
Content-Type: text/xml; charset="utf-8"
<!--?xml version="1.0" encoding="UTF-8"?-->
<e:propertyset xmlns:e="urn:schemas-upnp-org:event-1-0">
    <e:property>
        <lastchange>
            <event xmlns="urn:schemas-upnp-org:metadata-1-0/AVT/">
                <instanceid val="0">
                    <transportstate val="STOPPED">
                        <numberoftracks val="0">
                            <currenttrack val="0">
                                <currenttrackduration val="00:00:00">
                                    <currentmediaduration val="00:00:00"></currentmediaduration>
                                </currenttrackduration>
                            </currenttrack>
                        </numberoftracks>
                    </transportstate>
                </instanceid>
            </event>
        </lastchange>
    </e:property>
</e:propertyset>

Response:

2.5.2.2 ConnectionManager

Subscribing:

SUBSCRIBE /ConnectionManager/a44792d5-e283-2b1c-d4b7-0a1d06f5df27/event.xml HTTP/1.1
NT: upnp:event
CALLBACK: <http://172.16.5.90:1306/a44792d5-e283-2b1c-d4b7-0a1d06f5df27/urn:upnp-org:serviceId:ConnectionManager>
TIMEOUT: Second-1800
User-Agent: UPnP/1.0 DLNADOC/1.50 Kodi
Host: 172.16.5.92:1153

Response:

HTTP/1.1 200 OK
SID: uuid:0c8245e4-a6b8-5a5d-d7f3-e2004bca123f
TIMEOUT: Second-1800
Date: Wed, 13 Apr 2016 06:09:58 GMT
Content-Length: 0
Server: UPnP/1.0 DLNADOC/1.50 Platinum/1.0.4.11

Eventing:

NOTIFY /a44792d5-e283-2b1c-d4b7-0a1d06f5df27/urn:upnp-org:serviceId:ConnectionManager HTTP/1.1
NT: upnp:event
NTS: upnp:propchange
SID: uuid:0c8245e4-a6b8-5a5d-d7f3-e2004bca123f
SEQ: 0
User-Agent: Neptune/1.1.3
Host: 172.16.5.90:1306
Content-Length: 2929
Content-Type: text/xml; charset="utf-8"
<!--?xml version="1.0" encoding="UTF-8"?-->
<e:propertyset xmlns:e="urn:schemas-upnp-org:event-1-0">
    <e:property>
        <sourceprotocolinfo>
        </sourceprotocolinfo>
    </e:property>
    <e:property>
        <sinkprotocolinfo>http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_SP_AAC,
                http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_L3L_SD_AAC,
                http-get:*:video/x-ms-asf:DLNA.ORG_PN=MPEG4_P2_ASF_ASP_L4_SO_G726,
                http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_PRO,
                http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN,
                http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMAFULL,
                http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L1_WMA,
                http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM,
                http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM,
                http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_BASE,
                http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVSPML_MP3,
                http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMABASE,
                http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL,
                http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_FULL,
                http-get:*:image/png:DLNA.ORG_PN=PNG_LRG,
                http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL_XAC3,
                http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_1080i_AAC,
                http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED,
                http-get:*:video/x-ms-asf:DLNA.ORG_PN=MPEG4_P2_ASF_SP_G726,
                http-get:*:audio/L16;rate=48000;channels=2:DLNA.ORG_PN=LPCM,
                http-get:*:audio/mpeg:DLNA.ORG_PN=MP3,
                http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_PRO,
                http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_HP_HD_AAC,
                http-get:*:audio/mpeg:DLNA.ORG_PN=MP3X,
                http-get:*:video/x-ms-asf:DLNA.ORG_PN=MPEG4_P2_ASF_ASP_L5_SO_G726,
                http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVSPLL_BASE,
                http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC,
                http-get:*:video/mpeg:DLNA.ORG_PN=MPEG1,
                http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVSPML_BASE,
                http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_FULL,
                http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMAPRO,
                http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG,
                http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC_XAC3,
                http-get:*:audio/L16;rate=44100;channels=1:DLNA.ORG_PN=LPCM,
                http-get:*:image/x-ycbcr-yuv420:*,
                http-get:*:video/x-ms-wmv:*,
                http-get:*:audio/x-ms-wma:*,
                http-get:*:video/mp4:*,
                http-get:*:video/avi:*,
                http-get:*:video/quicktime:*,
                http-get:*:video/wtv:*,
                rtsp-rtp-udp:*:video/x-ms-asf:DLNA.ORG_PN=MPEG4_P2_ASF_SP_G726,
                rtsp-rtp-udp:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_PRO,
                rtsp-rtp-udp:*:video/x-ms-asf:DLNA.ORG_PN=MPEG4_P2_ASF_ASP_L5_SO_G726,
                rtsp-rtp-udp:*:video/x-ms-asf:DLNA.ORG_PN=MPEG4_P2_ASF_ASP_L4_SO_G726,
                rtsp-rtp-udp:*:video/x-ms-wmv:DLNA.ORG_PN=WMVSPLL_BASE,
                rtsp-rtp-udp:*:video/x-ms-wmv:DLNA.ORG_PN=WMVSPML_BASE,
                rtsp-rtp-udp:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_PRO,
                rtsp-rtp-udp:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_FULL,
                rtsp-rtp-udp:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L1_WMA,
                rtsp-rtp-udp:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_BASE,
                rtsp-rtp-udp:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_FULL,
                rtsp-rtp-udp:*:video/x-ms-wmv:DLNA.ORG_PN=WMVSPML_MP3,
                rtsp-rtp-udp:*:video/x-ms-wmv:*</sinkprotocolinfo>
    </e:property>
    <e:property>
        <currentconnectionids>0</currentconnectionids>
    </e:property>
</e:propertyset>
i112  : 172.16.5.92:1153 > 172.16.5.90:51264, len:194
HTTP/1.1 200 OK
SID: uuid:57b029f1-db42-1aa4-d9a4-d8275d513f18
TIMEOUT: Second-1800
Date: Wed, 13 Apr 2016 06:09:58 GMT
Content-Length: 0
Server: UPnP/1.0 DLNADOC/1.50 Platinum/1.0.4.11

Response:

HTTP/1.1 200 OK
Date: Wed, 13 Apr 2016 06:09:43 GMT
Content-Length: 0
Server: UPnP/1.0 DLNADOC/1.50 Kodi

2.5.2.3 RenderingControl

Subscribing:

SUBSCRIBE /RenderingControl/a44792d5-e283-2b1c-d4b7-0a1d06f5df27/event.xml HTTP/1.1
NT: upnp:event
CALLBACK: <http://172.16.5.90:1306/a44792d5-e283-2b1c-d4b7-0a1d06f5df27/urn:upnp-org:serviceId:RenderingControl>
TIMEOUT: Second-1800
User-Agent: UPnP/1.0 DLNADOC/1.50 Kodi
Host: 172.16.5.92:1153

Response:

HTTP/1.1 200 OK
SID: uuid:57b029f1-db42-1aa4-d9a4-d8275d513f18
TIMEOUT: Second-1800
Date: Wed, 13 Apr 2016 06:09:58 GMT
Content-Length: 0
Server: UPnP/1.0 DLNADOC/1.50 Platinum/1.0.4.11

Eventing:

NOTIFY /a44792d5-e283-2b1c-d4b7-0a1d06f5df27/urn:upnp-org:serviceId:RenderingControl HTTP/1.1
NT: upnp:event
NTS: upnp:propchange
SID: uuid:57b029f1-db42-1aa4-d9a4-d8275d513f18
SEQ: 0
User-Agent: Neptune/1.1.3
Host: 172.16.5.90:1306
Content-Length: 448
Content-Type: text/xml; charset="utf-8"
<!--?xml version="1.0" encoding="UTF-8"?-->
<e:propertyset xmlns:e="urn:schemas-upnp-org:event-1-0">
    <e:property>
        <lastchange>
            <event xmlns="urn:schemas-upnp-org:metadata-1-0/RCS/">
                <instanceid val="0">
                    <volume
                        channel="Master"
                        val="100">
                        <mute
                            channel="Master"
                            val="0">
                            <presetnamelist val="FactoryDefaults">
                                <volumedb
                                    channel="Master"
                                    val="0"></volumedb>
                            </presetnamelist>
                        </mute>
                    </volume>
                </instanceid>
            </event>
        </lastchange>
    </e:property>
</e:propertyset>

Response:

HTTP/1.1 200 OK
Date: Wed, 13 Apr 2016 06:09:43 GMT
Content-Length: 0
Server: UPnP/1.0 DLNADOC/1.50 Kodi
上一篇下一篇

猜你喜欢

热点阅读