• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    在VB中基于VFW視頻捕獲技術(shù)的研究

    2016-01-05 15:27:52王瑜
    電腦知識與技術(shù) 2015年31期

    王瑜

    摘要:在VB中分析視頻捕捉的工作流程,依托VFW軟件開發(fā)包的體系結(jié)構(gòu),通過調(diào)用Windows API函數(shù),來設(shè)計和實現(xiàn)局域網(wǎng)內(nèi)視頻捕捉程序,并給出部分源代碼,重點討論了VB對VFW視頻捕捉的設(shè)計方法及關(guān)鍵性Windows API函數(shù)的用法。

    關(guān)鍵詞:VB;VFW;視頻捕捉;Windows API

    中圖分類號:TP37 文獻標識碼:A 文章編號:1009-3044(2015)31-0174-02

    In the VB based on VFW Video Capture Technology

    WANG Yu

    (Yunyang Teacher's College, Shiyan 442000, China)

    Abstract: In the VB analysis of video capture workflow, relying on VFW architecture of the software development kit by calling the Windows API functions, to design and implement LAN video capture program, and give part of the source code, focusing on the VB to the VFW video capture The design methods and critical use of Windows API functions.

    Keywords: VB; VFW; Video Capture; Windows API

    在各類的通訊手段與科學技術(shù)乃至多媒體的終端技術(shù)不斷發(fā)展的當下,對于多媒體的應用尤其是視頻方面的應用,在很大程度上取得了優(yōu)越的進展,許多關(guān)于視頻的軟件開發(fā),如視頻會議、可視手機等都是基于視頻捕獲技術(shù)而發(fā)展壯大,這得益于Microsoft公司于1992年在Windows系統(tǒng)中提供的視頻捕獲標準接口Video for Windows(VFW)。VFW的核心是AVI文件標準,其SDK分VC和VB版。在客戶對Windows的系統(tǒng)進行安裝的過程當中,整個程序會根據(jù)事先設(shè)定的程序內(nèi)容,自動地將整個系統(tǒng)當中所需要的相關(guān)視頻方面的組件進行配置安裝,VFW的開發(fā)工具提供了各類音視頻服務(wù)的接口和函數(shù),這些函數(shù)允許應用程序與各類音視頻驅(qū)動程序之間相互通信,極大的簡化視頻捕獲過程的編程。

    1 Video for Windows(VFW)簡介

    1.1 VFW技術(shù)概述

    VFW的基礎(chǔ)是MCI(Media Control Interface,媒體控制接口)。MCI本身提供高、中、低三種層次接口。高層接口主要提供Avicap和Mciwnd這兩個類型的系統(tǒng)窗口,主要是通過VFW當中的兩個動態(tài)的相應的鏈接倉庫進行的創(chuàng)建,分別命名為Avicap.dll以及Msvedeo.dll,分別用于采集捕捉視頻剪輯和播放音視頻文件。中層接口主要負責應用程序與各多媒體驅(qū)動程序相連接。其中的低層次的接口,是在對程序的基本要求全面熟知的情況下,將多媒體的信息設(shè)備進行全面的分析與應用,在對多媒體的相關(guān)信息進行全面的接管的過程當中所采用的技術(shù)手段。具有很強的實時性。

    VFW這一技術(shù),主要是由六大方面的模塊進行組件而成:

    1)AVICAP.DLL:這一模塊,主要講視頻的捕獲功能予以全面的實現(xiàn),其中包含的一些函數(shù),可以用作是視頻的捕捉與獲取,從而為相應的視頻與音頻提供接收的有效端口。

    2)MSVIDEO.DLL:這個模塊,主要功能作用是將相應的捕捉與獲取視頻的窗口,智能地域其相關(guān)聯(lián)的驅(qū)動設(shè)備進行連接,從而在最大程度上對ICM的視頻當中編碼程序進行全方位的服務(wù)。

    3)其模塊含有MCI的命令,并且配備了命令相應的解釋器具,可以在很大程度上將回放的功能實現(xiàn)。

    4)MCIAVI.DRV:這個模塊極為特殊,它可以對AVI的文件予以管理,針對其讀寫與操作的性能,進行文件的統(tǒng)一管理。

    5)ICM:被稱之為壓縮的管理器具,它可以為存儲在AVI的文件當中一系列的視頻相關(guān)的圖像與數(shù)據(jù)進行壓縮,同時也提供了解壓縮的這項服務(wù)。

    6)ACM:是處理音頻的主要模塊,將音頻進行壓縮與管理的器具,提供實時音頻壓縮及解壓縮功能。

    2 在CFW整體技術(shù)的基礎(chǔ)上,將VB當中視頻的獲取與捕捉的工作流程予以實現(xiàn)

    2.1 視頻捕捉工作流程

    1)創(chuàng)建視頻捕獲窗口:Declare Function capCreateCaptureWindow Lib "avicap32.dll" _Alias "capCreateCaptureWindowA" _(Byval lpszWindowName As string,_Byval dwStyle As Long,_Byval x As Long,_Bycal y As Long,_Byval nWidth As Long,_Byval nHeight As Long,_Byval hwndParent As Long,_Byval nID As Long) As Long其中l(wèi)pszWindowName表示窗口名稱;x,y,nWidth,nHeight表示窗口位置大小。

    2)注冊系統(tǒng)回調(diào)函數(shù):在其中進行了多個函數(shù)的定義,當相應的事件發(fā)生的時候,會通過系統(tǒng)進行整體的操作與調(diào)試。

    3)設(shè)置捕獲窗口相關(guān)函數(shù):根據(jù)實際情況來修改其返回值中各變量的相應信息,從而獲取更多的視頻捕獲的方式方法。

    4)枚舉視頻采集設(shè)備并進行連接:查找系統(tǒng)中可用的視頻采集設(shè)備,用函數(shù):Declare Function capGetDriverDescription Lib "avicap32.dll" _Alias "capGetDriverDescriptionA" _(Byval dwDriverIndex As Long,_Byval lpszName As string,_Byval cbName As Long,_Bycal lpszVer As string,_Byval cbVer As Long) As Long來得到已安裝捕捉設(shè)備的名稱和版本號,并用宏capDriverConnect將捕獲窗口與采集設(shè)備連接起來。

    5)獲取視頻并且將相關(guān)的設(shè)備所持有的能力以及信息內(nèi)容進行全面的采集:通過宏調(diào)配capDriverGetCaps并且對設(shè)備所擁有的能力進行采收與集整的一種狀態(tài)。

    6)對設(shè)備的窗口進行捕捉與獲取,從而進行顯示的模式:通過fHasOverlay域判斷視頻設(shè)備能力,通過capOverlay啟動疊加(Overlay)模式,或通過capPreview啟動預覽(Preview)模式。并可通過函數(shù):Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long對系統(tǒng)進行通知,并且告知CFW所需要的工作內(nèi)容。

    7)捕捉視頻到緩存或文件并進行處理:可用函數(shù)capSetCallBackOnFrame對視頻進行逐幀處理,也可用宏capCaptureSequence將捕獲視頻以AVI格式進行保存。

    8)完成視頻的捕捉工作,并且將其終止,將于視頻捕捉與獲取的相關(guān)設(shè)備之間的有效連接進行中斷處理:在結(jié)束了捕獲的工作之后,將其他的后續(xù)工作完成,其中包括捕獲工作的終止、回調(diào)的函數(shù)的取消、內(nèi)存的釋放以及設(shè)備連接的斷開等。

    2.2 視頻捕捉的設(shè)計與實現(xiàn)

    VB在支持VFW方面提供了強大的窗口類Avicap,可直接控制視頻源,不僅支持實時的視頻流和單幀捕獲,還可以直接訪問視頻緩沖區(qū),不需要生成中間文件。下面給出部分VB捕捉具體程序代碼:

    Private Declare Function capCreateCaptureWindow Lib "avicap32.dll" _Alias "capCreateCaptureWindowA" ( _ByVal lpszWindowName As String, _ByVal dwStyle As Long, _ByVal x As Long, _ByVal y As Long, _ByVal nWidth As Long, _ByVal nHeight As Long, _ByVal hWndParent As Long, _ByVal nID As Long) As Long

    ……

    Private Declare Function SendMessage Lib "user32" _Alias "SendMessageA" ( _ByVal hwnd As Long, _ByVal wMsg As Long, _ByVal wParam As Long, _lParam As Any) As Long

    ……

    Private Sub Form_Load()

    Preview_Handle = capCreateCaptureWindow("Video", WS_CHILD + WS_VISIBLE, 0, 0, 320, 240,Me.hWnd, 1) '將捕捉與獲取的相應窗口進行建立

    SendMessage Preview_Handle, WM_CAP_DRIVER_CONNECT, 0, 0 '將捕捉與獲取窗口與設(shè)備的連接鏈進行建立

    SendMessage Preview_Handle, WM_CAP_SET_PREVIEWRATE, 30, 0 '將幀頻率為30毫秒一幀進行捕捉與設(shè)置

    SendMessage Preview_Handle, WM_CAP_SET_PREVIEW, 1, 0 '通過全面預覽的方式,在整體捕獲的窗口進行圖像的預覽工作

    End Sub

    Private Sub Form_Unload(Cancel As Integer)

    SendMessage Preview_Handle, WM_CAP_DRIVER_DISCONNECT, 0, 0 '將其從捕捉與獲取的設(shè)備中的連接進行中斷

    End Sub

    以上程序在Windows XP、VB6.0下編譯通過,視頻捕捉情況良好,同時也可將捕捉下來的視頻用Avifile進行存盤操作,但由于文件占用空間一般較大,如果需要進行網(wǎng)絡(luò)傳輸,則需編寫相應的壓縮代碼進行壓縮后才能執(zhí)行。

    3 結(jié)束語

    VFW技術(shù)封裝了有關(guān)視頻捕捉的API函數(shù),在VB中可由這些接口編程通過視頻捕捉硬件獲取數(shù)據(jù),將開發(fā)者從硬件的底層束縛中解放出來,極大地簡化了視頻捕獲過程,代碼簡單易讀,應用性廣,將對進一步的處理工作以及播放工作予以大力的支持,從而能夠?qū)⒁曨l的應用程序不斷推廣,最終開辟出全新的道路。

    參考文獻:

    [1] Jeff Prosise(美). MFC Windows程序設(shè)計[M]. 清華大學出版社, 2002.

    [2] 王汝言. 多媒體通信技術(shù)[M]. 西安電子科技大學出版社, 2004.

    [3] 曹衍龍. Visual Basic系統(tǒng)開發(fā)實例精粹[M]. 人民郵電出版社, 2005.

    迭部县| 光山县| 凌海市| 洪洞县| 汝城县| 漠河县| 连江县| 鞍山市| 漾濞| 始兴县| 新化县| 准格尔旗| 鄂州市| 凤台县| 洛扎县| 贵溪市| 喀喇| 宜章县| 台南县| 镇远县| 五河县| 四川省| 甘洛县| 张掖市| 小金县| 青海省| 杭锦后旗| 南华县| 丰镇市| 葫芦岛市| 浙江省| 德保县| 东台市| 开封市| 手机| 疏附县| 彭州市| 革吉县| 平罗县| 巴彦淖尔市| 湟源县|