999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

DirectShow視頻采集系統

2007-12-31 00:00:00
商場現代化 2007年23期

[摘要] 目前,多媒體技術飛速發展,各行業對多媒體技術的應用也越來越廣泛,傳統的視頻采集技術存在著一定的局限性,不能很好的應用于當前的視頻系統。本文提出了一種基于DirectShow的視頻采集系統,克服現狀。本文采用的一種基于DirectShow的視頻采集系統支持多種格式的視頻文件的捕捉和回放,也支持使用Windows驅動模型(WDM)設備或過去的VFW設備。在開發過程中是基于組件對象模型(COM),通過編寫COM客戶程序來實現視頻的采集回放等功能。在具體實現過程中通過編寫Filter來實現各功能模塊,最后把各功能模塊通過Filter Graph組建起來。

[關鍵詞] DirectShow 視頻采集 COM

一、引言

隨著多媒體技術的不斷發展,與之相關的軟件與硬件層出不窮,現在與多媒體視頻會議(Video Conference)、視頻對話相關的軟硬件正成為人們關注的熱點應用。而在這些應用中無不涉及視頻數據的采集。

傳統的視頻采集技術存在諸多的局限性,無法很好地應用于當前的各類視頻系統。針對這一現狀,本文提出了一種先進的基于DirectShow的視頻采集系統。該系統充分利用DirectShow與WDM視頻采集卡的良好集成特性,采用組件對象模型的系統架構,克服了傳統視頻采集技術的不足,在實際應用中取得了滿意的效果。

二、DirectShow技術

微軟DirectShow是微軟windows平臺上的流式媒體體系結構。DirectShow提供媒體流的高質量的捕捉與回放。它支持多種格式,包括高級流格式,活動圖片專家組格式,音頻-視頻交叉格式,第三層mpeg格式(mp3)和wav文件格式。他也支持使用windows驅動模型設備或老的windows視頻設備的捕捉。DirectShow與其他DirectX技術集成于一體,自動感覺和使用視頻和音頻硬件加速,同時也支持沒有硬件加速的系統。

DirectShow簡化了媒體回放,格式轉換和捕捉任務。它是基于控件對象模型(com)的。要寫DirectShow應用,就必須理解com客戶編程。就絕大多數應用而言,不必實現com對象。DirectShow提供了你需要的控件。(如果要通過寫自己的控件來擴展DirectShow的功能,必須把他們作為com對象來實現。)

1.COM技術

在DirectShow技術當中,一般也把COM組件叫做Filter,它一般分成三類:源過濾器(Source filter)、轉換過濾器(Transform filter)、提交過濾器(Rendering filter),用來處理流媒體數據。Filter帶有輸入、輸出針角(pin),或二者兼而有之。Filter通過向文件讀寫、修改數據和顯示數據到輸出設備上來操作流媒體。為了完成整個任務,必須要將所有的Filter連接起來,這三種Filter組成了過濾器圖表管理器(Filter graph manager)。

源過濾器、轉換過濾器、提交過濾器分別完成數據提供、數據格式轉換(壓縮編碼等)和數據渲染和回放功能。所以,為了實現在WIN32系統下的視頻采集,我們首先要構造出一個適當的過濾器圖表,然后通過應用程序對過濾器圖表的管理來完成視頻采集的功能。

2.DirectShow技術

在一般的軟件開發工具中(比如VB,VC)都可以直接調用windows系統下的MCI控制接口)函數或者媒體播放控件(WMP等),設定相關的文件名等屬性就可以實現視頻的捕捉或回放。隨著多媒體技術的迅速發展,各種壓縮算法在該領域的應用,MCI技術越來越顯的力不從心,最明顯的是它不支持可變比特率的壓縮算法,對于處理DVD等近年出現的多種新的媒體格式已顯得無能為力。隨后,微軟又適時推出了建立在DirectX之上的DirectShow技術,它也是一種API(應用程序接口),每個DirectX部件都是用戶可調用的API的總和,通過它應用程序可以直接訪問計算機的硬件。支持來自本地或網絡的各種視頻、音頻壓縮格式的媒體文件的解碼和回放,可以從設備上捕捉多媒體流,也可以處理各種壓縮算法處理的流媒體。這些格式包括:MPEG的音頻和視頻標準、音頻和視頻交互標準(AVI)、WAVE、MIDI和高級流格式ASF。

DirectShow的基本原理是多媒體數據在過濾器圖表中流動,通過過濾器圖表中各過濾器(Filter)實現在功能,最終實現多媒體數據在提交過濾器中的顯示和回放。

(1)國內研究狀況。目前,國內研究此類項目已經相對成熟,主要用C++編程工具對其進行開發。一般用Filter來完成各種功能。Filter是一種進程內的COM組件。DirectShow SDK提供了一套基類源代碼,這些源代碼可以大大降低開發Filter的難度。

