DLNA数字家庭媒体播放系统的设计与实现
2015-07-05高成才宋铁成
苏 菲,高成才,胡 静,宋铁成
(东南大学信息科学与工程学院,江苏南京210096)
0 引言
数字家庭是指以计算机和网络技术为基础,将家电和智能移动终端等资源整合,实现家庭网络下设备的互通互联[1]。而数字生活网络联盟 DLNA(Digital Living Network Alliance)被认为是当前主流的多媒体文件无线传输标准,以实现数字家庭语境下跨厂商和跨平台的电子产品之间的多媒体资源共享[2]。
本文根据数字家庭语境下DLNA协议的应用场景和要求,提出了一种数字家庭DLNA媒体播放系统总体方案。该系统包含市场上已有的多种DLNA设备,而作为该系统的重要组成部分,运行在Android和IOS移动终端的数字媒体控制器DMC(Digital Media Controller)软件系统为用户提供了可视化的操作界面。本文将重点讨论如何基于DLNA架构UPnP协议设计跨平台操作的控制终端DMC软件系统,实现其中的Socket通信、设备管理、播放控制和用户界面UI等模块。DMC软件系统将智能移动终端映射为DMC设备,在家庭无线网络环境下,用户通过智能手机或平板电脑客户端即可查看、管理DLNA设备的工作状态,浏览、检索和播放多媒体资源,实现多媒体资源在不同品牌和不同类的智能终端的共享。
1 总体方案
1.1 DLNA媒体播放系统应用场景
DLNA媒体播放系统主要包括家庭网络环境和DLNA设备两个部分。无线路由器连接到以太网提供家庭网络环境,DLNA设备通过WI-FI连接到无线路由器。按照设备提供服务功能的不同,本系统涉及到的DLNA设备主要分为数字媒体服务器DMS(Digital Media Server)、数字媒体渲染器DMR(Digital Media Renderer)、数字媒体控制器 DMC(Digital Media Controller)三种。DLNA媒体播放系统的应用场景如图1所示。
图1 DLNA媒体播放系统应用场景图
按照DLNA协议的要求,DMS需提供可供DMR播放的多媒体资源,DMC作为控制点,选取DMS设备上的资源并指定DMR进行播放。在本系统中,DMS和DMR为市场上固有的支持DLNA协议的硬件设备,而移动终端Android或IOS智能手机和平板电脑在安装本文开发的DMC软件系统之后便可被映射为DMC设备,通过触屏操作界面和DLNA设备进行交互。关于DLNA协议要求下设备之间的交互模式将在1.2节中予以讨论。
用户在DMC设备上进行操作后,无线路由器将操作指令发送到DLNA设备。接收到操作指令后,DMS和DMR执行相关动作,并将设备状态信息返回到DMC控制端。至此,实现移动终端对DLNA设备的控制和资源共享。
1.2 应用场景下DLNA及UPnP的协议要求
DLNA是基于目前广泛使用的HTTP、IPv4等技术和协议形成的一套解决方案,而UPnP协议簇是DLNA的基础。UPnP协议栈封装了静态IP、动态DHCP和Auto-IP三种寻址方式,和简单服务发现协议SSDP(Simple Device Discovery Protocol)、简单对象访问协议SOAP(Simple Object Access Protocol)和普通事件通知体系GENA(Generic Event Notification Architecture)等消息协议[3]。DLNA协议在UP-nP协议簇的基础上定义了独立于任何特殊的设备类型、内容格式和传输协议UPnP AV框架,从而使得不同厂商的设备之间都可以实现互通互联[4,5]。
在DLNA协议UPnP AV架构下,图1所示播放系统设备之间的交互操作主要有推送和拉取2种工作模式,如图2所示。在推送模式下,控制点DMC向服务器DMS发送播放器DMR的地址,继而由DMS向DMR发送多媒体内容;拉取模式下,控制点向DMR发送服务器及其多媒体资料的地址,而后DMR去DMS地址上拉取信息[3]。根据DLNA协议规范,DMS和DMR的交互过程主要包括内容目录服务、播放控制服务、内容传输服务和连接管理服务等[6]。本文以下内容将重点探讨DMC软件系统的设计和实现方法。
图2 DLNA设备的交互模式
1.3 DMC软件系统总体方案
DMC软件系统是DLNA媒体播放系统与用户交互的重要媒介。软件运行在Android和IOS平板电脑或智能手机操作系统上,提供可视化的操作界面,监听家庭网络下DLNA设备的工作状态,并响应用户的操作命令,如资源查看和多媒体资源播放等。根据应用场景的需求,DMC软件系统的功能模块划分如图3所示。
图3 DMC软件系统功能模块划分
(1)Socket通信模块。负责与DMS、DMR设备之间的通信,包括socket数据包消息发送和接收两个部分。消息发送模块用来发送控制消息,如驱使DMR播放音频文件等;接收模块用来接收DMS和DMR对DMC控制消息的反馈状态,实时监听来自DLNA设备的SSDP消息并予以处理。
(2)设备管理模块。负责搜索家庭WI-FI网络下的DLNA设备,通过发送M-SEARCH消息,获取设备名称和url等信息,并将设备分类添加到DMS和DMR列表,对其状态进行管理。用户可选择DMS列表中的服务器设备,浏览、检索和选取服务器上的多媒体文件,并指定列表中的DMR作为多媒体文件的播放器。
(3)播放控制模块。在多媒体文件的播放过程中,调节播放进度,修改播放参数,如音量大小和播放模式等。
(4)用户界面UI模块。显示整个家庭网络下的设备列表和状态,为用户操作提供可视化界面。
2 软件系统的实现
基于上述讨论,本文完成了Android和IOS两个操作平台DMC软件系统的开发和设计。软件系统的开发工作分别在eclipse7.0和Mac OS X10.9.2系统版本下的Xcode开发环境中进行。
对于Android和IOS两种操作系统,DMC软件系统的开发有诸多相异和相似之处。
不同之处在于,Android开发使用Java语言,每个Activity类与用户窗口对应。而IOS开发使用Objective C编程语言,以ViewController类作为应用程序数据和视图之间的桥梁。
相似之处在于,软件系统的功能模块都遵循1.3节所述内容,Eclipse和Xcode两种开发工具都提供可支持Socket通信的接口函数。因此,可忽略编程语言和开发环境的不同,按照如下介绍的具体功能模块的实现方法,在两种操作平台上完成DMC软件系统的开发。
2.1 socket通信模块的实现
DMC在与DMS、DMR通信时遵循严格定义的Socket数据包格式。发送与接收的Socket数据包主要包括包头和数据段两部分,如表1所示。
表中:
(1)数据段长度:用于标记数据段的字节数;
表1 socket数据包格式
(2)校验和:对数据段的CMD命令字及命令参数部分进行和校验;
(3)CMD命令字:用于区分不同交互操作的控制信息;
(4)CMD命令参数:为不同的CMD命令提供相应的参数。
按照定义好的数据包格式,DMC设备按IP地址和端口号 PORT即可与 DMS、DMR设备建立Socket连接,进行数据通信。完整的Socket通信过程如图4所示。
图4 socket通信过程示意图
从图4中可以看出,为增强系统的鲁棒性,当socket连接请求失败时,软件系统能够给出提示,并重新发出连接请求。连接成功后,按照当前设备的工作状态发送或接收数据。数据发送时,根据特定的控制信息将要发送的数据段和对应生成的数据包头组成数据包,发送至DLNA设备;数据接收时,首先对接收到的数据包做校验和;然后校验正确的数据根据CMD命令字和CMD命令参数交由程序做相应处理。
2.2 设备管理模块的实现
DLNA设备管理模块主要完成从设备寻址、设备发现、设备描述到设备控制的各项功能,使用封装了UPnP协议栈的第三方开源的Cling开发库[4]。
当DMC设备启动工作线程后,DMC软件系统对DLNA设备进行控制和管理遵循如图5所示的工作流程[6]:
(1)连接到家庭WI-FI网络进行IP地址分配;
(2)主动发送即时M-SEARCH消息,搜索家庭WI-FI网络下的DLNA设备;
图5 DMC工作流程示意图
(3)开启监听,监听来自DMS和DMR设备的SSDP alive广播消息;
(4)监听到新设备时,获取设备描述文件及服务描述文件,按类别添加到DMS或DMR列表;
(5)订阅获取到的设备的服务描述文件中的事件;
(6)DMC可浏览、检索、选取并管理DMS服务器上共享的多媒体文件等资源;
(7)选取DMS服务器上的共享资源,推送至DMR播放,并可在播放过程中实时对DMR进行控制,同时接收DMR、DMS的事件通知等;
(8)重复(4)至(7),直至结束DMC工作过程;(9)结束DMC工作过程。
其中,DMS和DMR之间依靠HTTP协议来传输多媒体文件,DMC与DMS或DMR使用2.1节所述事先定义好的socket数据包格式进行数据通信。
2.3 播放控制模块的实现
播放控制模块主要处理在多媒体文件播放过程中的用户操作,分为音量控制、播放模式选择、多媒体文件选择和播放状态切换4个部分。音量控制主要是对用于播放多媒体文件的播放器的音量进行调节;播放风格选择则提供重复播放、按顺序播放和随机播放等播放模式的选择;多媒体文件选择允许用户选择当前正在播放文件的前一个、后一个文件,也可在多媒体文件列表中选择任意一个文件;播放状态切换则是指在文件的播放、暂停和停止3种状态之间进行切换,也可对当前文件的播放进度予以处理调节。
播放控制模块是连接用户界面UI模块与socket通信模块的中间桥梁,UI模块的具体实现在下节讨论,socket通信模块的实现如2.1节所述。播放控制模块的函数,如播放状态切换函数 Play()、Pause()和Stop()等,封装了一系列socket操作指令。当用户在多媒体资源播放界面操作时,UI模块首先将动作指令传递给播放控制模块。播放控制模块调用封装好的控制函数,继而调用socket通信模块予以处理。
2.4 用户界面UI模块的实现
用户界面UI模块主要负责可视化界面的实现,完成DLNA设备工作状态的实时显示,并响应用户在界面的操作。界面设计主要使用了列表(android listview,ios tableview)、进度条(android progressbar,ios slider)和按键(button)等控件,提供给用户的界面操作如图6所示。
图6 DMC软件系统用户界面操作流程图
启动DMC软件系统后,DMC设备(智能手机或平板电脑)首先选择WI-FI网络接入;搜索家庭WI-FI网络下的DLNA设备,获取设备信息,并将设备名称添加到DMS和DMR的列表显示;从DMS列表中选取指定的DMS服务器,即可浏览、检索和选取多媒体文件;从DMR列表中选取家庭网络环境下的任意一台DMR设备,即可将DMS上指定的音频文件推送至指定的DMR播放,并可在播放界面拖动播放进度,调节播放参数。
3 联调和测试
搭建如图1所示的系统测试环境。无线路由器(TP-Link TL-WR880N)提供家庭网络环境,开启DHCP服务器以支持设备自动获取IP地址的功能,同时开启其UPnP协议支持。DLNA设备终端选取1台iphone手机(IOS 7.0)、1台联想平板电脑(Android 4.1)、1台 PC电脑(Windows 7)以及3台DLNA音箱。将DMC软件成功安装至手机和平板电脑,所有设备开启WI-FI功能连接至同一家庭网络,对整个播放系统的工作情况反复进行测试。
测试结果表明,在系统设备成功接入家庭网络后,DMC设备可发现测试环境下所有DLNA设备并进行正确分类。在图7所示 DMS列表中,Local Server为安装 DMC软件系统的 iphone手机,ENGSMM-PC为接入家庭网络的PC电脑,A1_07为家庭网络下平板电脑。图8所示的DMR列表中,wang的iphone为本地播放器,Clint in Ares、Clint|ODIN 03c911和Clint|ODIN 03c965为三台DLNA播放器。
图7 DMS列表界面
图8 DMR列表界面
通过触屏操作,选择DMS列表中的Local Server,DMR列表中的Clint in Ares作为指定的服务器和播放器继续进行以下测试。
选择DMS列表中的Local Server之后,可在如图9所示的文件选择界面查看本地音频文件列表,并对曲名和专辑等信息予以选择。在系统测试过程中,选择指定音频后,DLNA音箱对音频文件进行了无损播放。播放过程中,点击播放界面左下角的标识即可弹出播放器音量参数调节界面,如图10所示。经反复测试,本文设计的软件系统界面操作良好,可以实现预设的功能,并且鲁棒性强。
图9 DMS音频文件选择界面 图10 播放界面
4 结语
本文提出了一种集成DMS、DMC和DMR三种功能的数字家庭DLNA媒体播放系统总体方案。通过开发跨平台操作的控制终端DMC软件系统,使得任意嵌入Android和IOS操作系统的移动终端都可以通过安装软件映射为符合DLNA协议规范的的DMC设备。测试结果表明:播放系统性能稳定,DMC软件系统界面友好,可扩展性强。为数字家庭环境下,不同品牌和类型的智能终端通过软件控制实现互通互联、资源共享提供了良好的示范。
[1]赖敏,高薇,储妮晟.数字家庭发展现状分析[J].成都:通信技术,2013(02):58-61.
[2]朱平洋.基于Android系统的DLNA功能的设计与开发[D].济南:山东大学,2013.
[3]郭永鑫,乐嘉锦,夏小玲.一种基于DLNA协议的Android设备多媒体共享方案[J].南昌:计算机与现代化,2013(11):124-127.
[4]李娟娟.基于UPnP数字家庭远程控制的设计与实现[D].北京:北京邮电大学,2013.
[5]魏晨曦.基于SMP8655的UPnP AV终端的设计与实现[D].广州:华南理工大学,2012.
[6]万初旭.DLNA协议研究及其在Android系统上的实现[D].济南:山东大学,2012.