亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? directshowimediadet.txt

?? 用directshow的imedadet捕捉usb接口的視頻圖像
?? TXT
字號:
很多視頻播放軟件或視頻編輯軟件都提供了抓幀的功能,利用這類軟件,視頻工作者可以很輕松地將一個電影某一時刻的幀抓取出來并保存為圖片文件,那么,我們?nèi)绾巫约壕幊虒崿F(xiàn)這樣的功能呢?如果你熟悉MPEG或者AVI等常見視頻格式,你可以直接對影片文件進行操作,如果你不知道這些視頻格式,而希望使用更簡單的方法來抓取影片的幀,微軟的DirectShow將會給你極大的驚喜。 
DirectShow屬于DirectX家族(DirectX還包括Direct3D、DirectInput、DirectDraw、DirectSound等組件),在使用DirectShow開發(fā)抓取幀的程序前,你必須要安裝DirectX SDK,這個開發(fā)包可以在微軟的網(wǎng)站上下載得到,目前最新版本是9.0b;另外,由于DirectX SDK是用COM的方式發(fā)布的,所以對于開發(fā)人員而言,他還必須要了解COM的基本原理。如果大家沒有使用過COM,可以先從網(wǎng)上找一些COM方面的入門教程看看,VC知識庫上就有很多好文章,推薦VC知識庫第九期趙湘寧的《COM編程入門》系列。 

一、編程工具的設(shè)置: 

先說說我使用的VC 6.0的設(shè)置,一般而言,安裝完DirectX 9.0b SDK后,會自動設(shè)置好VC,用戶無需手動干預(yù),如果編譯過程中出現(xiàn)錯誤,請檢查VC是否包含了DirectX SDK的頭文件和庫文件,方法是選擇菜單“Tools->Options…”,在彈出的Options對話框中選擇Directories選項卡,看看Include files和Library files中是否包含有DirectX SDK的Include路徑和Lib路徑,如果沒有,將這兩個路徑添加上去即可。 

二、主要的實現(xiàn)步驟: 

在實現(xiàn)抓取影片幀的過程中,DirectShow的IMediaDet接口將是主角,這個接口包含了一些方法能夠從媒體源文件中提取一些重要信息,比如媒體類型、幀速率甚至是視頻流的單個幀。 
·注意 
要正確使用IMediaDet接口,工程中需要包含下列文件: 
頭文件:dshow.h, qedit.h 
庫文件:strmiids.lib 
因為使用CComPtr模板來聲明接口實例,所以還要在工程中包含atlbase.h頭文件。 
下面我們將一步步利用IMediaDet接口實現(xiàn)抓取影片幀的功能。 

第一步:新建一個基于對話框的應(yīng)用程序,為應(yīng)用程序添加兩個編輯控件和三個按鈕控件,程序界面如圖所示: 
第二步:為對話框類添加一個HRESULT類型的成員函數(shù)GrabFramFromMovie,它將實現(xiàn)抓幀功能。在函數(shù)體內(nèi)創(chuàng)建IMediaDet接口實例,創(chuàng)建實例需要調(diào)用CoCreateInstance函數(shù),并給函數(shù)的第一個參數(shù)傳入CLSID_MediaDet類標識符。 

第三步:調(diào)用IMediaDet::put_Filename方法為接口指定一個媒體文件,該方法只有一個參數(shù),這個參數(shù)描述了媒體文件的路徑,注意參數(shù)類型為BSTR。 

第四步:調(diào)用IMediaDet::get_OutputStreams方法以得到影片輸出流的數(shù)目,一個影片的輸出由多個流組成,但是get_OutputStreams方法只關(guān)心影片輸出的視頻流和音頻流而自動忽略其它流,所以,如果一個影片輸出包含有視頻流、音頻流和數(shù)據(jù)流,get_OutputStreams只返回視頻流和音頻流的數(shù)目。 

第五步:調(diào)用IMediaDet::put_CurrentStream方法指定一個用于編輯和操作的流,因為我們的目的是要將影片的單個幀保存為圖片,這就需要對視頻流進行操作,所以要利用put_CurrentStream定位影片文件輸出的視頻流。 

第六步:調(diào)用IMediaDet::get_StreamMediaType方法得到一個VIDEOINFORHEADER結(jié)構(gòu),這個結(jié)構(gòu)與當前指定的視頻流關(guān)聯(lián)。VIDEOINFORHEADER結(jié)構(gòu)中包含有一個BITMAPINFORHEADER結(jié)構(gòu)類型的成員,它描述了視頻影像對應(yīng)位圖的尺寸、顏色等有用的信息。 

第七步:調(diào)用IMediaDet::WriteBitmapBits方法將影片的幀保存為位圖,若想指定保存哪一幀,只需要給第一個參數(shù)傳遞一個合適的時間即可。這里,我傳遞給第一個參數(shù)的時間為0,因此程序?qū)⒈4嬗捌谝粠奈粓D。 

