国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
基于VFW的視頻應(yīng)用程序開發(fā)

當(dāng)前,在Windows 平臺下開發(fā)視頻應(yīng)用程序一般采用兩種方式:一種是基于視頻采集卡所附帶的二次軟件開發(fā)包SDKSoftware development kit)進(jìn)行。這種方式的優(yōu)點(diǎn)是應(yīng)用方便,容易上手,缺點(diǎn)是對硬件的依賴性較強(qiáng),靈活性差,且功能參差不齊,不能充分滿足各種視頻應(yīng)用程序的開發(fā)需要;

另一種方式是基于VFW(Video for Windows)進(jìn)行的。VFW Microsoft公司為開發(fā)Windows平臺下的視頻應(yīng)用程序提供的軟件工具包,提供了一系列應(yīng)用程序編程接口(API),用戶可以通過它們很方便地實(shí)現(xiàn)視頻捕獲[1]、視頻編輯及視頻播放等通用功能,還可利用回調(diào)函數(shù)開發(fā)更復(fù)雜的視頻應(yīng)用程序。它的特點(diǎn)是播放視頻時(shí)不需要專用的硬件設(shè)備,而且應(yīng)用靈活,可以滿足視頻應(yīng)用程序開發(fā)的需要。Windows操作系統(tǒng)自身就攜帶了VFW,系統(tǒng)安裝時(shí),會(huì)自動(dòng)安裝VFW的相關(guān)組件。VC++4.0以來就支持VFW,大大簡化了視頻應(yīng)用程序的開發(fā)。目前,PC機(jī)上多媒體應(yīng)用程序的視頻部分,大都是利用VFW API開發(fā)的。

1  VFW 的體系結(jié)構(gòu)

VFW以消息驅(qū)動(dòng)方式對視頻設(shè)備進(jìn)行存取,可以很方便地控制設(shè)備數(shù)據(jù)流的工作過程。目前,大多數(shù)的視頻采集卡驅(qū)動(dòng)程序都支持VFW接口,它主要包括多個(gè)動(dòng)態(tài)連接庫,通過這些組件間的協(xié)調(diào)合作,來完成視頻的捕獲、視頻壓縮及播放功能。VFW體系結(jié)構(gòu)如圖1所示。

1VICAP.DLL:主要實(shí)現(xiàn)視頻捕獲功能,包含了用于視頻捕獲的函數(shù),為音像交錯(cuò)AVI (Audio video interleaved)格式文件和視頻、音頻設(shè)備程序提供一個(gè)高級接口。

2MSVIDEO.DLL:能夠?qū)⒁曨l捕獲窗口與獲驅(qū)動(dòng)設(shè)備連接起來,支持ICM視頻編碼服務(wù)。

3MCIAVI.DRV:包含MCIMedia control interface)命令解釋器,實(shí)現(xiàn)回放功能。

4AVIFILE.DLL:提供對AVI文件的讀寫操作等文件管理功能。

5ICM ( Installable compression manager ):即壓縮管理器,提供對存儲在AVI文件中視頻圖像數(shù)據(jù)的壓縮、解壓縮服務(wù)。

       6ACM ( Audio Compression Manager ):即音頻壓縮管理器,提供實(shí)時(shí)音頻壓縮及解壓縮功能。
2  視頻捕獲

視頻數(shù)據(jù)的實(shí)時(shí)采集,主要通過AVICAP模塊中的消息、宏函數(shù)、結(jié)構(gòu)以及回調(diào)函數(shù)來完成。視頻捕獲的一般過程如下:

2.1 建立捕獲窗口

利用AVICAP 組件函數(shù) capCreateCaptureWindow() 建立視頻捕獲窗口,它是所有捕獲工作及設(shè)置的基礎(chǔ),其主要功能包括: 動(dòng)態(tài)地同視頻和音頻輸入器連接或斷開;設(shè)置視頻捕獲速率;提供視頻源、視頻格式以及是否采用視頻壓縮的對話框;設(shè)置視頻采集的顯示模式為Overlay或?yàn)?/span>Preview; ⑤ 實(shí)時(shí)獲取每一幀視頻數(shù)據(jù);將一視頻流和音頻流捕獲并保存到一個(gè)AVI文件中;捕獲某一幀數(shù)字視頻數(shù)據(jù),并將單幀圖像以DIB格式保存;指定捕獲數(shù)據(jù)的文件名,并能將捕獲的內(nèi)容拷貝到另一文件。

