郭永鑫,乐嘉锦,夏小玲
(东华大学计算机科学与技术学院,上海 201620)
随着无线传输技术的发展以及移动电子产品的普及,家庭网络作为数字化的一个重要组成部分,其相关的技术和标准逐渐成为国内外开发人员关注与研究的热点。消费者希望在家中的任何地方都能方便地享受丰富的多媒体内容,而不考虑这些媒体数据存储在什么设备上。
数字生活网络联盟(DLNA)原名为数字家庭工作组(DHWG),于 2003年 6月成立,由 Intel、Sony、Microsoft、HP、Nokia等公司发起,目前有 190 多家企业参加[1]。该组织的目标是使消费者可以通过有线与无线网络,让家中的PC、电视、机顶盒、音响、手机、PDA、DVD播放机等多种设备共享信息。
DLNA技术以TCP/IP协议和UPnP技术为基础,通过一个无缝的、可互操作的网络将因特网、移动设备和广播网络集成起来。它主要包含物理连接、网络传输、设备发现与控制、媒体管理与控制、媒体格式和媒体传输协议6个功能组件[2]。
另一方面,Android手机系统的发展与推广战略也为数字家庭提供了一个很好的平台。Google的Android平台自2010年以来呈现出突飞猛进的发展势头,2012年11月有数据显示,Android占据全球智能手机操作系统市场56%的份额,中国一线城市的市场占有率为76%。不仅仅是智能手机与平板电脑,各大智能电视生产公司都采用了定制的Android操作系统[3]。同时,一些公司也开始着眼于生产Android系统的智能机顶盒。所以,开发在Android平台上符合DLNA协议的程序很有实际价值。
本文首先介绍DLNA协议的框架与原理,主要分析其中几种设备交互模式,在此基础上提出一个在Android平台上的DLNA共享程序方案,并结合Android设备的特点和网络流量的稳定进行优化改进。通过实验展示了程序的功能实现,以及DMS的普通方案与优化方案的比较,证明了优化方案的有效性。
DLNA是一个多方形成的解决方案,其中各个层次用到的技术都是目前应用比较广泛的协议与技术,按照该协议实现的设备和软件都可以与其他DLNA设备互联互通[4]。其中UPnP协议簇是DLNA的基础,其在UPnP协议簇上进行进一步的封装,从而形成DLNA技术标准。
UPnP协议是一个基于TCP/IP、UDP、HTTP协议的开放体系,其协议簇中包含有SSDP(Simple Service Discovery Protocol,简单服务发现协议)、GENA(Generic Event Notification Architecture,通用事件通知结构)、SOAP(Simple Object Access Protocol,简单对象访问协议)、XML(Extensible Markup Language,可扩张标记语言)。在UPnP Device Architecture 1.0中定义了UPnP设备在这些协议基础上进行工作的具体方式。其工作过程需要处理6个方面的内容:设备寻址、发现设备、对设备的描述、设备控制、设备事件、设备表达[5]。
DLNA在UPnP协议簇上进行更进一步的定义,从而使不同厂商的设备软件之间都可以互联互通。下面对DLNA的主要内容做一些说明。
DLNA协议定义了标准的多媒体角色设备,并规定了每个角色中要提供的服务。设备主要分为家庭网络设备(Home Network Devices)和移动手持设备(Mobile Handheld Devices)2 大类[6]。家庭网络设备主要包含:
(1)Digital Media Server(DMS):数字媒体服务器,存储多媒体资源内容,并保证同网络中的其他DMP与 DMR可以访问到想要的多媒体内容[7]。DMS往往包含着DMP功能。DMS的例子包括PC机、数字机顶盒(有联网和存储功能)和摄像机等。
(2)Digital Media Player(DMP):数字媒体播放器,查找DMS中的内容,可以将多媒体资源拉到本地,同时提供播放与渲染能力[8]。DMP的例子包括智能电视、家庭影院等。
(3)Digital Media Renderer(DMR):数字媒体渲染器,接收DMC发来的控制指令后,可以播放推送到DMR上的多媒体内容(内容源来自DMS)[9]。它与DMP的区别在于,只能接收推送来的信息,而没有自主查找的能力。DMR的例子包括显示器、音响等。
(4)Digital Media Controller(DMC):数字媒体控制器,查找DMS中的多媒体内容,并控制DMR来播放相应的内容。多媒体内容的流直接从DMS发送到DMR,不通过DMC[10]。DMC的典型例子是遥控器。
移动手持设备中的角色定义与家庭网络设备的角色类似,只不过在媒体格式等方面有所精简,使其更适合移动设备的特点。
在DLNA设备的交互中,ControlPoint是十分重要的。一个设备,例如控制器要发出一个Action,一定要通过一个ControlPoint。在UPnP的规定中,一个ContolPoint的功能要有:发现AV设备,获取内容列表,获得渲染器的支持协议、格式,配置渲染器,开始内容传输等[11]。
一个ControlPoint可以是一个MediaServer,或是一个MediaRender,也可以是一个MediaController。根据ControlPoint的具体角色的不同,可以归纳出如下3种AV设备交互模式。
(1)2台设备的拉取模式:在拉取模式下,控制点可以是数字媒体播放器,例如手机或者平板电脑。控制点主动向MediaServer请求多媒体数据,获得内容之后开始进行显示或者播放。
(2)2台设备的推送模式:在推送模式下,控制点是一个MediaServer,例如一个存储有多媒体资料的PC,控制点主动向数字媒体渲染器推送多媒体内容。控制点要做的是从本地选取所要播放的内容、格式与协议进行传输,在数字媒体渲染器上根据相应的协议匹配,进行播放。
(3)3台设备交互模式:在3台设备的交互模式中,控制点是一个数字媒体控制器。此种交互模式下,有推送和拉取2种模式。控制点作为中间者,在MediaServer与 MediaRenderer之间进行控制[12]。推送模式下,控制点向服务器发送渲染器的地址,让服务器向渲染器发送多媒体内容;拉取模式下,控制点向Render发送服务器的地址以及服务器上的多媒体资料地址,播放器再去拉取信息。
本系统基于Android平台设计开发,可以在Android内核的手机、平板电脑以及机顶盒设备上运行。如图1所示,根据Android的特点,使用Service运行后台线程并通过观察者模式注册监听者Registry,随时获取网络中的设备加入、删除、更新的SSDP消息,并把设备的更新信息存储到相关数据结构中。通过后台Service可以同时进行控制点上的操作,执行Action,订阅消息等。
图1 系统框架设计图
系统集成DMS、DMR、DMC三个角色,可以让任意的Android设备之间的多媒体资料都可以互联互通。其中DMR服务是监听网络中发送来的播放控制指令,接收流的内容,并弹出播放器进行内容播放;DMS则是监听网络中发送来的浏览指令,提供多媒体资料的浏览,并提供传输服务。DMC则是一个典型的控制点,笔者通过一个Executor类,根据DLNA的标准来发送相对应的消息格式,执行对设备的控制。
特别地,在DMS的改进设计中,笔者对媒体传输的方式进行了优化。通过对缓冲区的优化与请求优先级等进行设定,从而使家庭网络环境的流量稳定,控制信息可以得到更及时的响应。
根据DLNA协议规范,一个标准DMS要提供2个服 务:ContentDirectory、ConnectionManager[13]。其中ContentDirectory服务向其他的设备提供一个标准访问接口Browse,控制点可以通过此接口获取到DMS上共享出来的多媒体文件信息,而信息的返回都是通过标准的DIDLContent进行封装。Connection-Manager是在推送模式下要用到的服务,其通过ProtocolInfos接口声明的协议类型等信息进行设备间点对点的连接的管理。本系统的MediaServer结构如图2所示。
图2 MediaServer功能模块设计
MediaServer首先使用 ContentResolver访问 Android的多媒体数据库来获得DMS上的所有多媒体数据,并根据其类型分为视频、图片、音频3大类,存储在ContentTree中。之后在HTTPServer类中,启动一个HTTP的ServerSocket,用来监听相应端口,根据发送来的HTTP头中的请求的参数等信息,来查找ContentTree中的多媒体内容,通过输入输出流把对应的文件通过Socket发送到请求设备上。
一个标准的 DMR要提供 RenderingControl、AVTransport与 ConnectionManager三种服务。其中RenderingControl接收控制点发送来的标准设备控制信息,进行音量大小、静音、亮度等信息调节;AVTransport服务可以接受控制点设置媒体的URI、播放、暂停、停止、下一曲等媒体控制;ConnectionManager与DMS的类似,提供与匹配的DMS的连接信息管理[14]。系统的MediaRenderer的结构如图3所示。
图3 MediaRender功能模块设计
MediaRender保存一个状态机 RenderState-Machine,用来记录当前渲染器的状态。状态机中定义了播放、暂停、停止、无媒体信息的4个简单状态。当有控制点发送Action到RenderingControl服务的时候,渲染器在做出响应的同时改变状态机的状态。MediaRenderer的另一个重要组件就是播放器,可以用来接收控制点的设置与播放控制。同时,播放器在接收到状态机改变时,也会对外发出自己的最新状态信息,以便其他控制点得到最新的状态。
当家庭网络中的多媒体设备数量增多时,需要考虑流量的平衡问题。如果一个多媒体资源丰富的DMS同时得到多个播放设备的请求资源的消息时,就会需要同时为每一个设备进行服务,也就是同时发送多个多媒体文件[15]。然而在初始的DMS设计中,并没有一个公平的传输策略来平衡多个请求节点,仅仅是以一种默认的队列进行FCFS(先来先服务)的方法进行传输。这样如果队列前端的文件比较大的话,后边的请求会受到一定的延迟。
图4 默认FCFS传输方式与改进分时传输示意图
如图4所示,在改进的分时传输策略中,当有多个设备请求时,采取分时轮转策略,在HTTPServer中增加一个Schedule类,对每一个请求分配一个时间片进行传输,每次时间片耗尽后,切换服务的请求对象。这样可以让每个请求者得到公平的服务,不会产生明显的延迟,也可以增加家庭网络的流量稳定性。
图5 Android设备上实现效果图
选取市面上很常见的家庭路由器TP-Link TLWR941N作为网络基础环境的提供者,开启其DHCP服务器以便设备可以自动获得IP地址,同时开启UPnP协议支持。终端选取2台小米手机(Android 4.1)、1台三星Note1(Android 3.2)以及1个Android内核的机顶盒TV Box,并同时使用1台Windows7系统的PC,开启其WMP(Windows Media Player)的网络共享功能(该播放器支持DLNA的协议)进行测试。
在一个Android设备安装了本系统后,连入配置好的路由器,即可与其他DLNA设备进行互联互通。安装本系统的Android设备除了可以互相共享多媒体资料、播放,也可以访问WMP中的多媒体库资源,并把其他设备中的资料推送到WMP播放。
在优化的MediaServer方案实验中,以1台Android设备为服务器,3台设备同时访问其中的多媒体资料并拉取播放。对每秒钟发出的数据进行记录。在没有采用优化方案的情况下,在图6中可以看到吞吐量比较不稳定;每秒钟的流量在120kB与30kB之间波动,方差较大。而在采取了分时策略后,整体上的网络环境比较稳定,每秒的流量在50kB到90kB之间波动。
图6 FCFS(上)与分时优化方案(下)实验数据
本文提出了 Android系统上的三角色(DMS,DMR,DMC)集成的DLNA共享方案设计与实现,使得符合DLNA协议的设备之间可以进行多媒体的共享与播放的控制。之后对DMS进行了传输稳定方面的优化,使得其平均传输速度比较稳定。对于Android设备来说,使用DLNA协议的系统可以为共享多媒体资料提供许多便利。
[1]Dlna.Digital Living Network Alliance(Ver 1.0)[EB/OL].http://www.dlna.org,2013-06-24.
[2]葛体富,郑志强.基于 uPnP协议在DLNA架构中的DMS开发简介[J].科技创新导报,2010(8):247,249.
[3]刘仙艳.移动终端开放平台—Android[J].信息通信技术,2011,5(4):50-53.
[4]宋祥,陈全.基于DLNA协议的智能家庭网络研究[J].科技资讯,2011(29):10-11.
[5]UPnP Forum.UPnP Device Architecture Ver 1.0[EB/OL].http://upnp.org/sdcps-and-certification/standards/device-architecture-documents/,2000-01-13.
[6]李平均,申健.基于UPnP的AV体系结构的设计与实现[J].计算机工程与设计,2007,28(14):3521-3522.
[7]Wu Jing-Yuan,Tsutomu Yosinaga,Daigo Muto,et al.Mechanism for sharing media content in multiple home network environments[J].IEICE Tech.Rep.,2008,108(138):93-98.
[8]郑志强.基于uPnP协议在DLNA架构中多媒体播放设备DMP的开发[J].科技资讯,2009(30):8-9.
[9]佚名.数字生活联盟(DLNA)的关键技术[J].电子产品世界,2006(8):64-66.
[10]Wikipedia.Digital Living Network Alliance[EB/OL].http://en.wikipedia.org/wiki/Digital_Living_Network_Alliance,2013-06-24.
[11]刘文志,宋戚扬,高林,等.DLNA智能家庭网络互操作性探讨[J].信息技术与标准化,2009(4):35-38
[12]乐行.数字家庭的网络标准——DLNA[J].实用影音技术,2008(9):29-30.
[13]Lai C,Huang Y,Chao H.DLNA-based multimedia sharing system for OSGI framework with extension to P2P network[J].IEEE Systems Journal,2010,4(2):262-270.
[14]Patel K J,Anand S V,Sumant Kumart S P.A robust QoS framework on Android for effective media delivery to DLNA Enabled Home gateway in smart home environment[C]//2010 IEEE International Conference on Wireless Communications,Networking and Information Security(WCNIS).2010:217-222.
[15]Tsutsui Akihiro.Latest trends in home networking technologies[J].IEICE Transactions on Communications,2008,E91B(8):2470-2476.