日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
關(guān)于使用ISampleGrabberCB接口獲取幀數(shù)據(jù)問(wèn)題
ISampleGrabberCB接口是DirectShow中用于獲取幀數(shù)據(jù)的回調(diào)接口,可以自定義實(shí)現(xiàn)該接口并傳遞給ISampleGrabber接口,來(lái)獲取視頻幀的數(shù)據(jù)。下面是使用ISampleGrabberCB接口獲取幀數(shù)據(jù)的一般步驟: 1. 創(chuàng)建ISampleGrabber對(duì)象。 2. 創(chuàng)建ISampleGrabberCB對(duì)象。 3. 將ISampleGrabberCB對(duì)象賦值給ISampleGrabber::SetCallback方法。 4. 啟動(dòng)ISampleGrabber對(duì)象。 5. 循環(huán)讀取幀數(shù)據(jù)。

ISampleGrabberCB接口簡(jiǎn)介

ISampleGrabberCB接口是DirectShow庫(kù)中的一個(gè)回調(diào)接口,用于在獲取視頻幀數(shù)據(jù)時(shí)進(jìn)行自定義處理,通過(guò)實(shí)現(xiàn)ISampleGrabberCB接口,我們可以在獲取到視頻幀數(shù)據(jù)后,對(duì)其進(jìn)行預(yù)處理、后處理等操作,從而滿足特定的需求。

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),江北企業(yè)網(wǎng)站建設(shè),江北品牌網(wǎng)站建設(shè),網(wǎng)站定制,江北網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,江北網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

如何使用ISampleGrabberCB接口

1、創(chuàng)建IBaseFilter對(duì)象

要使用ISampleGrabberCB接口,首先需要?jiǎng)?chuàng)建一個(gè)IBaseFilter對(duì)象,然后將其作為參數(shù)傳遞給CreateStreamSampleGrabber方法,以創(chuàng)建一個(gè)ISampleGrabber對(duì)象。

2、實(shí)現(xiàn)ISampleGrabberCB接口

接下來(lái),需要實(shí)現(xiàn)ISampleGrabberCB接口,并重寫其中的幾個(gè)虛擬函數(shù):

QueryInterface:用于處理其他接口的請(qǐng)求;

AddRef:增加引用計(jì)數(shù);

Release:減少引用計(jì)數(shù);

NewSample:當(dāng)有新的視頻幀數(shù)據(jù)可用時(shí)調(diào)用此函數(shù)。

3、設(shè)置回調(diào)函數(shù)

在創(chuàng)建ISampleGrabber對(duì)象后,還需要設(shè)置其回調(diào)函數(shù),這可以通過(guò)ISampleGrabber::SetCallback方法來(lái)實(shí)現(xiàn),該方法接受一個(gè)指向ISampleGrabberCB接口實(shí)例的指針作為參數(shù)。

4、開始獲取幀數(shù)據(jù)

調(diào)用IMediaControl::Run方法啟動(dòng)媒體流,開始獲取幀數(shù)據(jù),在NewSample回調(diào)函數(shù)中,可以對(duì)獲取到的視頻幀數(shù)據(jù)進(jìn)行處理。

示例代碼

include 
include 
include 
include 
include "samplegrabbercb.h"
int main()
{
    CoInitialize(NULL);
    // 創(chuàng)建系統(tǒng)設(shè)備枚舉器
    ICreateDevEnum *pDevEnum = NULL;
    if (FAILED(CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pDevEnum))))
    {
        std::cerr << "創(chuàng)建設(shè)備枚舉器失??!" << std::endl;
        return -1;
    }
    // 獲取視頻輸入設(shè)備類別過(guò)濾器
    IEnumMoniker *pEnum = NULL;
    pDevEnum->CreateClassEnumerator(CLSID_VideoInputDeviceCategory, &pEnum, 0);
    // 遍歷視頻輸入設(shè)備
    IMoniker *pMoniker = NULL;
    while (pEnum->Next(1, &pMoniker, NULL) == S_OK)
    {
        IPropertyBag *pPropBag;
        HRESULT hr = pMoniker->BindToStorage(0, 0, IID_PPV_ARGS(&pPropBag));
        if (SUCCEEDED(hr))
        {
            VARIANT var;
            VariantInit(&var);
            hr = pPropBag->Read(L"FriendlyName", &var, 0);
            if (SUCCEEDED(hr))
            {
                std::wcout << "找到視頻輸入設(shè)備: " << V_BSTR(&var) << std::endl;
                pPropBag->Release();
            }
            VariantClear(&var);
        }
        pMoniker->Release();
    }
    pEnum->Release();
    pDevEnum->Release();
    // TODO: 根據(jù)找到的視頻輸入設(shè)備名稱進(jìn)行篩選和配置,創(chuàng)建IBaseFilter對(duì)象并設(shè)置回調(diào)函數(shù)等操作。
    // ...省略部分代碼...
    CoUninitialize();
    return 0;
}```
四、相關(guān)問(wèn)題與解答
1、如何解決“無(wú)法連接到DMO”的問(wèn)題?
答:這個(gè)問(wèn)題通常是由于DMO(數(shù)字媒體對(duì)象)組件未注冊(cè)或注冊(cè)失敗導(dǎo)致的,可以嘗試重新注冊(cè)DMO組件,或者檢查系統(tǒng)中是否存在已損壞的DMO組件,具體操作如下:打開“運(yùn)行”對(duì)話框(快捷鍵Win+R),輸入“regsvr32 %systemroot%system32strmiids.dll”(不帶引號(hào)),然后按回車鍵執(zhí)行,完成后重啟計(jì)算機(jī)。

當(dāng)前標(biāo)題:關(guān)于使用ISampleGrabberCB接口獲取幀數(shù)據(jù)問(wèn)題
標(biāo)題來(lái)源:http://www.5511xx.com/article/cdejihe.html