VFW(videoforwindows)視頻編程_第1頁
VFW(videoforwindows)視頻編程_第2頁
VFW(videoforwindows)視頻編程_第3頁
VFW(videoforwindows)視頻編程_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、vfw (video for windows)視頻編程2008-04-26 14:00 avicap 提供視頻流的捕捉,并且可以是實(shí)時(shí)的單幀捕捉。另外, avicap 提供視頻資源 媒體控制接口(media control interface )設(shè)備的控制,因此我們可以控制(當(dāng)然是通過我們的應(yīng)用程序了)視頻資源(張坤注:應(yīng)該是mci ,media control interface )的起、停位置,并且可以增加捕捉操作來加入幀捕捉的步驟!你用 avicap window class 創(chuàng)建的窗口,可以完成一下操作(張坤注:或者說是“ 有一下功能” ) :1捕捉聲音、視頻流到一個(gè)avi 文件。2動

2、態(tài)地連接視頻、聲音輸入設(shè)備。3可以用覆蓋,或者直接用preview 方法去顯示一個(gè)實(shí)時(shí)變化的視頻信號。4當(dāng)開始捕捉的時(shí)候,指定一個(gè)文件(張坤注:用來存儲捕捉到的視頻的文件),并且把撲捉到的內(nèi)容copy 到另外一個(gè)文件。5設(shè)置捕捉的頻率;6顯示對話框來控制視頻資源(張坤注:應(yīng)該是mci 吧)和格式。7創(chuàng)建、保存、加載調(diào)色板。8copy 圖片,調(diào)色板到剪貼板上。9捕捉、保存一個(gè)單獨(dú)的圖片為一個(gè)設(shè)備無關(guān)的bitmap 如何使用視頻捕捉相信你看完上面的翻譯已經(jīng)快要嘔吐了 這么菜的水平還要上來丟人現(xiàn)眼沒辦法,誰然我這人臉皮厚呢 再說了,這年頭臉皮厚吃香啊_ 比如說那個(gè)叫做什么姐姐的啦,我的臉皮厚還是跟她

