2
我的目標是Windows機器。我需要訪問指向字節數組的指針,以描述來自附加USB攝像頭的單個流幀。我看到了來自windows sdk的playcap directshow示例,但我不明白如何獲取原始數據,坦率地說,我不明白視頻如何到達窗口。由於除視頻捕捉之外我不需要其他任何東西,所以我不想使用opencv。如何在C++中獲取攝像頭視頻流字節
Visual Studio 2008 C++
我的目標是Windows機器。我需要訪問指向字節數組的指針,以描述來自附加USB攝像頭的單個流幀。我看到了來自windows sdk的playcap directshow示例,但我不明白如何獲取原始數據,坦率地說,我不明白視頻如何到達窗口。由於除視頻捕捉之外我不需要其他任何東西,所以我不想使用opencv。如何在C++中獲取攝像頭視頻流字節
Visual Studio 2008 C++
插入採樣採集卡過濾器。將相機源連接到採樣卡,然後連接到空渲染器。示例抓取器是一種轉換,因此您需要將輸出提供給某個位置,但如果不需要渲染它,則null渲染器是一個不錯的選擇。
您可以使用ISampleGrabber配置採樣器。您可以爲每個框架安排回調到您的應用程序,爲您提供一個指向這些位本身的指針或一個指向IMediaSample對象的指針,這些對象也將爲您提供元數據。
你需要實現你的對象ISampleGrabberCB,然後你需要像這樣(僞代碼)
IFilterInfoPtr m_pFilterInfo;
ISampleGrabberPtr m_pGrabber;
m_pGrabber = pFilter;
m_pGrabber->SetBufferSamples(false);
m_pGrabber->SetOneShot(false);
// force to 24-bit mode
AM_MEDIA_TYPE mt;
ZeroMemory(&mt, sizeof(mt));
mt.majortype = MEDIATYPE_Video;
mt.subtype = MEDIASUBTYPE_RGB24;
m_pGrabber->SetMediaType(&mt);
m_pGrabber->SetCallback(this, 0);
// SetCallback increments a refcount on ourselves,
// but we own the grabber so this is recursive
/// -- must addref before SetCallback(NULL)
Release();
我一直在尋找進入SampleGrabber,但我有一個很難得到它掛接的權利。我不可能從你那裏得到一段代碼,對吧?我在期待我應該參加playcap示例,並將samplegrabbber和null渲染器添加到圖中,然後使用samplegrabber的回調來獲取我需要的信息。 – 2010-06-10 13:22:01
我已經在上面添加了一些簡短的代碼註釋 - 希望有所幫助 – 2010-06-10 18:14:41