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