徐詩理,曹祁生
(1.武漢郵電科學(xué)研究院湖北武漢430074;2.烽火科技股份有限公司湖北武漢430074)
近年來,隨著數(shù)字技術(shù)的飛速發(fā)展,越來越多的電子產(chǎn)品如數(shù)字電視、手機(jī)、個(gè)人電腦等,開始走進(jìn)家庭,為用戶提供豐富多彩的多媒體應(yīng)用和服務(wù)[1-2]。DLNA是一個(gè)聯(lián)盟,任務(wù)是制定一個(gè)統(tǒng)一的傳輸規(guī)范,目的是讓各式不同類型的電影印刷器材能相互溝通,只要試用于DLNA的影音設(shè)備,就可在不需驅(qū)動程式、轉(zhuǎn)接的最普適的方式,并且是家庭網(wǎng)絡(luò)的公共協(xié)定[3-4]。DLNA是一種普適解決的方案和共同遵守的規(guī)范而不是創(chuàng)造技術(shù)。所以,其選擇的各種技術(shù)和協(xié)議都是廣泛的應(yīng)用于當(dāng)前的技術(shù)和協(xié)議。關(guān)鍵技術(shù)有:Ethernet,802.11,Ipv4 協(xié)議棧,Ipv6協(xié)議棧,UPnP[5-6]。其普適性也凸顯其重要性。DLNA標(biāo)準(zhǔn)的公共協(xié)議,使得人們可通過各種設(shè)備上文件只要通過無線或者有線共享給在這個(gè)網(wǎng)絡(luò)上的播放設(shè)備,就能進(jìn)行播放,不需要拷貝來拷貝去[7-8]。而Ushare就是DLNA的一個(gè)核心,是一個(gè)實(shí)現(xiàn)DLNA共享的軟件。也就是說DLNA標(biāo)準(zhǔn)可以通過Ushare這個(gè)媒體服務(wù)來實(shí)現(xiàn)它互聯(lián)的目的,所以Ushare是DLNA這個(gè)標(biāo)準(zhǔn)的核心,同時(shí)它也是一種服務(wù),一種實(shí)現(xiàn)方式[9-10]。
整個(gè)DLNA模塊分為幾個(gè)階段:
首先需要給接入網(wǎng)絡(luò)中的設(shè)備提供ip供其他設(shè)備可以識別。一旦設(shè)備連接到網(wǎng)上并且分配了地址,就要進(jìn)行下一步的操作。
設(shè)備發(fā)現(xiàn)是UPnP網(wǎng)絡(luò)實(shí)現(xiàn)的第一步,在設(shè)備發(fā)現(xiàn)操作之后,控制點(diǎn)可以發(fā)現(xiàn)感興趣的設(shè)備,并讓控制點(diǎn)獲得設(shè)備能力的描述文檔,同時(shí)控制點(diǎn)也可以向設(shè)備發(fā)送命令,獲取設(shè)備的狀態(tài)的變更。
UPnP網(wǎng)絡(luò)結(jié)構(gòu)的第二步是設(shè)備描述。當(dāng)控制點(diǎn)發(fā)現(xiàn)了當(dāng)前設(shè)備之后,此時(shí)控制點(diǎn)對當(dāng)前設(shè)備的信息還是知之甚少,控制點(diǎn)僅僅知道當(dāng)前設(shè)備或服務(wù)的UPnP類型,還有設(shè)備的UUID和設(shè)備描述的URL地址。
控制點(diǎn)發(fā)現(xiàn)取得設(shè)備描述后,即準(zhǔn)備提供展示。一旦獲取了進(jìn)行展示的URL,那么控制點(diǎn)就可以通過此URL得到一個(gè)頁面,通過在瀏覽器中加載該頁面,并根據(jù)頁面功能,支持用戶控制設(shè)備和/或?yàn)g覽設(shè)備狀態(tài)。每一項(xiàng)完成的程度由展示頁面和設(shè)備的具體功能決定[11-12]。
Upnp的整個(gè)交互過程可以用如圖1所示。
圖1 DLNA功能實(shí)現(xiàn)設(shè)計(jì)流程圖
一個(gè)完整的upnp av體系由三部分組成:控制點(diǎn)、設(shè)備、媒體播放器。
控制點(diǎn)提供用戶控制的界面,并協(xié)調(diào)服務(wù)器與播放器之間的相互操作;媒體服務(wù)器提供內(nèi)容目錄、連接管理與內(nèi)容傳輸?shù)确?wù);播放器主要用來播放數(shù)據(jù)。下面是三者之間的聯(lián)系如圖2所示。
圖2 upnp av體系
要實(shí)現(xiàn)ushare首先需要編譯其依賴的3個(gè)庫UShare編譯、運(yùn)行需要依賴 ffmpeg、libupnp、libdlna3個(gè)庫進(jìn)行運(yùn)行,所以要先編譯這3個(gè)庫。3個(gè)庫的關(guān)系如圖3所示。
圖3 ushare的編譯
當(dāng)前的網(wǎng)關(guān)是MTK方案的,其編譯需要在param.xml中增加節(jié)點(diǎn)和devfunc()函數(shù),如下:
然后在mk_platform.sh下面增加upnp的編譯,DLNA主要由ushare實(shí)現(xiàn),UShare是實(shí)現(xiàn)dlna DMS功能的輕量級服務(wù)器,編譯時(shí)需要使用Libdlna,libupnp,ffmpeg 3個(gè)庫支持。3個(gè)庫文件都是使用upnp庫自帶的configure進(jìn)行Makefile文件的生成,這里介紹其中一個(gè)的編譯方式,其他的兩個(gè)類似。例如libdlna的編譯
其中注意--prefix=`pwd`/../../build/libdlna是編譯完存放的目錄,命令行執(zhí)行完成后,會有configure腳本根據(jù)所輸入的參數(shù)自動生成Makefile文件,最后執(zhí)行make clean;make;make install后,完成libdlna的實(shí)際編譯過程,編譯成功之后會在/build/libdlna中出現(xiàn)相應(yīng)的include目錄和bin目錄。最后將編譯好的文件和庫拷貝到網(wǎng)關(guān)文件系統(tǒng)中。
首先調(diào)用upnp庫接口函數(shù)init_upnp(),通過upnp庫的接口函數(shù)UpnpInit()初始化一個(gè)upnp,并調(diào)用函數(shù)UpnpSetVirtualDirCallbacks注冊http協(xié)議有關(guān)的回調(diào)函數(shù) get_info、open、read、write、close,通過以上函數(shù)來建立媒體播放器與媒體服務(wù)器數(shù)據(jù)的傳輸?shù)逆溄印?/p>
然后通過調(diào)用upnp庫的接口庫函數(shù)UpnpRegisterRootDevice2()來注冊ushare設(shè)備的文檔信息與事件響應(yīng)回調(diào)函數(shù)event_handler。一旦控制點(diǎn)發(fā)現(xiàn)ushare媒體服務(wù)器,就會獲取到ushare的描述文檔,控制點(diǎn)根據(jù)設(shè)備所提供的服務(wù),就可以向upnp設(shè)備發(fā)送請求服務(wù)的事件。
ushare所支持的媒體傳輸格式與傳輸協(xié)議主要通過ushare提供的相關(guān)服務(wù)來獲取,控制點(diǎn)通過該服務(wù)獲取媒體服務(wù)器和媒體播放器的連接管理服務(wù)來確定進(jìn)行數(shù)據(jù)傳輸?shù)膮f(xié)議與都支持的數(shù)據(jù)格式。
其中的ContentDirectory服務(wù),主要用來確定在媒體服務(wù)器上共享的資源,此服務(wù)可以進(jìn)行目錄的瀏覽和目錄搜索服務(wù)cds_browsecds_search(),媒體播放器獲得了ushare共享的資源的url后,就通過http協(xié)議來獲取相應(yīng)數(shù)據(jù)了,這主要通過注冊的回調(diào)函數(shù)來實(shí)現(xiàn)。
由于UShare需要運(yùn)行在br0口上,所以需要確定橋代碼中將239.255.255.250的廣播報(bào)文,廣播到CPU口中,供程序監(jiān)聽。演示的環(huán)境實(shí)現(xiàn)DMR、DMC,注意演示的控制系統(tǒng)均需要支持UPnP協(xié)議,本文中進(jìn)行演示的系統(tǒng)中是使用Win7 Business系統(tǒng)[13]。
首先Win7中進(jìn)行演示需要打開如下的服務(wù),在run運(yùn)行欄中執(zhí)行services.msc,打開Function Discovery Provider Host、Function Discovery Resource Publication、SSDP Discovery、UPnP Device Host這樣4個(gè)服務(wù)。本文在演示環(huán)境中使用Win7自帶的網(wǎng)上鄰居查看共享的內(nèi)容,使用WMP進(jìn)行和播放[14-16]。
之前的編譯工作完成之后已經(jīng)可以在網(wǎng)關(guān)上面看到編譯好的功能模塊了,下面要把模塊啟動起來,需要調(diào)用ushare-f/etc/ushare.conf&,ushare還會載入ushare.conf中的配置參數(shù),具體參數(shù)的含義如表1所示。
表1 ushare.conf配置參數(shù)
1)網(wǎng)關(guān)的配置界面如下圖:在WEB頁面,勾選upnp啟用開關(guān)勾選enable的時(shí)候則啟動ushare,其中share Folders可以選擇分享的目錄。以上的設(shè)置都是在修改我們的配置文檔ushare.conf。啟動成功后可以ps看到進(jìn)程已經(jīng)存在了。Web界面配置如圖4所示。
圖4 網(wǎng)關(guān)DLNA配置界面
2)配置UShare命令參數(shù)
UShare的配置文件存放在/etc/ushare.conf,主要配置項(xiàng)如下:
配置此UShare程序的接入點(diǎn)命名。
配置UShare程序啟動的監(jiān)聽端口。
配置UShare是否啟用WEB頁面。
配置UShare頁面的端口,默認(rèn)為49200
3)運(yùn)行UShare程序
啟動完成后,就可以通過頁面進(jìn)行訪問http://192.168.1.1:49200/web/ushare.html頁面來訪問 DMS,并可以修改共享目錄訪問。
4)功能演示
在Win7系統(tǒng)中,網(wǎng)上鄰居可以查看到媒體設(shè)備中出現(xiàn)fiberhome1設(shè)備。在WMP中可以選擇此設(shè)備中的播放設(shè)備進(jìn)行播放,媒體設(shè)置界面如圖5所示。
圖5 媒體設(shè)置界面
其中這些圖片文件為放置在/var/目錄下的媒體文件,點(diǎn)擊可以在PC上進(jìn)行查看,從而實(shí)現(xiàn)DMS部署。
本研究采用的是網(wǎng)關(guān)作為DMS,PC作為DMP進(jìn)行播放網(wǎng)關(guān)中的內(nèi)容,軟件設(shè)計(jì)采用模塊化設(shè)計(jì)思想,提高了系統(tǒng)的可靠性和維護(hù)性。該功能實(shí)現(xiàn)于路由器上,使網(wǎng)關(guān)拜托單一的路由功能而可以作為存儲設(shè)備和共享設(shè)備,從而實(shí)現(xiàn)DMS部署。
[1]陳勇.UPnP在嵌入式平臺中的應(yīng)用[J].福建電腦,2010(8):351-355.
[2]番茄蛋撻.DLNA式數(shù)字家庭[J].電腦迷,2012(3):86-87.
[3]趙從志.UPnP家庭網(wǎng)關(guān)配置管理的設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用,2010(3):38-41.
[4]張莉.基于UPnP和UPnP AV的多媒體內(nèi)容同步和放[J].計(jì)算機(jī)科學(xué),2011(5):9-12.
[5]苗再良.數(shù)字家庭網(wǎng)絡(luò)現(xiàn)狀和發(fā)展趨勢[J].信息技術(shù)與信息化,2005(3):78-80.
[6]欒新.基于UPnP協(xié)議的AV框架的實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用研究,2006(12):33-36.
[7]張容娟.DLNA數(shù)字媒體服務(wù)器的研究與實(shí)現(xiàn)[J].綿陽師范學(xué)院學(xué)報(bào),2012(11):4-6.
[8]葛體富,鄭志強(qiáng).基于uPnP協(xié)議在DLNA架構(gòu)中的DMS開發(fā)簡介[J].科技創(chuàng)新導(dǎo)報(bào),2010(8):10-13.
[9]楊超,劉寶玲.家庭網(wǎng)絡(luò)中智能設(shè)備的部署與實(shí)現(xiàn)[J].現(xiàn)代電信科技,2011(11):4-5.
[10]樂行.數(shù)字家庭的網(wǎng)絡(luò)標(biāo)準(zhǔn)——DLNA[J].實(shí)用影音技術(shù),2012(9):89-92.
[11]石勇,袁璐鳴.UPnP開發(fā)技術(shù)及應(yīng)用[J].計(jì)算機(jī)與數(shù)字工程,2010(4):77-78.
[12]譚淑慧.下一代網(wǎng)絡(luò)業(yè)務(wù)驅(qū)動下的數(shù)字家庭解決方案[J].廣西通信技術(shù),2016(3):33-35.
[13]曾輝,費(fèi)云,唐亮.通用即插即用服務(wù)自動發(fā)現(xiàn)技術(shù)[J].中興通訊技術(shù),2016(4):13-16.
[14]劉世敏.家庭控制網(wǎng)絡(luò)通訊技術(shù)研究[J].家電科技,2015(5):52-56.
[15]梁曉輝,游志勝.中國數(shù)字家庭發(fā)展?fàn)顩r的研究[J].有線電視技術(shù),2015(3):62-66.
[16]張容娟.DLNA數(shù)字媒體服務(wù)器的研究和實(shí)現(xiàn)[J].綿陽師范學(xué)院學(xué)報(bào),2012,31(11):94-97.