可以从 WMF 调用 DirectShow QueryInterface 方法。示例代码在Windows Media Foundation: Controlling Camera Properties中给出。这应该可以让您设置可用的相机参数,如焦点和白平衡等。
HRESULT CMFVideoCaptureDlg::SetupCamera(IMFMediaSource* pCameraSource) {
CComQIPtr<IAMCameraControl> 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<IAMVideoProcAmp> spVideo(pCameraSource);
if(spVideo)
hr = spVideo->Set(VideoProcAmp_WhiteBalance, 0, VideoProcAmp_Flags_Auto);
return hr;
}
事实证明,Media Foundation 没有为这些任务定义任何特定的接口。奇怪的是,当媒体源是摄像机时,它在其媒体源(由 IMFMediaSource 接口表示)上实现了由其前身 DirectShow 定义的接口