MSDV 驱动程序
[与此页面关联的功能(DirectShow)是一项旧功能。 它已被 MediaPlayer、IMFMediaEngine取代,并在媒体基金会 音频/视频捕获。 这些功能已针对 Windows 10 和 Windows 11 进行了优化。 Microsoft强烈建议新代码尽可能使用 MediaPlayer、IMFMediaEngine 和 Media Foundation 中的音频/视频捕获,而不是 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 数据
大多数 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 起,筛选器图形管理器将自动选择 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 中,DV 筛选器的设备名字对象除了 FriendlyName 属性外,还支持 Description 属性。 此属性返回设备的说明(取自 INF 文件),该文件通常包含设备的品牌名称。 但是,所有设备模型都不支持此属性。
有关设备名字对象的详细信息,请参阅 使用系统设备枚举器。
时钟时间
MSDV 驱动程序使用包含在 1394 数据包中的 1394 总线时钟来派生时钟。 它使用这些值来时间戳 DV 媒体示例。 由于此源时钟不是计算机系统时钟,因此时间最终将偏离计算机系统时钟。 但如上所述,默认情况下,筛选器图形管理器将选择 MSDV 作为图形引用时钟。
IAMDroppedFrames 接口报告驱动程序的当前丢弃帧度量;此值可能不会与给定时间实际删除的帧数完全同步。 如果删除帧,则表示系统未均衡(数据生产超过数据消耗)。 例如,用户的硬盘可能不够快,无法支持 DV 捕获速率。
相关主题
-
在 DirectShow 中 数字视频