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