CaptureSharedTimerDriven

此示例应用程序使用核心音频 API 从用户指定的输入设备中捕获音频数据,并将其写入当前目录中唯一命名的 .wav 文件。 此示例演示了计时器驱动的缓冲。

本主题包含以下各节:

说明

此示例演示了以下功能。

  • 用于多媒体设备枚举和选择的 MMDevice API
  • 用于流管理操作的 WASAPI

要求

产品 版本
Windows SDK Windows 7
Visual Studio 2008 年

 

下载示例

此样本在以下位置提供。

位置 路径/URL
Windows SDK \Program Files\Microsoft SDKs\Windows\v7.0\Samples\Multimedia\Audio\CaptureSharedTimerDriven\...

 

生成示例

要生成 CaptureSharedTimerDriven 示例,请执行以下步骤:

  1. 打开 Windows SDK 的 CMD shell,并更改为 CaptureSharedTimerDriven 示例目录。
  2. 在 CaptureSharedTimerDriven 目录中运行 start WASAPICaptureSharedTimerDriven.sln 命令,在 Visual Studio 窗口中打开 WASAPICaptureSharedTimerDriven 项目。
  3. 在窗口中选择“调试”或“发布”解决方案配置,从菜单栏中选择“生成”菜单,然后选择“生成”选项。 如果未从 SDK 的 CMD shell 打开 Visual Studio,则 Visual Studio 将无法访问 SDK 的生成环境。 在这种情况下,除非显式设置了项目文件 WASAPICaptureSharedTimerDriven.vcproj 中使用的环境变量 MSSdk,否则将无法生成此示例。

运行示例

如果成功生成演示应用程序,则会生成一个可执行文件 WASAPICaptureSharedTimerDriven.exe。 要运行它,请在命令窗口中键入 WASAPICaptureSharedTimerDriven,然后输入必要或可选的参数。 以下示例展示了如何在默认多媒体设备上通过指定捕获持续时间来运行采样。

WASAPICaptureSharedTimerDriven.exe -d 20 -multimedia

下表列出了参数。

参数 说明
-? 显示帮助。
-h 显示帮助。
-l 音频捕获延迟(毫秒)。
-d 音频捕获持续时间(秒)。
-m 禁用 MMCSS。
-console 使用默认控制台设备。
-communications 使用默认通信设备。
-multimedia 使用默认多媒体设备。
-endpoint 使用开关值中指定的终结点标识符。

 

如果应用程序在没有参数的情况下运行,它会枚举可用的设备,并提示用户为捕获会话选择设备。 将列出默认控制台、通信和多媒体设备,后跟设备和终结点标识符。 如果未指定持续时间,则会从指定设备捕获 10 秒钟的音频流。 应用程序会将捕获的数据写入一个唯一命名的 .wav 文件。

CaptureSharedTimerDriven 演示了计时器驱动的缓冲。 在这种模式下,客户端必须等待一段时间(延迟时间的一半,由 -d 开关值指定,单位为毫秒)。 当客户端唤醒时,处理时间已过半,它会从引擎中提取下一组样本。 在缓冲循环的每个处理环节之前,客户端必须找出可用的捕获数据量,以免数据超出捕获缓冲区。 通过启用事件驱动的缓冲,可以处理从指定设备捕获的音频数据。 CaptureSharedEventDriven 示例中演示了这种模式。

使用核心音频 API 的SDK 示例