3、學(xué)的呢。算了算了不多說了,只要你敢往下看,我就敢往下寫 與其叫 “ 寫” 還不如叫翻譯吧。這部分包含了一些如何使用avicap window class 進(jìn)行視、音頻捕捉的步驟和例子1創(chuàng)建一個(gè)視頻捕捉窗口。下面的例子用capcreatecapturewindow 函數(shù)創(chuàng)建了一個(gè)捕捉窗口;hwnd hwndc=capcreatecapturewindow( (lpstr) ” my capture window” ,/窗口名稱ws_child | ws_visible,/設(shè)置窗口的類型0,/窗口左上角橫坐標(biāo)0,/窗口左上角縱坐標(biāo)100,/窗口寬度100,/窗口高度(hwnd)hwndparent

4、, /父窗口句柄(int)nid /* 該窗口的id*/) 2連接視頻捕捉設(shè)備驅(qū)動下面的例子連接捕捉窗口和msvideo 設(shè)備驅(qū)動,然后用capdriverdisconnect 宏斷開。fok=sendmessage(hwndc, /接收消息的窗口句柄wm_cap_driver_connect, /發(fā)送的消息0, /消息附加參數(shù)0l/* 消息附加參數(shù)*/); 或者也可以用一個(gè)宏去連接msvedeo 驅(qū)動fok=capdriverconnect(hwndc,0);/其中的參數(shù)hwndc 是我們剛才創(chuàng)建的視頻捕捉/窗口的句柄然后再調(diào)用capdriverdisconnect 宏斷開視頻捕捉驅(qū)動(這個(gè)

5、步驟一般在捕捉完畢后)capdriverdisconnect(hwndc); 3.下面的例子用capgetdriverdescription 函數(shù)去獲取機(jī)器上安裝的捕捉驅(qū)動的名字和版本char szdevicename80;/ 用來存放設(shè)備名稱char szdeviceversion80;/ 用來存放驅(qū)動版本for(windex=0;windex10;windex+) if(capgetdriverdescription (windex,szdevicename,sizeof(szdevicename), szdeviceversversion,sizeof(szdeviceversion)

6、/把驅(qū)動的名字添加到一個(gè)list 里面,來供使用者選取; 3獲取視頻捕捉驅(qū)動的能力(張坤注:或者說是功能吧)wm_cap_driver_get_caps消 息 返 回 捕 捉 驅(qū) 動 的 能 力 和 并 把 這 些 結(jié) 果 放 入 一 個(gè)capdrivercaps結(jié)構(gòu)體變量中,應(yīng)用程序每一次連接一個(gè)新的捕捉驅(qū)動到捕捉窗口,并且回更新capdrivercaps結(jié)構(gòu)體變量。下面的例子用capdrivergetcap 宏去獲取捕捉驅(qū)動的功能。capdrivercaps capdrvcaps; sendmessage(hwndc,wm_cap_driver_get_caps, sizeof(capdr

7、ivercaps),(long)(lpvoid)&capdrvcaps); 上面用的是消息發(fā)送的形式,下面是用capdrivergetcaps 宏的方式來獲?。篶apdrivergetcaps(hwndc,&capdrvcaps,sizeof(capdrivercaps); 4獲取視頻撲捉窗口的狀態(tài)下面用 capgetstatus宏獲取視頻流的最大尺寸,然后用這個(gè)尺寸做為setwindowpos 函數(shù)的參數(shù)去設(shè)置捕捉窗口的尺寸)capstatus capstatus;capgetstatus(hwndc,&capstatus,sizof(capstatus); setw

8、indowpos(hwndc,null,0,0,capstatus.uiimagewidth,capstatus.uiimageheight, swp_nozorder | swp_nomove); 5顯示視頻屬性設(shè)置對話框每種視頻捕捉驅(qū)動都能提供三個(gè)不同的對話框用來控制視頻數(shù)字化表面和捕捉進(jìn)程,下面的例子向你展示如何顯示這些對話框,在顯示每個(gè)對話框之前,調(diào)用 capdrivergetcaps 宏并且核對返回的capdrivercaps結(jié)構(gòu)體變量,看該視頻捕捉驅(qū)動是否能顯示這些對話框。capdrivercaps capdrvcaps; capdrivergetcaps(hwndc,&c

9、apdrvcaps,sizeof(capdrivercaps); /顯示視頻資源對話框if(capdrvcaps.fhasdlgvideosource) capdlgviceosource(hwndc); /顯示視頻格式對話框if(capdrvcaps.fhasdlgvideoformat) capdlgvideoformat(hwndc); if(capdrvcaps.fhasdlgvideodisplay) capdlgvideodisplay(hwndc); 6.獲取、設(shè)置視頻格式bitmapinfo結(jié)構(gòu)體的長度是可變的,因此適應(yīng)標(biāo)準(zhǔn)或壓縮的數(shù)據(jù)格式。由于這個(gè)結(jié)構(gòu)體的長度是可變的,因此應(yīng)

10、用程序在獲取當(dāng)前視頻格式之前必須經(jīng)常檢查結(jié)構(gòu)體的長度,分配內(nèi)存塊。下面的例子用capgetvideoformatsize 宏來獲取緩沖區(qū)的長度,然后調(diào)用 capgetvideoformat 宏來獲取當(dāng)前的視頻格式。lpbitmapinfo lpbi; dword dwsize; dwsize=capgetvideoformatsize(hwndc); lpbi=globalallocptr(ghnd,dwsize); capgetvideoformat(hwndc,lpbi,dwsize); 切記:在訪問完視頻格式之后要釋放剛才分配的內(nèi)存;另外,globalallocptr這個(gè)宏是在windo

11、wsx.h 中定義的,如果用這個(gè)宏的話一定要記得包含這個(gè)頭文件。7預(yù)覽視頻下面的例子用cappreviewrate 宏來設(shè)置幀輸出率66ms(66 毫秒)然后用cappreview 宏來設(shè)置捕捉窗口的預(yù)覽模式。cappreviewrate(hwndc,66); cappreview(hwndc,true); cappreview(hwndc ,false); 8允許視頻覆蓋下面的例子用capdrivergetcaps 宏來檢測一個(gè)視頻捕捉驅(qū)動是否支持覆蓋,如果是則用capoverlay 宏去允許覆蓋;capdrivercaps capdrvcaps; capdrivergetcaps(hwnd

12、c,&capdrvcaps,sizeof(capdrivercaps); if(capdrvcaps.fhasoverlay) capoverlay(hwndc,true); 9.命名視頻捕捉文件下面的例子用capfilesetcapturefile 宏來為視頻捕捉文件準(zhǔn)備一個(gè)文件名(mycap.avi )并且用 capfilealloc 宏來預(yù)分配一個(gè)5m 的空間;char szcapturefile=” mycap.avi”;capfilesetcapturefile(hwndc,szcapturefile); capfilealloc(hwndc,(1024*1024*5); 1

13、0.格式化聲音捕捉(張坤注:也就是設(shè)置聲音捕捉格式,設(shè)置聲音采樣格式)下面用 capsetaudioformat 設(shè)置聲音采樣格式為11khz pcm 8bit 立體聲waveforma tex wfex; wfex.wformattag = w ave_format_pcm; wfex.nchannels = 2; / 雙聲道,立體聲wfex.nsamplespersec = 11025; wfex.navgbytespersec = 22050; wfex.nblockalign = 2; wfex.wbitspersample = 8; wfex.cbsize = 0; capsetaudioformat(hwndc, &wfex, sizeof(waveformatex); 11改變聲音采樣格式captureparms captureparms; float framespersec=10.0; capcapturegetsetup(hwndc,&captureparams,sizeof(captureparams); captureparms.dwrequestmicrosecperframe=(dowrd)(1.0e6/framespersec); capcapturesetsetup(hwndc,&cap

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論