DirectShow位于應用層中,它使用Filter Graph的模型來管理整個數據流的處理過程;參與數據處理的各個功能模塊是Filter;各個Filter 在Filter Graph中按一定的順序連接成一條“流水線”協同工作。源過濾器主要負責取得數據,數據源可以是文件、因特網、或者計算機里的采集卡、數字攝像機等,然后將數據往下傳輸;轉換過濾器主要負責數據的格式轉換、傳輸;提交過濾器主要負責數據的最終去向,最終可以將數據送給聲卡、顯卡進行多媒體的演示,也可以輸出到文件進行存儲。

(2)國外研究狀況。與國內相同,許多國外的軟件設計師也是利用Filter來實現各種功能。DirectShow最初是為C++應用程序設計的(也可以使用C語言)使用微軟的Visual Basic語言,可以訪問DirectShow API的一個很大的子集,但對VB的支持并不完全,如使用微軟的JScript,DirectShow也支持基于script的DVD應用程序。使用Borland Delphi書寫DirectShow應用程序也是可能的,但是,微軟的軟件開發包(SDK)文檔沒有關于該部分的參考資料。

三、基于DirectShow的視頻采集系統

基于DirectShow的視頻采集系統主要設計目的是簡化建立基于Windows平臺的數字媒體應用程序的設計任務。并使它無需涉及數據傳輸,硬件通用性,媒體同步等等諸多復雜問題。為了完成所需的音視頻流的處理,DirectShow應用了DirectDraw和DirectSound技術。這些技術可以有效率將數據圖像和音頻還原(render)到用戶的顯卡和聲卡上去。DirectShow通過壓縮媒體流上的時間標記(time-stamped)來實現媒體同步重放。為了能夠處理不同可能出現的數據源、數據格式以及硬件系統,DirectShow采用了一種標準化結構體系。

在DirectShow標準結構體系中,DirectShow過濾器與控制、多樣化的設備、本地文件系統、TV調頻和視頻捕獲卡、VFW編碼器、視頻顯示卡(通過DirectDraw)和顯卡進行交互。DirectShow也為幾種文件格式提供本地壓縮和解壓過濾器。

1.系統構架

對本視頻采集系統,可以簡單的把系統流程概括成如下兩點:USB攝像頭:視頻捕獲→視頻處理轉換→視頻存儲;本地視頻:視頻文件打開顯示→視頻壓縮轉換等處理→視頻存儲

2.系統實現

開發DirectShow應用程序,一般有三個階段:第一階段,創建一個Filter Graph Manager組件;第二階段,根據實際的應用,創建一條完整的Filter鏈路。比如播放一個本地文件(在這個階段,構建Filter鏈路之前,為了證明構思中的Filter鏈路是切實可行的,首先要在GraphEdit中驗證,然后再以GraphEdit中的Filter鏈路為模型在程序中實現);第三階段,調用Filter Graph Manager上(或者直接在某個Filter上)的各個接口方法進行控制,并且完成Filter Graph Manager與應用程序的事件交互。

(1)具體應用設計。前面講到了源過濾器、轉換過濾器、提交過濾器的簡單功能,它們分別完成數據提供、數據格式轉換(壓縮編碼等)和數據渲染和回放功能。所以,為了實現在WIN32系統下的視頻采集,我們首先要構造出一個適當的過濾器圖表,然后通過應用程序對過濾器圖表的管理來完成視頻采集的功能。

這里我們一般需要2個~3個過濾器,這幾個過濾器分別是:

a.Video Capture Filter 采集設備Filter

b.Smart Tee Filter 將沒有Preview引腳Filter的Capture引腳分為兩支數據流(可選)

c.Video Venderer 視頻渲染及回放Filter

通過上面3個過濾器,我們可以構造出一個完整的視頻采集過濾器圖表(如圖)

圖表構造出來后,接下來就剩下具體的實現了,我們只需依次構造每個Filter,然后將各信Filter的Pin按序相連即可完成圖表的構造。最后,我們通過應用程序向圖表發送命令(通過圖表管理器完成)來控制整個視頻采集流程。

(2)視頻捕捉。如何從視頻設備進行視頻捕捉?在所設計的系統中,有個功能就是從USB攝像頭中捕獲視頻,換句話說就是從視頻設備中進行視頻捕捉。基于DirectShow的視頻采集系統中就要充分利用DirectShow本身的功能進行設計。

在DirectShow的filter中,有一類Capture Filter,它一般代表的是捕捉卡等硬件設備,其實它就是DirectShow與設備的Driver之間的接口。因為Filter通過DeviceIoctl函數實現交互,使得應用程序員可以通過DirectShow的Filter直接與捕捉設備的Driver進行通信。

我們只需將Capture Filter加入Filter Graph中,在通過其提供的接口函數就可以捕捉我們需要的視頻或音頻數據。

另外,如何在媒體播放過程中捕捉視頻?Sample Grabber Filter是Transform filter的一種,它提供了一些接口能夠檢索(retrieve)在Filter Graph中傳遞的數據樣本(samples),從而實現對播放過程中數據流的控制。比如通過IsampleGrabber::GetCurrentBuffer就可以得到當前的圖像幀,進而將其保存為文件或者顯示在指定的地方。在陸其明老師編寫的《DirectShow開發指南》一書中,也有詳細介紹圖片的抓取,有種簡單的方法就是使用IBasicVideo::GetCurrentImage接口的方法。

