基于WinCE的在線流媒體播放器的軟件設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:互聯(lián)網(wǎng)的迅猛發(fā)展和普及為流媒體業(yè)務(wù)發(fā)展提供了強(qiáng)大的市場(chǎng)動(dòng)力,流媒體業(yè)務(wù)正變得日益流行?;诖嗽O(shè)計(jì)了一個(gè)基于WinCE 6.O操作系統(tǒng)的在線流媒體播放軟件,運(yùn)用Visual Studio 2005開(kāi)發(fā)工具的DirectShow技術(shù)來(lái)開(kāi)發(fā)在線流媒體播放程序的具體方法和程序代碼。闡述了整個(gè)流媒體播放程序的實(shí)現(xiàn)流程,真正實(shí)現(xiàn)了在線流媒體播放。
關(guān)鍵詞:DirectShow;WinCE 6.0;流媒體
0 引言
多媒體終端是一種以播放多媒體文件為其主要功能的消費(fèi)類電子產(chǎn)品,其中的多媒體文件包括音頻、視頻、FLASH動(dòng)畫(huà)、圖片等。而且,在此基礎(chǔ)之上,多媒體終端可以擴(kuò)展諸如視頻錄制、攝像/照相、數(shù)碼相冊(cè)、收音機(jī)、電子書(shū)、游戲、上網(wǎng)等豐富的功能,成為一種個(gè)人信息和娛樂(lè)的便攜式設(shè)備。便攜式媒體播放器(Portable Media Player,PMP)、智能手機(jī)(Smart Phone)、個(gè)人數(shù)字助理(PDA)等都是典型的多媒體終端設(shè)備。本文主要論述了如何在基于WinCE操作系統(tǒng)的智能設(shè)備上利用DirectShow技術(shù)實(shí)現(xiàn)流媒體的播放,并給出了測(cè)試結(jié)果。
1 DirectShow簡(jiǎn)介
DirectShow是DirectX開(kāi)發(fā)包中關(guān)于流媒體處理的一個(gè)開(kāi)發(fā)包,這個(gè)開(kāi)發(fā)包可以進(jìn)行音頻和視頻的捕捉,使用它可以開(kāi)發(fā)DVD應(yīng)用程序和數(shù)字TV應(yīng)用程序。DirectShow支持的媒體文件主要有WMA、MOV、MPG、AVI、MP3、WAV、WMV等,無(wú)論是讀取媒體文件還是將捕捉的數(shù)據(jù)寫(xiě)入到媒體文件,DirectShow開(kāi)發(fā)包都能提供很好的技術(shù)支持。
DirectShow技術(shù)利用標(biāo)準(zhǔn)組件來(lái)處理流媒體數(shù)據(jù),這些組件稱為過(guò)濾器。過(guò)濾器帶有輸入和輸出針角,或二者兼而有之。在DirectShow技術(shù)中處于最核心位置的就是作為“過(guò)濾器”的可插入標(biāo)準(zhǔn)組件,它是執(zhí)行特定任務(wù)的COM對(duì)象。過(guò)濾器又分為源過(guò)濾器(souroe filter)、變換過(guò)濾器(Trans form filter)和表現(xiàn)過(guò)濾器(Render filter)等。過(guò)濾器通過(guò)向文件讀寫(xiě)、修改數(shù)據(jù)和顯示數(shù)據(jù)到輸出設(shè)備上來(lái)操作流媒
體。為了完成整個(gè)任務(wù)。必須要將所有過(guò)濾器Filter連接起來(lái),這3種過(guò)濾器組成了過(guò)濾器圖表結(jié)構(gòu),如圖1所示。
2 DirectShow技術(shù)開(kāi)發(fā)準(zhǔn)備
DirectShow組件在“C:\WINDOWS\system32”目錄下的Quartz.dll動(dòng)態(tài)庫(kù)中,要使C#代碼引用COM對(duì)象和接口,必須將COM類型庫(kù)轉(zhuǎn)換為.NET框架元數(shù)據(jù),從而有效地創(chuàng)建一個(gè)可以從任何托管語(yǔ)言調(diào)用的托管包裝。在轉(zhuǎn)換過(guò)程中需要使用FrameWork SDK自帶的TlbImp命令工具,該命令工具在“E:\Program Files\Microsoft Visual Studio 8\SDK\v2.O\Bin\TlbImp.exe”目錄下(取決于Visual Studio 2005的安裝路徑)。該命令的使用方法為:TlbImp C:\WINDOWS\system32\quartz.dll out:QuarteTypeLib.dll在DOS命令下執(zhí)行轉(zhuǎn)換成功。
[!--empirenews.page--]
3 多媒體播放器程序
按以下步驟創(chuàng)建一個(gè)空的項(xiàng)目:
(1)啟動(dòng)Visual Studio 2005,然后單擊菜單欄“新建”|“項(xiàng)目”。
(2)在項(xiàng)目類型里選擇“Visual C#”|“智能設(shè)備”,在模板中選擇“設(shè)備應(yīng)用程序”,鍵入新項(xiàng)目的名稱(最好為DirectShow),然后單擊“確定”。
(3)在屬性窗口中將窗體名稱更改為FrmPlayMedia,將窗體文本更改為“流媒體播放器”。
按照以下步驟在項(xiàng)目中添加一個(gè)對(duì)DirectShow的引用:
(1)在Visual Stuidio 2005開(kāi)發(fā)環(huán)境中,選擇菜單“項(xiàng)目”|“添加引用”命令,彈出“添加引用”對(duì)話框。
(2)選擇“瀏覽”選項(xiàng)卡,通過(guò)瀏覽找到引用Quartz TypeLib.dll所在的位置,并引用到程序中。
(3)引入using QuartzTypeLib后,在程序中就可以開(kāi)發(fā)相關(guān)多媒體程序了。
添加Windows窗體控件:
(1)在View(視圖)菜單中,單擊Designer(設(shè)計(jì)器),或者單擊Solution Explorer(解決方案資源管理器)中的View Designer(視圖設(shè)計(jì)器)按鈕,切換到窗體設(shè)計(jì)器。
(2)在窗體上添加6個(gè)Button控件,主要用來(lái)操作播放的媒體文件。
(3)在窗體上添加一個(gè)TrackBar控件,用來(lái)顯示媒體文件播放的進(jìn)度。
(4)在窗體上添加一個(gè)Timer控件,用來(lái)計(jì)算媒體當(dāng)前的進(jìn)度。
(5)調(diào)整控件在窗體中的排列方式,使之符合需要而且方便用戶使用,如圖2所示。
4 實(shí)驗(yàn)結(jié)果
以上程序編譯后,即可下載到開(kāi)發(fā)板上的WinCE6.0系統(tǒng)內(nèi),就可以順利地播放在線視頻。圖3是播放效果截圖,流媒體文件地址是mms://stream-mms.daai.tv/wmtencoder/100k.wmv。
5 結(jié)束語(yǔ)
現(xiàn)代多媒體技術(shù)的終端智能化和嵌入化發(fā)展趨勢(shì),促使嵌入式系統(tǒng)產(chǎn)品中對(duì)多媒體的應(yīng)用越來(lái)越多,特別是要求對(duì)各種多媒體文件的播放支持顯得越來(lái)越重要。通過(guò)對(duì)本程序的研究,可以比較清晰的了解WinCE下基于DireetShow多媒體編程開(kāi)發(fā)的方法與步驟,以便為更復(fù)雜的開(kāi)發(fā)應(yīng)用奠定基礎(chǔ)。