UPNP sdk中ContentDirectory service中Browse方法解析

本文详细介绍了UPnP ContentDirectory Service中的Browse方法及其参数含义,包括BrowseFlag、Filter等,并通过示例展示了如何使用这些参数获取媒体服务器上的内容元数据。
摘要由CSDN通过智能技术生成

原文在:http://4895268.blog.51cto.com/4885268/1048617

Browse 方法是 ContentDirectory  Service中的常用方法,它的主要参数含义在这里总结一下,以防以后搞混;

BrowseFlag

 

 

 

 1)是输入参数

 

2)  BrowseMetadata:仅仅返回该OBJECT的所有属性。为BrowseDirectChildren返回该OBJECT的 child节点OBJECT的属性。

 

Filter

1)是输入参数

2)  过滤器,规定一些返回结果的属性,如果可以得到这些属性的话,应该返回Filter中的属性。

例如 Filter的值如下:

dc:title,dc:date,@childCount,res,res@resolution,upnp:album,upnp:genre,upnp:albumArtURI,upnp:albumArtURI@dlna:profileID,dc:creator,res@size,res@duration,res@bitrate,res@protocolInfo,upnp:class

输出的结果如下:

<?xml version="1.0"?>

<u:BrowseResponse xmlns:u="urn:schemas-upnp-org:service:ContentDirectory">

<Result><DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/"

 xmlns:sec="http://www.sec.co.kr/dlna"

 xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/"

 xmlns:dc="http://purl.org/dc/elements/1.1/"

 xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/">

<container id="D" parentID="0" childCount="3" searchable="0" restricted="1">

  <upnp:class> object.container</upnp:class>

  <dc:title> Shared Contents</dc:title>

  <upnp:objectUpdateID> 5</upnp:objectUpdateID>

   <sec:initUpdateID> 5</sec:initUpdateID>

   <sec:classCount class="object.container"> 0</sec:classCount>   //文件夹个数

   <sec:classCount class="object.item.imageItem"> 0</sec:classCount> //  图片个数

    <sec:classCount class="object.item.audioItem"> 0</sec:classCount>  // 音频个数

    <sec:classCount class="object.item.videoItem"> 0</sec:classCount>   //  视频个数

  </container>

<container id="1" parentID="0" childCount="8" searchable="1" restricted="1">

<upnp:class> object.container</upnp:class>

<dc:title> Shared Folder</dc:title>

<upnp:objectUpdateID> 14611</upnp:objectUpdateID>

<sec:initUpdateID> 2</sec:initUpdateID>

<sec:classCount class="object.container"> 8</sec:classCount>

<sec:classCount class="object.item.imageItem"> 0</sec:classCount>

<sec:classCount class="object.item.audioItem"> 0</sec:classCount>

<sec:classCount class="object.item.videoItem"> 0</sec:classCount>

</container>

</DIDL-Lite>

</Result>

<NumberReturned>2</NumberReturned>

<TotalMatches>2</TotalMatches>

<UpdateID>14653</UpdateID>

</u:BrowseResponse>

 

 

 NumberReturned , TotalMatchesStartingIndexRequestedCount说明

1) StartingIndexRequestedCount为输入参数,NumberReturnedTotalMatches为输出参数。

2) 在正常情况下:

a)      一般情况下RequestedCount = 0StartingIndex =0,下面不加特殊说明也就是如此设置。

RequestedCount设为0表示返回的NumberReturned不受限制,是多少返回多少。StartingIndex设为0,表示从第一个OBJECTList所有的OBJECT 信息。

b)      TotalMatches返回的是实际的OBJECT个数。如果BrowseFlag是“BrowseDirectChildren”,

TotalMatches返回的就是当前OBJECTChild Object数目。如果当前OBJECT下一级目录有10OBJECT, TotalMatches = 10;如果BrowseFlagBrowseMetadata”,那么TotalMatches恒为1

c)       StartingIndex表示Resopnse包中第一个OBJECT的序号,还以上面为例,如果BrowseFlag是“BrowseDirectChildren”,StartingIndex  = 1,那么Response包中就没有第一个OBJECT的信息,NumberReturned =  9TotalMatches = 10

d)      RequestedCount为最多可返回的OBJECT个数,即NumberReturned <= RequestedCount,

c)中例子,如果RequestedCount5,那么NumberReturned也为5,如果RequestedCount大于实际的OBJECT个数,那么NumberReturned为实际数目。

3) 在异常情况下:

如果在有些特殊情况下,比如文件数过多,一时无法计算出NumberReturned个数,但是已经找到匹配的Object,这时 NumberReturned个数为0TotalMatch表示返回的Object个数;如果没有找到匹配的Object,返回720错误。

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值