VB環境下壓縮資料流播放技術(1) (轉)

gugu99發表於2007-11-28
VB環境下壓縮資料流播放技術(1) (轉)[@more@]     1. 引言


   銀行的數字化監視是目前比較有市場及應用前景的開發專案,基於不同的MPEG採集卡與外圍裝置開發的監視監控系統在國內外都有比較成型的技術。為了滿足實時監視、實時採集、隨時回放、壓縮資料流的傳播等具體要求,在該系統中使用了一種用於影片/多點傳輸(影片廣播)的影片資料採集卡,提供AVI(MPEG I Frame壓縮編碼)採集、MPG採集。傳送端廣播MPEG流,接受端接受MPEG流並顯示,網路傳輸採用WinSock 2 IP-Multicast。如果本機為傳送端,網路上另外任何一臺PC可以作為接收端。只要指定不同埠號,同時可以有多臺PC機作為傳送端,多臺PC機作為接收端接收不同傳送端的影片資料,也可在傳送資料的同時在本機將資料存為MPEG。本文主要介紹在VB的環境下開發MPEG卡採集的Audio/Vo資料的一些技巧。


   2. MPEG的內容與發展簡介


   多資訊主要包括影像、和文字三大類。其中影片、音訊等訊號的資訊量是非常大的,而且這些資訊的表達方式、輸入、輸出的要求也各不同。對這些資料進行有效的表達和適當處理是很重要的,它使多媒體資訊壓縮技術成為多媒體通訊領域中的關鍵技術之一。ISO與IEC於1988年聯合成立的MPEG(Moving Picture Expert Group),致力於運動影像及其伴音編碼的全球標準化工作。它包括MPEG系統:MPEG影片、MPEG音訊。為了推動社會由文字資訊時代向多媒體資訊時代過渡,ISO繼MPEG-1、2和4後又推出了MPEG-7。


   MPEG-1制定於1993年(ISO/IEC 11172),是針對1.5Mbit/s以下資料傳輸率的數字媒質運動影像及其伴音編碼的國際標準。影片壓縮率為26:1。MPEG-2制定於1995年(ISO/IEC 13818),是CCIR601建議的影像質量DVB、HDTV和制定的3-10Mbit/s的運動影像及其伴音編碼的國際標準。與前面基於資訊理論的波形編碼理論,針對一定位元率的影片、音訊編碼的MPEG標準不同的是,於1998年11月公佈的國際標準MPEG-4更加註重多媒體系統的互動性和靈活性。它引入AV(Audio/Visual s),使得更多的互動操作成為可能。1998年10月國際標準化組織又推出了MPEG-7的構想,預計於2001年初最終完成並公佈,其正式名稱為"多媒體內容描述介面"(Multimedia Content Description Interface)。它提出了一種適用於現實生活中的各種多媒體內容的標準化描述方案,以提取待描述物件的各方面特徵為基礎,方便人們對所需的多媒體材料進行、有效的檢索。


   3.VB開發MPEG -- Audio/Video資料流的播放技術


   3.1.VB中Multimedia MCI ,Media控制元件播放MPEG資料流的缺點


   VB中常用的多媒體控制元件是Multimedia MCI 控制元件,它管理媒體控制介面 (MCI) 裝置上的多媒體檔案的記錄與回放。它被用來向諸如音效卡、MIDI 序列發生器、CD-ROM 器、影片 CD 和影片磁帶記錄器及播放器等裝置發出 MCI 命令,還支援 (*.avi) 影片檔案的回放。採用Multimedia MCI 控制元件播放採集的MPEG資料流,播放速度比實時監控顯示要快,在測試時還發現MPEG檔案長度縮短到500k-600k時,就無法看到播出的影像了。改用VB中的MediaPlayer控制元件上敘缺點仍然存在。分析原因是:因為MPEG檔案長度太短了,播放裝置剛開啟就已經關閉了,這是程式設計無法控制的。而且,對於要求獲取的某些有關壓縮資料流的資訊和希望實現的某些功能,比如圖線尺寸、Copmression Rate、圖形的縮放顯示、介面的美觀等,上敘控制元件所提供的為方便開發人員使用的高層介面已不適用,要想在此基礎上實現對底層的一些操作,難度可想而知。在解決上敘實際性問題時,我們了動態連結庫Quatrz.dll。


   3.2.提供對MPEG流方便的底層操作和高層介面的動態連結庫Quatrz.dll


   在WindowsSystem下可找到一個動態連結庫Quatrz.dll,這是Windows中帶的用於控制運動影像的播放的一個型別庫,只要在VB的"引用"選單中將它新增進來即可使用。該庫中定義了IBasicAudio,IBasicVideo和IBasicVideo2,IMediaEvent 、IMediaEventEx、IMediaPosition等類,可方便地在Commanutton控制元件的Click等事件中新增程式碼設定和讀取Audio的相關值,設定或讀取Video的輸入輸出源的相關引數,直接呼叫無參Run、Pause、Stop等控制播放事件程式,利用IMediaPosition類對具體播放細節進行操作。對於壓縮的MPEG資料流的輸出顯示並不需要特別的控制元件,在VisualBasic中你可以選擇一個窗體作為容器或窗體上的PictureBox控制元件作為容器。為了介面的美觀和使用者查取相關資訊的方便,我們採用了PictureBox控制元件作為容器顯示播放的MPEG資料流。


   3.3.用PictureBox控制元件顯示MPEG資料流


   中PictureBox 控制元件可以顯示來自點陣圖、圖示或者元檔案,以及來自增強的元檔案、JPEG 或 GIF 檔案的圖形。亦可在程式碼中操作圖形屬性和方法,以建立動畫或進行模擬。在窗體上放置了一個PictureBox控制元件picTV,在呼叫了WindowsSystem下動態連結庫Quatrz.dll的基礎上,定義一個全域性的Object物件pMC,令 pMC指向 FilgraphManager的一個新例項,開啟壓播放的MPEG檔案;再定義一個區域性物件 pVW 為 IVideoWindow的新例項,開啟一個播放Video的視窗;令pVW = pMC,給物件引用pVW賦值,將picTV的屬性值hWnd賦給pVW的Owner ,這樣picTV就能顯示接收的MPEG資料流了。具體操作如下:


Set pMC = New FilgraphManager

pMC.RenderFile "C:BankMontiorExample.MPG"

Set pVW = pMC

pVW.WindowStyle = CLng(&H6000000)

pVW.Left = 0

pVW.Top = 0

OldWidth = pVW.width

OldHeight = pVW.Height

picTV.width = pVW.width * 15

picTV.Height = pVW.Height * 15

pVW.Owner = picTV.hWnd

   可以單獨定義一個函式包括這些程式碼,也可將其放到CommandButton控制元件的Click事件中。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-985647/,如需轉載,請註明出處,否則將追究法律責任。

相關文章