2.2 登記回調(diào)函數(shù)[2]

登記回調(diào)函數(shù)用來實(shí)現(xiàn)用戶的一些特殊需要。在以一些實(shí)時(shí)監(jiān)控系統(tǒng)或視頻會(huì)議系統(tǒng)中,需要將數(shù)據(jù)流在寫入磁盤以前就必須加以處理,達(dá)到實(shí)時(shí)功效。應(yīng)用程序可用捕獲窗來登記回調(diào)函數(shù),以便及時(shí)處理以下情況:捕獲窗狀態(tài)改變、出錯(cuò)、使用視頻或音頻緩存、放棄控制權(quán)等,相應(yīng)的回調(diào)函數(shù)分別為 capStatusCallback(), capErrorCallback(), capVideoStreamCallback(), capWaveStreamCallback(),capYieldCallback()

2.3 獲取捕獲窗口的缺省設(shè)置

通過宏capCaptureGetSetup(hWndCap,&m_Parms,sizeof(m_Parms))來完成。

2.4 設(shè)置捕獲窗口的相關(guān)參數(shù)

通過宏capCaptureSetSetup(hWndCap,&m_Parms,sizeof(m_Parms))來完成。

2.5 連接捕獲窗口與視頻捕獲卡

通過宏capDriveConnect(hWndCap,0)來完成。

2.6 獲取采集設(shè)備的功能和狀態(tài)

通過宏capDriverGetCaps(hWndCap,&m_CapDrvCap,sizeof(CAPDRIVERCAPS))來獲取

視頻設(shè)備的能力,通過宏capGetStatus(hWndCap,&m_CapStatus,sizeof(m_CapStatus))

來獲取視頻設(shè)備的狀態(tài)。

2.7 設(shè)置捕獲窗口顯示模式

視頻顯示有Overlay(疊加)Preview(預(yù)覽)兩種模式。在疊加模式下,捕獲視頻數(shù)據(jù)布展系統(tǒng)資源,顯示速度快,視頻采集格式為YUV格式,可通過capOverlay(hWndCap,TRUE)來設(shè)置;預(yù)覽模式下要占用系統(tǒng)資源,視頻由系統(tǒng)調(diào)用GDI函數(shù)在捕獲窗顯示,顯示速度慢,它支持RGB視頻格式。

2.8 捕獲圖像到緩存或文件并作相應(yīng)處理

若要對采集數(shù)據(jù)進(jìn)行實(shí)時(shí)處理,則應(yīng)利用回調(diào)機(jī)制,由capSetCallbackOnFramehWndCap, FrameCall-

backProc)完成單幀視頻采集;由capSetCallbackOnVideoStream(hWndCap, VideoCallbackProc)完成視頻流采集。如果要保存采集數(shù)據(jù),則可調(diào)用capCaptureSequencehWnd);要指定文件名,可調(diào)用capFileSetCap-

ture(hwnd, Filename)。

2.9 終止視頻捕獲 斷開與視頻采集設(shè)備的連接

調(diào)用capCatureStop(hWndCap)停止采集,調(diào)用capDriverDisconnect(hWndCap), 斷開視頻窗口與捕獲驅(qū)動(dòng)程序的連接。

3  視頻編輯和播放

利用VFW,不僅可以實(shí)現(xiàn)視頻流的實(shí)時(shí)采集,還提供了編輯和播放功能,主要通過AVIFILEICM、ACM、MCIWnd 等組件之間的協(xié)作來完成。

       1) AVIFileInit();//初始化;

2) AVIFileOpen(); //打開一個(gè)AVI文件并獲文件的句柄;

3) AVIFileInfo(); //獲取文件的相關(guān)信息,如圖像的WidthHeight;

4) AVIFileGetStream(); //建立一個(gè)指向需要訪問的數(shù)據(jù)流的指針;