下面是GrabFramFromMovie函數(shù)的完整代碼,其中,變量m_editOpenDir和m_editSaveDir分別指定了影片路徑及保存的位圖路徑,請對照上面的步驟閱讀: 
 
 
 貼子相關(guān)圖片: 
 
 作者: kony2008   2006-6-21 16:57   回復(fù)此發(fā)言    
 
--------------------------------------------------------------------------------
 
2 用DirectShow的IMediaDet接口抓取影片幀  
 

HRESULT CFrameGrabberDlg::GrabFrameFromMovie() 
{ 
HRESULT hr; 
// 定義IMediaDet接口實例 
CComPtr< IMediaDet > pDet; 
hr = CoCreateInstance( CLSID_MediaDet, NULL, CLSCTX_INPROC_SERVER,  
IID_IMediaDet, (void**) &pDet ); 
if (FAILED(hr)) 
return hr; 

// 將影片文件名轉(zhuǎn)換成BSTR類型 
CComBSTR openBSTR(m_editOpenDir); 
// 設(shè)置IMediaDet接口的文件關(guān)聯(lián) 
hr = pDet->put_Filename(openBSTR); 
if (FAILED(hr)) 
return hr; 

// 從影片中檢索視頻流和音頻流 
long lStreams; 
    hr = pDet->get_OutputStreams(&lStreams); 
    if (FAILED(hr)) 
return hr; 

// 取出影片的視頻流,因為幀的信息是保存在視頻流中的 
bool bFound = false; 
for (int i=0; iput_CurrentStream(i); 
if (SUCCEEDED(hr)) 
hr = pDet->get_StreamType(&major_type); 
if (FAILED(hr)) 
break; 
if (major_type == MEDIATYPE_Video) 
{ 
bFound = true; 
break; 
} 
} 
if (!bFound) 
return VFW_E_INVALIDMEDIATYPE; 

long width = 0, height = 0; // 存儲位圖的寬和高(單位:象素) 
    AM_MEDIA_TYPE mt; 
    hr = pDet->get_StreamMediaType(&mt); 
    if (SUCCEEDED(hr)) 
    { 
        if ((mt.formattype == FORMAT_VideoInfo) &&  
            (mt.cbFormat >= sizeof(VIDEOINFOHEADER))) 
        { 
// 得到VIDEOINFOHEADER結(jié)構(gòu)指針,VIDEOINFOHEADER結(jié)構(gòu)包含一些與視頻 
// 有關(guān)的信息,其中含有BITMAPINFORHEADER結(jié)構(gòu) 
            VIDEOINFOHEADER *pVih = (VIDEOINFOHEADER*)(mt.pbFormat); 
            width = pVih->bmiHeader.biWidth; 
            height = pVih->bmiHeader.biHeight; 
        } 
        else 
            hr = VFW_E_INVALIDMEDIATYPE; 
        MyFreeMediaType(mt); // 釋放AM_MEDIA_TYPE結(jié)構(gòu) 
    } 
    if (FAILED(hr)) 
return hr; 

CComBSTR saveBSTR(m_editSaveDir); 
// 將第一幀保存為指定路徑的位圖文件 
hr = pDet->WriteBitmapBits(0, width, height, saveBSTR); 
if (FAILED(hr)) 
return hr; 

return S_OK; 
} 

三、程序運行: 

