This article具有下面的代码和它的工作原理是魅力!
HRESULT CMFVideoCaptureDlg::SetupCamera(IMFMediaSource* pCameraSource) {
CComQIPtr spCameraControl(pCameraSource);
HRESULT hr = S_OK;
if(spCameraControl) {
long min, max, step, def, control;
hr = spCameraControl->GetRange(CameraControl_Exposure, &min, &max, &step, &def, &control);
if(SUCCEEDED(hr))
hr = spCameraControl->Set(CameraControl_Exposure, 1, CameraControl_Flags_Manual);
}
CComQIPtr spVideo(pCameraSource);
if(spVideo)
hr = spVideo->Set(VideoProcAmp_WhiteBalance, 0, VideoProcAmp_Flags_Auto);
return hr;
}
我来到这里(在我的MF程序控制摄像头)完全相同的问题,如OP和你的回答基本上是“你应该使用的DirectShow”。我无法接受如此-1我从 – YePhIcK 2017-03-04 04:36:35
@YePhIcK:“你应该使用DirectShow”,如果你想留下记录的功能 - 是的答案仍然是良好的立场截至目前。 – 2017-03-04 07:56:01
我不打算争论,因为我使用下面发布的答案中的代码,它按预期工作。无需摆弄图形或过滤器(这一切都在引擎盖下)。我的代码看起来就像一个普通的MF代码,没有DirectShow会引起混乱。 – YePhIcK 2017-03-04 08:05:28