5) AVIStreamInfo(); //獲取存儲數(shù)據(jù)流信息的AVISTREAMINFO結(jié)構(gòu);

6) AVIStreamRead(); //讀取數(shù)據(jù)流中的原始數(shù)據(jù), AVI文件進(jìn)行所需的編輯處理;

7) AVIStreamRelease(); //釋放指向視頻流的指針;

8) AVIFileRelease();AVIFileExit(); //釋放AVI文件。

若數(shù)據(jù)是壓縮過的,則用AVIStreamGetFrameOpen(),AVIStreamGetFrame()AVIStreamGetFrameClose()來操作,可以完成對視頻流的逐幀分解。

3.2  視頻播放

對于實(shí)現(xiàn)視頻流的播放,VFW提供了MCIWnd窗口類[4],主要用于創(chuàng)建視頻播放區(qū),控制并修改MCI窗口當(dāng)前加載媒體的屬性。一個(gè)由函數(shù)、消息和宏組成的庫與MCIWnd相關(guān)聯(lián),通過它們可以進(jìn)行AVI文件操作,很方便地使應(yīng)用程序完成視頻播放功能。

1)MCIWndCreate(); //注冊MCIWnd窗口類,創(chuàng)建MCIWnd窗口,并指定窗口風(fēng)格;

2)AVIFileInit(); //初始化;

3) AVIFileOpen(); //打開AVI文件;

4) AVIFileGetStream(); //獲得視頻流;

5)運(yùn)用相關(guān)函數(shù)進(jìn)行各種播放任務(wù):MCIWndPlay()正向播放AVI文件內(nèi)容,MCIWndPlayReverse()反向播放,MCIWndResume() 恢復(fù)播放,MCIWndPlayPause()暫停播放,MCIWndStop()停止播放等等。

6) AVIStreamRelease(); //釋放視頻流;

7AVIFileRease();AVIFileExit(); //斷開與AVI文件的連接,釋放視頻源。

由以上步驟可以看出,視頻播放是視頻編輯其中的一種操作。

4  結(jié)束語

隨著社會(huì)的發(fā)展,人們對多媒體技術(shù)的需求也越來越高,已經(jīng)不滿足單一的通信功能,要求影像與聲音的同步服務(wù),如可視電話、視頻會(huì)議、各種實(shí)時(shí)監(jiān)控系統(tǒng)、報(bào)警系統(tǒng)等,而數(shù)字視頻技術(shù)則是多媒體技術(shù)的核心之一。微軟推出的數(shù)字視頻處理軟件開發(fā)包Video for Windows,將開發(fā)者從硬件的底層束縛中解放出來,大大簡化了數(shù)字視頻捕獲這一原本很復(fù)雜的工作,利用它可以很方便的將模擬視頻信號數(shù)字化,并支持進(jìn)一步處理和播放,為開發(fā)實(shí)時(shí)視頻應(yīng)用程序開辟了道路。

參考文獻(xiàn):

[1] 周長發(fā). VC++多媒體編程技術(shù)與實(shí)例[M]. 北京:電子工業(yè)出版社, 1999.

[2] 張星明. 視頻圖像捕獲及運(yùn)動(dòng)檢測技術(shù)的實(shí)現(xiàn)[J]. 計(jì)算機(jī)工程, 2002, 288):130-132.

[3] 肖永隆,王  . 利用VFW庫函數(shù)快速分解AVI數(shù)據(jù)流[J]. 信息工程大學(xué)學(xué)報(bào), 2001, 2(3)39-42.

[4] 喻其炳. 多媒體信息處理在Windows中的應(yīng)用[J]. 重慶工商大學(xué)學(xué)報(bào), 2003, 20(1)64-66.

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
基于VFW的視頻監(jiān)控系統(tǒng)
VC++ MCI和MCIWnd兩種方法播放AVI
開發(fā)基于P2P技術(shù)開發(fā)視頻會(huì)議軟件相關(guān)主要技術(shù)
數(shù)字視頻的基本概念(四)
編解碼學(xué)習(xí)筆記(七):微軟Windows Media系列
AVI 音頻視頻交錯(cuò)格式
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服