徐詩理,曹祁生
(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.