DVApp 示例

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

说明

数字视频 (DV) 捕获应用程序。

此示例演示如何生成各种类型的筛选器图来控制 DV 摄像机。 它还演示如何使用 DV 摄像机执行捕获、预览、传输和设备控制。

使用情况

DVApp 应用程序支持以下模式:

  • 预览:将 DV 从摄像机呈现到视频窗口。
  • DV 到类型 1 文件:将 DV 数据从摄像机捕获到类型 1 DV 文件。
  • Type-1 文件到 DV:将数据从类型 1 DV 文件传输到摄像机。
  • DV 到 type-2 文件:将 DV 数据从摄像机捕获到类型 2 DV 文件。
  • Type-2 文件到 DV:将数据从类型 2 DV 文件传输到摄像机。

捕获和传输模式也执行预览。 其中每个模式都有一个 “无预览” 选项,用于禁用预览。 在不预览的情况下捕获更高效,并且可以减少丢弃的帧数。

应用程序以预览模式启动。 若要选择其他模式,请从“图形模式”菜单中选择一种 模式 。 对于每个模式,DVApp 都会生成一个支持该模式功能的筛选器图。 若要将图形另存为 GraphEdit (.grf) 文件,请从“文件”菜单中选择“将图形保存到文件”。 在 GraphEdit 中打开文件之前,请退出 DVApp。

若要捕获到文件,请执行以下操作:

  1. 在“ 文件 ”菜单中,选择“ 设置输出文件” 并输入文件名。
  2. 从“ 图形模式 ”菜单中, (键入 1 或类型 2,选择 DV 到“文件模式 ”,无论是否带有预览) 。
  3. 单击“ 记录”。
  4. 如果摄像机处于 VTR 模式,请单击“ 播放”。
  5. 若要停止捕获,请单击“ 停止”。

从文件传输到摄像机:

  1. 在“ 文件 ”菜单中,单击“ 设置输入文件 ”并选择 DV 文件。 该文件必须与所选模式 (类型 1 或类型 2) 匹配。
  2. 从“ 图形模式 ”菜单中,选择“ 文件到 DV” 模式, (键入 1 或类型 2,无论是否带有预览) 。
  3. 单击“播放”
  4. 若要将数据记录到磁带,请单击“ 记录”。
  5. 若要停止传输,请单击“ 停止”。

如果摄像机处于 VTR 模式,则用户可以通过应用程序的 VCR 样式按钮控制传输机制。 若要查找磁带,请输入目标时间码并单击“查找”按钮。

若要限制应用程序捕获的数据量,请从“文件”菜单中选择“捕获大小”。

若要检查 NTSC 或 PAL) (磁带格式,请从“选项”菜单中选择“检查磁带”。

若要更改预览窗口的大小,请从“选项”菜单中选择“更改解码大小”。

编程说明

此应用程序的main用途是演示如何生成各种 DV 捕获和传输图。

设备到达和删除

应用程序使用两种不同的技术来处理设备到达和删除。 对于设备到达,应用程序的消息循环响应WM_DEVICECHANGE消息。 对于设备删除,应用程序响应筛选器图管理器 中的EC_DEVICE_LOST 事件。 两种方法都有效,但EC_DEVICE_LOST事件取决于筛选器图中是否存在设备。

应用程序一次只处理一个设备。 如果删除了当前设备,应用程序将在系统上查找另一个 DV 设备。

在某些 DV 摄像机上,用户在相机模式和 VTR 模式之间切换设备时必须关闭设备,这会触发设备丢失的消息。 应用程序通过启用或禁用相应的菜单命令来响应。 但是,如果用户在模式之间快速切换,摄像机可能不会生成设备丢失的消息。 可以通过从“选项”菜单中选择“刷新模式”来强制更新菜单。 某些 DV 摄像机可以在不关闭的情况下切换模式,但仅在切换到 VTR 模式时发送设备丢失的消息。

设备控制

“播放录制”按钮的功能取决于当前模式:

  • 预览:筛选器图会自动运行。 “ 播放 ”按钮启动传输。
  • 捕获到文件: “录制 ”按钮运行图形,“ 播放 ”按钮启动传输。
  • 传输到设备: “播放 ”按钮运行图形,“ 录制 ”按钮启动传输。

示例应用程序不执行帧精确捕获。 在各种时间点,应用程序调用 Sleep 函数以等待设备响应。 较新的 DV 摄像机在设备状态更改时发送通知。 较旧的设备可能不支持通知;就示例而言,调用 Sleep 是一种更简单的解决方案。

下载示例

若要下载 DirectShow SDK 示例,请安装最新版本的 Windows SDK

此示例安装在以下路径下: [SDK 根]\Samples\Multimedia\DirectShow\Capture\DVApp。

控制 DV 摄像机

DirectShow 中的数字视频

DirectShow 示例