私は現在、ウェブカメラのビデオ キャプチャをプロジェクトに実装しようとしています。
最初に、あるコンピューターでは機能するが別のコンピューターでは機能しない Direct Show を試しました。
だから今、メディアファンデーションを試しています。
私は主にマイクロソフトが提供する例に従いました。
MFCreateDeviceSource() を呼び出すと、エラー コード 0x80070002 (-2147024894) が表示されます。
このエラー コードは、このコンテキストでは実際には文書化されていません。
この結果は、2 つの異なるタイプの Web カメラの 3 つの別々の Web カメラで得られます。これらはすべて、Direct Show (VLC など) を使用する他のプログラムで動作します。
ヒントをありがとう。
オペレーティング システム: Windows7
SDK: Windows SDK v7.1
IDE: Visual Studio 2008
コード:
// MFStartup(MF_VERSION, MFSTARTUP_NOSOCKET) -- is called successfully in a previous function)
IMFMediaSource* media_source = 0;
IMFSourceReader* source_reader = 0;
IMFAttributes* pAttributes = 0;
hr = MFCreateAttributes(&pAttributes, 2);
if (FAILED(hr)) {
return false;
}
// Set the device type to video.
hr = pAttributes->SetGUID(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE, MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_GUID);
if (FAILED(hr)) {
return false;
}
// Set the symbolic link.
hr = pAttributes->SetString(MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_SYMBOLIC_LINK,(LPCWSTR)&device_name);
if (FAILED(hr)) {
return false;
}
// Create device source interface
hr = MFCreateDeviceSource(pAttributes, &media_source);
if (FAILED(hr)) {
// HERE I RECEIVE 0x80070002
return false;
}
// Create source reader
IMFAttributes* attr;
MFCreateAttributes(&attr,1);
attr->SetUINT32(MF_SOURCE_READER_ENABLE_VIDEO_PROCESSING,1);
hr = MFCreateSourceReaderFromMediaSource(media_source,attr,&source_reader);
if(FAILED(hr)) {
return false;
}