蘇 菲,高成才,胡 靜,宋鐵成
(東南大學信息科學與工程學院,江蘇南京210096)
數(shù)字家庭是指以計算機和網(wǎng)絡技術為基礎,將家電和智能移動終端等資源整合,實現(xiàn)家庭網(wǎng)絡下設備的互通互聯(lián)[1]。而數(shù)字生活網(wǎng)絡聯(lián)盟 DLNA(Digital Living Network Alliance)被認為是當前主流的多媒體文件無線傳輸標準,以實現(xiàn)數(shù)字家庭語境下跨廠商和跨平臺的電子產(chǎn)品之間的多媒體資源共享[2]。
本文根據(jù)數(shù)字家庭語境下DLNA協(xié)議的應用場景和要求,提出了一種數(shù)字家庭DLNA媒體播放系統(tǒng)總體方案。該系統(tǒng)包含市場上已有的多種DLNA設備,而作為該系統(tǒng)的重要組成部分,運行在Android和IOS移動終端的數(shù)字媒體控制器DMC(Digital Media Controller)軟件系統(tǒng)為用戶提供了可視化的操作界面。本文將重點討論如何基于DLNA架構UPnP協(xié)議設計跨平臺操作的控制終端DMC軟件系統(tǒng),實現(xiàn)其中的Socket通信、設備管理、播放控制和用戶界面UI等模塊。DMC軟件系統(tǒng)將智能移動終端映射為DMC設備,在家庭無線網(wǎng)絡環(huán)境下,用戶通過智能手機或平板電腦客戶端即可查看、管理DLNA設備的工作狀態(tài),瀏覽、檢索和播放多媒體資源,實現(xiàn)多媒體資源在不同品牌和不同類的智能終端的共享。
DLNA媒體播放系統(tǒng)主要包括家庭網(wǎng)絡環(huán)境和DLNA設備兩個部分。無線路由器連接到以太網(wǎng)提供家庭網(wǎng)絡環(huán)境,DLNA設備通過WI-FI連接到無線路由器。按照設備提供服務功能的不同,本系統(tǒng)涉及到的DLNA設備主要分為數(shù)字媒體服務器DMS(Digital Media Server)、數(shù)字媒體渲染器DMR(Digital Media Renderer)、數(shù)字媒體控制器 DMC(Digital Media Controller)三種。DLNA媒體播放系統(tǒng)的應用場景如圖1所示。
圖1 DLNA媒體播放系統(tǒng)應用場景圖
按照DLNA協(xié)議的要求,DMS需提供可供DMR播放的多媒體資源,DMC作為控制點,選取DMS設備上的資源并指定DMR進行播放。在本系統(tǒng)中,DMS和DMR為市場上固有的支持DLNA協(xié)議的硬件設備,而移動終端Android或IOS智能手機和平板電腦在安裝本文開發(fā)的DMC軟件系統(tǒng)之后便可被映射為DMC設備,通過觸屏操作界面和DLNA設備進行交互。關于DLNA協(xié)議要求下設備之間的交互模式將在1.2節(jié)中予以討論。
用戶在DMC設備上進行操作后,無線路由器將操作指令發(fā)送到DLNA設備。接收到操作指令后,DMS和DMR執(zhí)行相關動作,并將設備狀態(tài)信息返回到DMC控制端。至此,實現(xiàn)移動終端對DLNA設備的控制和資源共享。
DLNA是基于目前廣泛使用的HTTP、IPv4等技術和協(xié)議形成的一套解決方案,而UPnP協(xié)議簇是DLNA的基礎。UPnP協(xié)議棧封裝了靜態(tài)IP、動態(tài)DHCP和Auto-IP三種尋址方式,和簡單服務發(fā)現(xiàn)協(xié)議SSDP(Simple Device Discovery Protocol)、簡單對象訪問協(xié)議SOAP(Simple Object Access Protocol)和普通事件通知體系GENA(Generic Event Notification Architecture)等消息協(xié)議[3]。DLNA協(xié)議在UP-nP協(xié)議簇的基礎上定義了獨立于任何特殊的設備類型、內(nèi)容格式和傳輸協(xié)議UPnP AV框架,從而使得不同廠商的設備之間都可以實現(xiàn)互通互聯(lián)[4,5]。
在DLNA協(xié)議UPnP AV架構下,圖1所示播放系統(tǒng)設備之間的交互操作主要有推送和拉取2種工作模式,如圖2所示。在推送模式下,控制點DMC向服務器DMS發(fā)送播放器DMR的地址,繼而由DMS向DMR發(fā)送多媒體內(nèi)容;拉取模式下,控制點向DMR發(fā)送服務器及其多媒體資料的地址,而后DMR去DMS地址上拉取信息[3]。根據(jù)DLNA協(xié)議規(guī)范,DMS和DMR的交互過程主要包括內(nèi)容目錄服務、播放控制服務、內(nèi)容傳輸服務和連接管理服務等[6]。本文以下內(nèi)容將重點探討DMC軟件系統(tǒng)的設計和實現(xiàn)方法。
圖2 DLNA設備的交互模式
DMC軟件系統(tǒng)是DLNA媒體播放系統(tǒng)與用戶交互的重要媒介。軟件運行在Android和IOS平板電腦或智能手機操作系統(tǒng)上,提供可視化的操作界面,監(jiān)聽家庭網(wǎng)絡下DLNA設備的工作狀態(tài),并響應用戶的操作命令,如資源查看和多媒體資源播放等。根據(jù)應用場景的需求,DMC軟件系統(tǒng)的功能模塊劃分如圖3所示。
圖3 DMC軟件系統(tǒng)功能模塊劃分
(1)Socket通信模塊。負責與DMS、DMR設備之間的通信,包括socket數(shù)據(jù)包消息發(fā)送和接收兩個部分。消息發(fā)送模塊用來發(fā)送控制消息,如驅使DMR播放音頻文件等;接收模塊用來接收DMS和DMR對DMC控制消息的反饋狀態(tài),實時監(jiān)聽來自DLNA設備的SSDP消息并予以處理。
(2)設備管理模塊。負責搜索家庭WI-FI網(wǎng)絡下的DLNA設備,通過發(fā)送M-SEARCH消息,獲取設備名稱和url等信息,并將設備分類添加到DMS和DMR列表,對其狀態(tài)進行管理。用戶可選擇DMS列表中的服務器設備,瀏覽、檢索和選取服務器上的多媒體文件,并指定列表中的DMR作為多媒體文件的播放器。
(3)播放控制模塊。在多媒體文件的播放過程中,調節(jié)播放進度,修改播放參數(shù),如音量大小和播放模式等。
(4)用戶界面UI模塊。顯示整個家庭網(wǎng)絡下的設備列表和狀態(tài),為用戶操作提供可視化界面。
基于上述討論,本文完成了Android和IOS兩個操作平臺DMC軟件系統(tǒng)的開發(fā)和設計。軟件系統(tǒng)的開發(fā)工作分別在eclipse7.0和Mac OS X10.9.2系統(tǒng)版本下的Xcode開發(fā)環(huán)境中進行。
對于Android和IOS兩種操作系統(tǒng),DMC軟件系統(tǒng)的開發(fā)有諸多相異和相似之處。
不同之處在于,Android開發(fā)使用Java語言,每個Activity類與用戶窗口對應。而IOS開發(fā)使用Objective C編程語言,以ViewController類作為應用程序數(shù)據(jù)和視圖之間的橋梁。
相似之處在于,軟件系統(tǒng)的功能模塊都遵循1.3節(jié)所述內(nèi)容,Eclipse和Xcode兩種開發(fā)工具都提供可支持Socket通信的接口函數(shù)。因此,可忽略編程語言和開發(fā)環(huán)境的不同,按照如下介紹的具體功能模塊的實現(xiàn)方法,在兩種操作平臺上完成DMC軟件系統(tǒng)的開發(fā)。
DMC在與DMS、DMR通信時遵循嚴格定義的Socket數(shù)據(jù)包格式。發(fā)送與接收的Socket數(shù)據(jù)包主要包括包頭和數(shù)據(jù)段兩部分,如表1所示。
表中:
(1)數(shù)據(jù)段長度:用于標記數(shù)據(jù)段的字節(jié)數(shù);
表1 socket數(shù)據(jù)包格式
(2)校驗和:對數(shù)據(jù)段的CMD命令字及命令參數(shù)部分進行和校驗;
(3)CMD命令字:用于區(qū)分不同交互操作的控制信息;
(4)CMD命令參數(shù):為不同的CMD命令提供相應的參數(shù)。
按照定義好的數(shù)據(jù)包格式,DMC設備按IP地址和端口號 PORT即可與 DMS、DMR設備建立Socket連接,進行數(shù)據(jù)通信。完整的Socket通信過程如圖4所示。
圖4 socket通信過程示意圖
從圖4中可以看出,為增強系統(tǒng)的魯棒性,當socket連接請求失敗時,軟件系統(tǒng)能夠給出提示,并重新發(fā)出連接請求。連接成功后,按照當前設備的工作狀態(tài)發(fā)送或接收數(shù)據(jù)。數(shù)據(jù)發(fā)送時,根據(jù)特定的控制信息將要發(fā)送的數(shù)據(jù)段和對應生成的數(shù)據(jù)包頭組成數(shù)據(jù)包,發(fā)送至DLNA設備;數(shù)據(jù)接收時,首先對接收到的數(shù)據(jù)包做校驗和;然后校驗正確的數(shù)據(jù)根據(jù)CMD命令字和CMD命令參數(shù)交由程序做相應處理。
DLNA設備管理模塊主要完成從設備尋址、設備發(fā)現(xiàn)、設備描述到設備控制的各項功能,使用封裝了UPnP協(xié)議棧的第三方開源的Cling開發(fā)庫[4]。
當DMC設備啟動工作線程后,DMC軟件系統(tǒng)對DLNA設備進行控制和管理遵循如圖5所示的工作流程[6]:
(1)連接到家庭WI-FI網(wǎng)絡進行IP地址分配;
(2)主動發(fā)送即時M-SEARCH消息,搜索家庭WI-FI網(wǎng)絡下的DLNA設備;
圖5 DMC工作流程示意圖
(3)開啟監(jiān)聽,監(jiān)聽來自DMS和DMR設備的SSDP alive廣播消息;
(4)監(jiān)聽到新設備時,獲取設備描述文件及服務描述文件,按類別添加到DMS或DMR列表;
(5)訂閱獲取到的設備的服務描述文件中的事件;
(6)DMC可瀏覽、檢索、選取并管理DMS服務器上共享的多媒體文件等資源;
(7)選取DMS服務器上的共享資源,推送至DMR播放,并可在播放過程中實時對DMR進行控制,同時接收DMR、DMS的事件通知等;
(8)重復(4)至(7),直至結束DMC工作過程;(9)結束DMC工作過程。
其中,DMS和DMR之間依靠HTTP協(xié)議來傳輸多媒體文件,DMC與DMS或DMR使用2.1節(jié)所述事先定義好的socket數(shù)據(jù)包格式進行數(shù)據(jù)通信。
播放控制模塊主要處理在多媒體文件播放過程中的用戶操作,分為音量控制、播放模式選擇、多媒體文件選擇和播放狀態(tài)切換4個部分。音量控制主要是對用于播放多媒體文件的播放器的音量進行調節(jié);播放風格選擇則提供重復播放、按順序播放和隨機播放等播放模式的選擇;多媒體文件選擇允許用戶選擇當前正在播放文件的前一個、后一個文件,也可在多媒體文件列表中選擇任意一個文件;播放狀態(tài)切換則是指在文件的播放、暫停和停止3種狀態(tài)之間進行切換,也可對當前文件的播放進度予以處理調節(jié)。
播放控制模塊是連接用戶界面UI模塊與socket通信模塊的中間橋梁,UI模塊的具體實現(xiàn)在下節(jié)討論,socket通信模塊的實現(xiàn)如2.1節(jié)所述。播放控制模塊的函數(shù),如播放狀態(tài)切換函數(shù) Play()、Pause()和Stop()等,封裝了一系列socket操作指令。當用戶在多媒體資源播放界面操作時,UI模塊首先將動作指令傳遞給播放控制模塊。播放控制模塊調用封裝好的控制函數(shù),繼而調用socket通信模塊予以處理。
用戶界面UI模塊主要負責可視化界面的實現(xiàn),完成DLNA設備工作狀態(tài)的實時顯示,并響應用戶在界面的操作。界面設計主要使用了列表(android listview,ios tableview)、進度條(android progressbar,ios slider)和按鍵(button)等控件,提供給用戶的界面操作如圖6所示。
圖6 DMC軟件系統(tǒng)用戶界面操作流程圖
啟動DMC軟件系統(tǒng)后,DMC設備(智能手機或平板電腦)首先選擇WI-FI網(wǎng)絡接入;搜索家庭WI-FI網(wǎng)絡下的DLNA設備,獲取設備信息,并將設備名稱添加到DMS和DMR的列表顯示;從DMS列表中選取指定的DMS服務器,即可瀏覽、檢索和選取多媒體文件;從DMR列表中選取家庭網(wǎng)絡環(huán)境下的任意一臺DMR設備,即可將DMS上指定的音頻文件推送至指定的DMR播放,并可在播放界面拖動播放進度,調節(jié)播放參數(shù)。
搭建如圖1所示的系統(tǒng)測試環(huán)境。無線路由器(TP-Link TL-WR880N)提供家庭網(wǎng)絡環(huán)境,開啟DHCP服務器以支持設備自動獲取IP地址的功能,同時開啟其UPnP協(xié)議支持。DLNA設備終端選取1臺iphone手機(IOS 7.0)、1臺聯(lián)想平板電腦(Android 4.1)、1臺 PC電腦(Windows 7)以及3臺DLNA音箱。將DMC軟件成功安裝至手機和平板電腦,所有設備開啟WI-FI功能連接至同一家庭網(wǎng)絡,對整個播放系統(tǒng)的工作情況反復進行測試。
測試結果表明,在系統(tǒng)設備成功接入家庭網(wǎng)絡后,DMC設備可發(fā)現(xiàn)測試環(huán)境下所有DLNA設備并進行正確分類。在圖7所示 DMS列表中,Local Server為安裝 DMC軟件系統(tǒng)的 iphone手機,ENGSMM-PC為接入家庭網(wǎng)絡的PC電腦,A1_07為家庭網(wǎng)絡下平板電腦。圖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作為指定的服務器和播放器繼續(xù)進行以下測試。
選擇DMS列表中的Local Server之后,可在如圖9所示的文件選擇界面查看本地音頻文件列表,并對曲名和專輯等信息予以選擇。在系統(tǒng)測試過程中,選擇指定音頻后,DLNA音箱對音頻文件進行了無損播放。播放過程中,點擊播放界面左下角的標識即可彈出播放器音量參數(shù)調節(jié)界面,如圖10所示。經(jīng)反復測試,本文設計的軟件系統(tǒng)界面操作良好,可以實現(xiàn)預設的功能,并且魯棒性強。
圖9 DMS音頻文件選擇界面 圖10 播放界面
本文提出了一種集成DMS、DMC和DMR三種功能的數(shù)字家庭DLNA媒體播放系統(tǒng)總體方案。通過開發(fā)跨平臺操作的控制終端DMC軟件系統(tǒng),使得任意嵌入Android和IOS操作系統(tǒng)的移動終端都可以通過安裝軟件映射為符合DLNA協(xié)議規(guī)范的的DMC設備。測試結果表明:播放系統(tǒng)性能穩(wěn)定,DMC軟件系統(tǒng)界面友好,可擴展性強。為數(shù)字家庭環(huán)境下,不同品牌和類型的智能終端通過軟件控制實現(xiàn)互通互聯(lián)、資源共享提供了良好的示范。
[1]賴敏,高薇,儲妮晟.數(shù)字家庭發(fā)展現(xiàn)狀分析[J].成都:通信技術,2013(02):58-61.
[2]朱平洋.基于Android系統(tǒng)的DLNA功能的設計與開發(fā)[D].濟南:山東大學,2013.
[3]郭永鑫,樂嘉錦,夏小玲.一種基于DLNA協(xié)議的Android設備多媒體共享方案[J].南昌:計算機與現(xiàn)代化,2013(11):124-127.
[4]李娟娟.基于UPnP數(shù)字家庭遠程控制的設計與實現(xiàn)[D].北京:北京郵電大學,2013.
[5]魏晨曦.基于SMP8655的UPnP AV終端的設計與實現(xiàn)[D].廣州:華南理工大學,2012.
[6]萬初旭.DLNA協(xié)議研究及其在Android系統(tǒng)上的實現(xiàn)[D].濟南:山東大學,2012.