程序運行后,選擇一個影片,然后指定保存路徑,點擊“抓取”按鈕,就可以將影片第一幀保存到指定路徑下,我們也可以修改IMediaDet接口的WriteBitmapBits方法中的第一個參數(shù)來保存我們指定的幀。源代碼的DEBUG文件夾下包含了一個測試影片,供測試使用。該程序在Windows XP、Visual C++ 6和DirectX 9.0b環(huán)境下編譯并運行通過。  
 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品综合视频| 日韩片之四级片| 欧美日产国产精品| 久久综合色鬼综合色| 国产精品久久久久久久久晋中 | 日韩视频中午一区| 综合久久久久综合| 国产综合久久久久影院| 欧美日韩一级视频| 国产精品久久久久久久浪潮网站| 日本午夜精品一区二区三区电影| 99久久婷婷国产综合精品| 欧美本精品男人aⅴ天堂| 亚洲一区二区av在线| 高清shemale亚洲人妖| 日韩视频一区在线观看| 亚洲bt欧美bt精品| 色婷婷综合久久| 亚洲视频一区在线| 国产大陆a不卡| 久久影院电视剧免费观看| 欧美a级理论片| 欧美美女bb生活片| 亚洲国产精品一区二区www在线| 99久久国产免费看| 国产精品进线69影院| 成人免费看的视频| 国产精品系列在线| 国产福利一区二区三区视频在线| 日韩精品综合一本久道在线视频| 日日夜夜免费精品| 欧美一区二区精品在线| 日韩—二三区免费观看av| 欧美日高清视频| 肉色丝袜一区二区| 欧美一区二区日韩一区二区| 天天操天天色综合| 91精品国产综合久久婷婷香蕉 | 亚洲电影在线播放| 欧美日韩国产综合久久| 丝袜美腿亚洲一区二区图片| 欧美顶级少妇做爰| 久久国产视频网| 久久久久国产免费免费| 国产传媒久久文化传媒| 国产精品日韩成人| 一本色道亚洲精品aⅴ| 亚洲已满18点击进入久久| 欧美三级一区二区| 免费成人在线观看视频| 26uuu久久综合| 成人性生交大片免费| 日韩理论片网站| 欧美日韩高清一区| 美女视频黄频大全不卡视频在线播放| 精品国产sm最大网站免费看| 国产成人午夜高潮毛片| 亚洲日本在线看| 91麻豆精品91久久久久同性| 精品午夜久久福利影院 | 国产精品18久久久久久vr| 国产欧美日韩激情| 欧美亚洲高清一区| 蜜桃一区二区三区四区| 中文字幕亚洲综合久久菠萝蜜| 在线亚洲免费视频| 国内精品伊人久久久久av一坑| 国产精品久久久久久久久久免费看 | 欧美午夜影院一区| 精品一区二区在线视频| 亚洲天堂av老司机| 日韩欧美综合一区| 色婷婷国产精品| 韩国欧美国产1区| 亚洲精品国产无天堂网2021| 日韩精品一区在线| 91美女在线看| 精品一区二区三区久久久| 亚洲精品中文在线观看| 精品国产三级a在线观看| 91在线国内视频| 久久国产精品第一页| 一区二区三区在线免费播放 | 精品一区二区综合| 亚洲一区日韩精品中文字幕| 久久精品一区四区| 91精品国产欧美一区二区成人| 成人福利视频在线| 久久福利视频一区二区| 亚洲成人免费观看| 亚洲天堂福利av| 国产欧美精品一区二区色综合| 欧美丰满嫩嫩电影| 在线免费观看一区| 波波电影院一区二区三区| 久久99国产精品久久| 日韩中文字幕区一区有砖一区| 国产精品短视频| 国产亚洲一区字幕| 精品国产乱码久久久久久蜜臀| 欧美亚洲日本一区| 欧日韩精品视频| k8久久久一区二区三区 | 成人a区在线观看| 国产精品一区二区三区99| 青青草成人在线观看| 五月天激情小说综合| 国产精品国产三级国产普通话三级| 日韩欧美三级在线| 日韩精品一区二区三区四区视频| 在线观看欧美黄色| 91色视频在线| 色av一区二区| 色婷婷狠狠综合| 色素色在线综合| 在线观看欧美精品| 欧美日韩在线播放三区四区| 欧日韩精品视频| 欧美日韩国产中文| 3atv一区二区三区| 欧美一级理论片| 欧美日本一区二区| 欧美日韩国产影片| 欧美一区二区三区视频免费播放| 欧美三级视频在线播放| 欧美精品免费视频| 91精品在线免费观看| 欧美电视剧免费观看| 久久综合丝袜日本网| 国产欧美久久久精品影院| 中文字幕一区二区在线播放| 国产精品久久一卡二卡| 亚洲欧美偷拍另类a∨色屁股| 亚洲精品视频在线看| 婷婷中文字幕一区三区| 男男gaygay亚洲| 国产一区二区在线免费观看| 国产成人综合网站| 一本色道a无线码一区v| 欧美日韩国产综合一区二区三区| 日韩一区二区三免费高清| 欧美精品一区二区精品网| 国产精品免费视频一区| 亚洲第一搞黄网站| 久久不见久久见免费视频1| 高清av一区二区| 欧美亚洲国产一区在线观看网站 | 三级精品在线观看| 国产精品一二三区| 欧美性生活一区| 亚洲精品一区二区三区在线观看| 亚洲国产精品av| 日韩精品一级中文字幕精品视频免费观看 | 欧美日韩一区二区在线观看视频| 欧美一区二区三区成人| 国产精品毛片久久久久久| 亚州成人在线电影| 国产精品一级在线| 欧美午夜一区二区三区免费大片| 欧美变态tickling挠脚心| 综合亚洲深深色噜噜狠狠网站| 亚洲成人你懂的| 成人丝袜高跟foot| 欧美一区二区啪啪| 亚洲欧美另类小说| 国产高清在线精品| 欧美一区二区三级| 亚洲精品第一国产综合野| 国产真实精品久久二三区| 日本精品一级二级| 欧美国产欧美综合| 美女一区二区久久| 欧美私模裸体表演在线观看| 国产三级精品在线| 免费在线观看成人| 欧美日韩不卡视频| 一区二区三区视频在线看| 国产成人综合亚洲网站| 日韩欧美在线不卡| 午夜精品久久久久久久久久久| 成人不卡免费av| 久久麻豆一区二区| 麻豆一区二区99久久久久| 欧美人与禽zozo性伦| 亚洲一区二区视频| 91丨九色丨蝌蚪富婆spa| 久久视频一区二区| 久久精品国产精品亚洲综合| 欧美区一区二区三区| 亚洲激情成人在线| 99r国产精品| 国产精品国产三级国产aⅴ原创| 国产精品亚洲视频| 精品处破学生在线二十三| 美腿丝袜在线亚洲一区| 91精品国产手机| 激情综合网激情| 精品国产a毛片| 精品亚洲欧美一区| 国产视频一区二区三区在线观看|