设备模式

[与此页面关联的功能(DirectShow)是一项旧功能。 它已被 MediaPlayerIMFMediaEngine取代,并在媒体基金会 音频/视频捕获。 这些功能已针对 Windows 10 和 Windows 11 进行了优化。 Microsoft强烈建议新代码尽可能使用 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获,而不是 DirectShow。 Microsoft建议重写使用旧 API 的现有代码,以尽可能使用新 API。]

IEEE 1394 和 USB 摄像机可以在相机模式和视频录音机(VTR)模式之间切换。 当 IEEE 1394 摄像机切换模式时,设备重置,应用程序必须再次枚举它。 应用程序无法以编程方式切换模式。 另一方面,USB 摄像机可以在相机和 VTR 模式之间切换,而无需重置,应用程序可以更改模式。

MSDV 驱动程序

若要在 IEEE 1394 设备上获取当前模式,请使用值ED_DEVCAP_DEVICE_TYPE调用 IAMExtDevice::GetCapability 方法。 如果该方法返回值ED_DEVTYPE_VCR,则设备处于 VTR 模式,并且具有暂停、停止、快速转发和回退等功能。 否则,如果方法返回ED_DEVTYPE_CAMERA,则设备处于相机模式。 以下代码示例演示如何查询设备类型:

if (MyDevCap.bHasDevice) 
{
    LONG lDeviceType = 0;
    MyDevCap.pDevice->GetCapability(ED_DEVCAP_DEVICE_TYPE, &lDeviceType, 0);

    if (lDeviceType == ED_DEVTYPE_VCR) 
    {
        // Device is a VTR. Enable all VTR functions.
    }
    else 
    {
        // Device is a camera. 
        // Enable record and record-pause; disable other functions.
    }
}

如果摄像机脱机,则应在下次可用时再次查询它。 筛选器图形管理器在删除设备时发布 EC_DEVICE_LOST 事件。

UVC 驱动程序

由于 USB 视频设备可以在不重置的情况下切换模式,因此前面的示例中显示的代码对于 USB 设备来说并不可靠。 请改用 ISelector 接口来获取当前模式。 如果设备支持模式,还可以使用此接口以编程方式切换模式。

控制 DV 摄像机