MSDV 驱动程序
[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayer、 IMFMediaEngine 和 音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
MSDV 是适用于 DV 摄像机的 Microsoft Windows 驱动程序模型 (WDM) 驱动程序。 当设备接通电源时,驱动程序显示为 DirectShow 筛选器。 它在两个筛选器类别中枚举:
- CLSID_VideoInputDeviceCategory (“视频捕获源”)
- AM_KSCATEGORY_RENDER (“WDM 流式处理呈现设备”)
筛选器的友好名称为 Microsoft DV Camera and VCR
,或本地化的等效名称。 在某些设备中, Description 属性包含特定模型的说明,可以使用该说明而不是通用友好名称。 有关详细信息,请参阅 选择捕获设备。
MSDV 有两个输出引脚。 一个引脚提供包含交错音频和视频数据的 DV 帧。 另一个引脚提供无音频的仅限视频的帧。 MSDV 无法同时从两个引脚进行流式传输,因此一次只能连接一个输出引脚。 有关从 DV 设备捕获视频的详细信息,请参阅 将 DV 捕获到文件。
大多数 DV 摄像机都有一个视频磁带记录器 (VTR) 子单元,它可以将数据从磁带传输到计算机。 对于应用程序,从磁带捕获与捕获实时视频的工作原理相同。 唯一的区别是,应用程序必须控制外部磁带传输 - 启动和停止磁带、倒带等。 为此,MSDV 公开 IAMExtDevice、 IAMExtTransport 和 IAMTimecodeReader 接口。 有关控制 VTR 的详细信息,请参阅 控制 DV 摄像机。
还可以将 DV 从计算机传输到摄像机。 然后,可以在摄像机的载入屏幕中查看视频,或录制到磁带中。 为了支持此功能,MSDV 具有可以接收交错 DV 流的输入引脚。 连接输入引脚时,MSDV 充当呈现器筛选器,而不是捕获筛选器。 MSDV 不支持在此模式下查找。 有关将 DV 发送到设备的详细信息,请参阅 将 DV 从文件传输到磁带。
请注意,输入和输出引脚不能同时连接,因为设备不能同时在两个方向上流式传输。
在许多摄像机中,在 VTR 模式和相机模式之间切换会导致设备关闭。 因此,当用户切换模式时,DirectShow 可能会丢失设备。 有关设备删除事件的信息,请参阅 设备删除通知。
备注
有关 MSDV 驱动程序支持哪些 DV 格式的信息,请参阅 DV 视频子类型。
有关使用 MSDV 生成筛选器图的一些提示:
不能使用 IGraphBuilder::Render 在 MSDV 上呈现输出引脚。 (Filter Graph 管理器尝试将输出引脚连接到 MSDV 的输入引脚,但失败。) 请改用 IGraphBuilder::Connect 或 ICaptureGraphBuilder2::RenderStream。
当筛选器图包含 MSDV 时,MSDV 应提供图形的参考时钟。 从 DirectX 8.0 起,Filter Graph 管理器将自动选择 MSDV 作为参考时钟。 对于早期版本,应在 Filter Graph 管理器上调用 IMediaFilter::SetSyncSource 方法。 有关时钟的详细信息,请参阅 DirectShow 中的时间和时钟。
根据设备, IAMExtDevice、 IAMExtTransport 和 IAMTimeCodeReader 中的某些方法可能会返回 Windows 错误代码而不是 HRESULT 值。 可能的错误代码包括以下内容。
错误代码 说明 ERROR_TIMEOUT 外部设备命令已超时。 ERROR_REQ_NOT_ACCEP 设备不接受此外部设备命令。 ERROR_NOT_SUPPORTED 设备不支持此外部设备命令。 ERROR_REQUEST_ABORTED 外部设备命令已中止。 设备可能已删除或发生总线重置。
设备信息
在 Windows Millennium Edition 和 Windows XP 中,除 FriendlyName 属性外,DV 筛选器的设备名字对象还支持 Description 属性。 此属性返回设备的说明,取自 INF 文件,该文件通常包含设备的品牌名称。 但是,并非所有设备型号都支持此属性。
有关设备名字对象的详细信息,请参阅 使用系统设备枚举器。
时钟时间
MSDV 驱动程序使用 1394 数据包中包含的 1394 总线时钟来派生时钟。 它使用这些值对 DV 媒体样本进行时间戳。 由于此源时钟不是计算机系统时钟,因此时间最终会偏离计算机系统时钟。 如前所述,默认情况下,筛选器图形管理器将选择 MSDV 作为图形引用时钟。
IAMDroppedFrames 接口报告驱动程序对丢弃帧的当前度量值;此值可能不会与给定时间实际丢弃的帧数完全同步。 如果删除帧,则表示系统未均衡 (数据生产超出数据消耗) 。 例如,用户的硬盘速度可能不够快,无法支持 DV 捕获速率。
相关主题