UPnP媒體播放器的研究與實(shí)現(xiàn)
所有的實(shí)際操作,如play,stop,pause,…,均與UPnP無關(guān),它只實(shí)現(xiàn)消息傳遞。控制節(jié)點(diǎn)負(fù)責(zé)接收命令傳遞給播放器,再由播放器中的媒體解碼庫完成解碼、播放、暫停、停止等功能。媒體服務(wù)器、控制節(jié)點(diǎn)、媒體播放器的互動(dòng)如圖1所示。本文引用地址:http://butianyuan.cn/article/166840.htm
4 測試與分析
系統(tǒng)開發(fā)完成后,在兩臺(tái)同處于一個(gè)局域網(wǎng)的臺(tái)式機(jī)上進(jìn)行測試,測試流程如下:首先在一臺(tái)機(jī)上啟動(dòng)Intel UP-nP工具集中的AVWizard程序,該程序其實(shí)就是媒體服務(wù)器和控制節(jié)點(diǎn)的合體,它既能提供媒體服務(wù)器的各種功能,也可提供控制點(diǎn)的功能。在另一臺(tái)機(jī)上啟動(dòng)媒體播放器,AVWizard首先掃描網(wǎng)絡(luò)中有無它所支持的設(shè)備,發(fā)現(xiàn)媒體播放器后,獲得該播放器的設(shè)備描述文檔,并顯示播放器的名稱。用AvWizard選定一首MP3,并將地址發(fā)送給指定的媒體播放器(UPnP MediaRender)。播放器開始從媒體服務(wù)器指定的地址下載MP3,下載到一定長度時(shí)開始播放,詳細(xì)過程描述如下:
由圖2可知,當(dāng)AVWizard選定一首歌曲時(shí),播放器輸出
為:“Invoke:UPnPAVTransport_SetAVTransportURI…”。觸發(fā)播放器中媒體傳輸服務(wù)中的設(shè)置傳輸?shù)刂愤@一動(dòng)作.告訴播放器所需下載的媒體所在的URL和端口號,接著在AV Wizard中點(diǎn)擊play時(shí),可以看到圖3中播放器輸出為:“Invoke:UP-nPAVTransport_Play(0,1)”,觸發(fā)播放器媒體傳輸服務(wù)中的play動(dòng)作,開始下載要播放的內(nèi)容,同時(shí),播放器開始創(chuàng)建解
碼線程,輸出:“Create thread success!!”,則表示解碼線程創(chuàng)建成功,在該解碼線程中調(diào)用媒體解碼庫中的函數(shù)。媒體解碼庫出:“…The main proccess start…player_init”,初始化媒體解碼庫,解碼并開始播放音樂。
5 結(jié)論
由此可見,該媒體播放器實(shí)現(xiàn)成功,但存在不足之處:由于直接在Intel公司開源UPnP開發(fā)工具DeviceBuilder生成的代碼上進(jìn)行開發(fā),所以界面不夠友好。實(shí)現(xiàn)媒體播放器的創(chuàng)新點(diǎn)如下:(1)直接在Intel生成的UPnP框架上進(jìn)行開發(fā),與現(xiàn)有的許多使用開源UPnP SDK開發(fā)相比,無需進(jìn)行設(shè)備初始化和注冊工作,亦無需對UPnP的工作過程進(jìn)行手動(dòng)操作,使開發(fā)者的注意力可以完全集中在所需添加的服務(wù)上,無需關(guān)注繁瑣的協(xié)議通信細(xì)節(jié),簡化UPnP應(yīng)用的設(shè)計(jì)開發(fā);但缺點(diǎn)是由于目前業(yè)界有許多SDK開發(fā)包具有類似的功能,直接使用生成的UPnP框架不利于按需更換協(xié)議庫。(2)可在不同的操作系統(tǒng)上生成相應(yīng)的協(xié)議框架,屏蔽開發(fā)平臺(tái)的差異,方便開發(fā)人員在合適的平臺(tái)上實(shí)現(xiàn)所需的服務(wù)。(3)服務(wù)本身也可以作為模塊添加到應(yīng)用程序中,如媒體解碼庫就是作為一個(gè)獨(dú)立的模塊添加,實(shí)現(xiàn)松散耦合的應(yīng)用程序和組件,可根據(jù)不斷變化的情況和需求來實(shí)現(xiàn)服務(wù),為媒體播放器的功能擴(kuò)展提供了很好的基礎(chǔ)。
評論