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