微软媒体基金会Webcam界面

我一直在研究c ++界面,通过Micrsoft Media Foundation从各种类型的网络摄像头捕捉图像。 我已经有了一些代码,可以连接几种类型的网络摄像头,并能够以不同的分辨率和格式捕捉图像。

我知道在WinXP下可以通过使用直接显示库改变摄像头的不同参数(如白平衡,曝光时间等)。 不幸的是,直接显示库中的接口使得从网络摄像头中轻松捕获单帧成为可能。 有人知道我可以如何使用Microsoft Media Foundation或其他任何可以与Microsoft Media Foundation结合的库来访问这些参数吗?


DirectShow在Windows 7中仍然很好(最容易检查的是使用Windows SDK中的GraphEditAMCap )。 但媒体基金会在Windows的早期版本中缺少必要的支持。


可以从WMF调用DirectShow QueryInterface方法。 示例代码在Windows Media Foundation中给出:控制相机属性。 这应该让您设置可用的相机参数,如对焦和白平衡等。

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定义的接口,当媒体源是摄像机时


IAMCameraControl和IANVideoProcAmp仍然支持Windows 8中的白平衡,平移,缩放。相机控制至今不是MFT的一部分。我们必须使用Direct Show来完成这些操作。

链接地址: http://www.djcxy.com/p/80975.html

上一篇: Microsoft Media Foundation Webcam Interface

下一篇: webcam "still pin" capture