徐诗理,曹祁生
(1.武汉邮电科学研究院湖北武汉430074;2.烽火科技股份有限公司湖北武汉430074)
近年来,随着数字技术的飞速发展,越来越多的电子产品如数字电视、手机、个人电脑等,开始走进家庭,为用户提供丰富多彩的多媒体应用和服务[1-2]。DLNA是一个联盟,任务是制定一个统一的传输规范,目的是让各式不同类型的电影印刷器材能相互沟通,只要试用于DLNA的影音设备,就可在不需驱动程式、转接的最普适的方式,并且是家庭网络的公共协定[3-4]。DLNA是一种普适解决的方案和共同遵守的规范而不是创造技术。所以,其选择的各种技术和协议都是广泛的应用于当前的技术和协议。关键技术有:Ethernet,802.11,Ipv4 协议栈,Ipv6协议栈,UPnP[5-6]。其普适性也凸显其重要性。DLNA标准的公共协议,使得人们可通过各种设备上文件只要通过无线或者有线共享给在这个网络上的播放设备,就能进行播放,不需要拷贝来拷贝去[7-8]。而Ushare就是DLNA的一个核心,是一个实现DLNA共享的软件。也就是说DLNA标准可以通过Ushare这个媒体服务来实现它互联的目的,所以Ushare是DLNA这个标准的核心,同时它也是一种服务,一种实现方式[9-10]。
整个DLNA模块分为几个阶段:
首先需要给接入网络中的设备提供ip供其他设备可以识别。一旦设备连接到网上并且分配了地址,就要进行下一步的操作。
设备发现是UPnP网络实现的第一步,在设备发现操作之后,控制点可以发现感兴趣的设备,并让控制点获得设备能力的描述文档,同时控制点也可以向设备发送命令,获取设备的状态的变更。
UPnP网络结构的第二步是设备描述。当控制点发现了当前设备之后,此时控制点对当前设备的信息还是知之甚少,控制点仅仅知道当前设备或服务的UPnP类型,还有设备的UUID和设备描述的URL地址。
控制点发现取得设备描述后,即准备提供展示。一旦获取了进行展示的URL,那么控制点就可以通过此URL得到一个页面,通过在浏览器中加载该页面,并根据页面功能,支持用户控制设备和/或浏览设备状态。每一项完成的程度由展示页面和设备的具体功能决定[11-12]。
Upnp的整个交互过程可以用如图1所示。
图1 DLNA功能实现设计流程图
一个完整的upnp av体系由三部分组成:控制点、设备、媒体播放器。
控制点提供用户控制的界面,并协调服务器与播放器之间的相互操作;媒体服务器提供内容目录、连接管理与内容传输等服务;播放器主要用来播放数据。下面是三者之间的联系如图2所示。
图2 upnp av体系
要实现ushare首先需要编译其依赖的3个库UShare编译、运行需要依赖 ffmpeg、libupnp、libdlna3个库进行运行,所以要先编译这3个库。3个库的关系如图3所示。
图3 ushare的编译
当前的网关是MTK方案的,其编译需要在param.xml中增加节点和devfunc()函数,如下:
然后在mk_platform.sh下面增加upnp的编译,DLNA主要由ushare实现,UShare是实现dlna DMS功能的轻量级服务器,编译时需要使用Libdlna,libupnp,ffmpeg 3个库支持。3个库文件都是使用upnp库自带的configure进行Makefile文件的生成,这里介绍其中一个的编译方式,其他的两个类似。例如libdlna的编译
其中注意--prefix=`pwd`/../../build/libdlna是编译完存放的目录,命令行执行完成后,会有configure脚本根据所输入的参数自动生成Makefile文件,最后执行make clean;make;make install后,完成libdlna的实际编译过程,编译成功之后会在/build/libdlna中出现相应的include目录和bin目录。最后将编译好的文件和库拷贝到网关文件系统中。
首先调用upnp库接口函数init_upnp(),通过upnp库的接口函数UpnpInit()初始化一个upnp,并调用函数UpnpSetVirtualDirCallbacks注册http协议有关的回调函数 get_info、open、read、write、close,通过以上函数来建立媒体播放器与媒体服务器数据的传输的链接。
然后通过调用upnp库的接口库函数UpnpRegisterRootDevice2()来注册ushare设备的文档信息与事件响应回调函数event_handler。一旦控制点发现ushare媒体服务器,就会获取到ushare的描述文档,控制点根据设备所提供的服务,就可以向upnp设备发送请求服务的事件。
ushare所支持的媒体传输格式与传输协议主要通过ushare提供的相关服务来获取,控制点通过该服务获取媒体服务器和媒体播放器的连接管理服务来确定进行数据传输的协议与都支持的数据格式。
其中的ContentDirectory服务,主要用来确定在媒体服务器上共享的资源,此服务可以进行目录的浏览和目录搜索服务cds_browsecds_search(),媒体播放器获得了ushare共享的资源的url后,就通过http协议来获取相应数据了,这主要通过注册的回调函数来实现。
由于UShare需要运行在br0口上,所以需要确定桥代码中将239.255.255.250的广播报文,广播到CPU口中,供程序监听。演示的环境实现DMR、DMC,注意演示的控制系统均需要支持UPnP协议,本文中进行演示的系统中是使用Win7 Business系统[13]。
首先Win7中进行演示需要打开如下的服务,在run运行栏中执行services.msc,打开Function Discovery Provider Host、Function Discovery Resource Publication、SSDP Discovery、UPnP Device Host这样4个服务。本文在演示环境中使用Win7自带的网上邻居查看共享的内容,使用WMP进行和播放[14-16]。
之前的编译工作完成之后已经可以在网关上面看到编译好的功能模块了,下面要把模块启动起来,需要调用ushare-f/etc/ushare.conf&,ushare还会载入ushare.conf中的配置参数,具体参数的含义如表1所示。
表1 ushare.conf配置参数
1)网关的配置界面如下图:在WEB页面,勾选upnp启用开关勾选enable的时候则启动ushare,其中share Folders可以选择分享的目录。以上的设置都是在修改我们的配置文档ushare.conf。启动成功后可以ps看到进程已经存在了。Web界面配置如图4所示。
图4 网关DLNA配置界面
2)配置UShare命令参数
UShare的配置文件存放在/etc/ushare.conf,主要配置项如下:
配置此UShare程序的接入点命名。
配置UShare程序启动的监听端口。
配置UShare是否启用WEB页面。
配置UShare页面的端口,默认为49200
3)运行UShare程序
启动完成后,就可以通过页面进行访问http://192.168.1.1:49200/web/ushare.html页面来访问 DMS,并可以修改共享目录访问。
4)功能演示
在Win7系统中,网上邻居可以查看到媒体设备中出现fiberhome1设备。在WMP中可以选择此设备中的播放设备进行播放,媒体设置界面如图5所示。
图5 媒体设置界面
其中这些图片文件为放置在/var/目录下的媒体文件,点击可以在PC上进行查看,从而实现DMS部署。
本研究采用的是网关作为DMS,PC作为DMP进行播放网关中的内容,软件设计采用模块化设计思想,提高了系统的可靠性和维护性。该功能实现于路由器上,使网关拜托单一的路由功能而可以作为存储设备和共享设备,从而实现DMS部署。
[1]陈勇.UPnP在嵌入式平台中的应用[J].福建电脑,2010(8):351-355.
[2]番茄蛋挞.DLNA式数字家庭[J].电脑迷,2012(3):86-87.
[3]赵从志.UPnP家庭网关配置管理的设计[J].计算机应用,2010(3):38-41.
[4]张莉.基于UPnP和UPnP AV的多媒体内容同步和放[J].计算机科学,2011(5):9-12.
[5]苗再良.数字家庭网络现状和发展趋势[J].信息技术与信息化,2005(3):78-80.
[6]栾新.基于UPnP协议的AV框架的实现[J].计算机应用研究,2006(12):33-36.
[7]张容娟.DLNA数字媒体服务器的研究与实现[J].绵阳师范学院学报,2012(11):4-6.
[8]葛体富,郑志强.基于uPnP协议在DLNA架构中的DMS开发简介[J].科技创新导报,2010(8):10-13.
[9]杨超,刘宝玲.家庭网络中智能设备的部署与实现[J].现代电信科技,2011(11):4-5.
[10]乐行.数字家庭的网络标准——DLNA[J].实用影音技术,2012(9):89-92.
[11]石勇,袁璐鸣.UPnP开发技术及应用[J].计算机与数字工程,2010(4):77-78.
[12]谭淑慧.下一代网络业务驱动下的数字家庭解决方案[J].广西通信技术,2016(3):33-35.
[13]曾辉,费云,唐亮.通用即插即用服务自动发现技术[J].中兴通讯技术,2016(4):13-16.
[14]刘世敏.家庭控制网络通讯技术研究[J].家电科技,2015(5):52-56.
[15]梁晓辉,游志胜.中国数字家庭发展状况的研究[J].有线电视技术,2015(3):62-66.
[16]张容娟.DLNA数字媒体服务器的研究和实现[J].绵阳师范学院学报,2012,31(11):94-97.