3.實驗結果及分析

本系統采用COM編程技術,利用VC++編程語言,實現了視頻采集儲存等功能,在實際運用中簡單方便。它能進行視頻的采集存儲等一些功能,同時也支持AVI,MPEG等格式的視頻的播放,大致分成幾個功能塊:

(1)本地視頻播放:可以選擇本地AVI和MPEG格式的視頻進行播放,并對其某一楨畫面進行捕獲與存儲。

(2)USB攝像頭捕獲視頻:通過USB攝像頭,進行視頻的采集,并可以自定義對所捕獲到的視頻進行保存。

(3)圖像存儲:可以對所捕獲或播放的視頻中的某一楨畫面進行存儲。

(4)渲染功能:通過Filter對視頻進行色調的處理渲染。

當然,本系統還存在一定的問題,需要進一步的改進,在今后會做更深的研究,彌補現在的不足之處。

四、結束語

多媒體技術已經越來越被人們所重視,在傳統的視頻采集技術存在的局限性也越來越明顯,無法很好地應用于當前的各類視頻系統,因此先進的視頻系統必定會取而代之。

本文所提出的一種基于DirectShow的視頻采集系統,充分利用DirectShow與WDM視頻采集卡的良好集成特性,采用組件對象模型的系統架構,克服了傳統視頻采集技術的不足,在以后的應用當中必將取得重要地位。

參考文獻:

[1]陳淑珍陳窖:基于COM技術的多媒體監控系統的設計與實現[J].武漢大學學報,2001.47(3):377~380

[2]陸其明:DirectShow實務精選[M].北京科海電子出版社,2004.7

[3]陸其明:DirectShow開發指南[M].清華大學出版社,2003

[4]魏立誠朱桂林:基于DirectShow的視頻采集系統的設計與實現[J].計算機工程,2005.7

[5]文坤高勝法:DirectShow程序設計原理及應用[J].計算機系統應用,2006.3

[6]武兆雪夏靖波:基于DirectShow的多媒體流捕獲[J].2006

注:“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。”

主站蜘蛛池模板: 国产高潮流白浆视频| 久久亚洲美女精品国产精品| 日本免费新一区视频| 国内a级毛片| 国产欧美日韩在线一区| 国产精品无码翘臀在线看纯欲| 亚洲美女AV免费一区| 亚洲人成人伊人成综合网无码| 亚洲欧洲天堂色AV| www.99在线观看| 日韩av电影一区二区三区四区| 国产在线一区视频| 蝌蚪国产精品视频第一页| 国产打屁股免费区网站| 污污网站在线观看| 92午夜福利影院一区二区三区| 欧洲一区二区三区无码| 国产黑丝视频在线观看| av尤物免费在线观看| 青青青亚洲精品国产| 狠狠做深爱婷婷综合一区| 亚洲Av激情网五月天| 黄色三级网站免费| 91在线国内在线播放老师| 午夜国产大片免费观看| 天天色天天综合| 国产拍在线| 九九九九热精品视频| 亚洲成人在线网| 国产成人成人一区二区| 欧美日韩国产精品va| 欧美在线网| 欧美成人精品高清在线下载| 日韩视频免费| 国产亚洲欧美另类一区二区| 青青久久91| 91丝袜在线观看| 日本不卡在线播放| yy6080理论大片一级久久| 毛片久久久| 久久婷婷五月综合色一区二区| 国产精品微拍| 91人妻在线视频| 伦精品一区二区三区视频| 国产乱人伦精品一区二区| 四虎永久免费网站| 99这里只有精品在线| 51国产偷自视频区视频手机观看| 国产日韩AV高潮在线| 欧美国产日韩另类| 伊人色在线视频| 欧美怡红院视频一区二区三区| 欧美一级夜夜爽| 国产99视频精品免费观看9e| 国产一级视频久久| 拍国产真实乱人偷精品| 亚洲精品老司机| 日韩欧美中文字幕在线精品| 国产本道久久一区二区三区| 国内精品视频| 青青草原国产| 国产亚洲欧美另类一区二区| 欧美中文字幕在线二区| 影音先锋丝袜制服| 亚洲国产成人自拍| 亚洲中文在线看视频一区| 麻豆精品视频在线原创| 国产91在线免费视频| 99热精品久久| 久久综合丝袜长腿丝袜| 72种姿势欧美久久久久大黄蕉| 永久毛片在线播| 日韩欧美成人高清在线观看| 欧美伦理一区| 最新加勒比隔壁人妻| 国产日韩精品欧美一区灰| 日韩高清在线观看不卡一区二区| 国产色婷婷| 高潮毛片免费观看| 99精品国产自在现线观看| 日韩精品亚洲人旧成在线| 婷五月综合|