DuckingCaptureSample

此示例应用程序演示了如何打开和关闭通信流,以及应用程序如何获取闪避事件来实现流衰减。 此应用程序实现一个聊天客户端,它使用核心音频 API 从通信设备读取音频数据并在输出设备上播放。

本主题包含以下各节:

说明

此示例演示了以下功能。

  • 用于多媒体设备枚举和选择的 MMDevice API
  • WASAPI 用于访问通信捕获和呈现设备、流管理操作以及处理闪避事件。
  • 用于访问通信设备和捕获音频输入的 WAVE API

要求

产品 版本
Windows SDK Windows 7
Visual Studio 2008

 

下载示例

此样本在以下位置提供。

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

 

生成示例

要生成 DuckingCaptureSample 样本,请使用以下步骤:

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

运行示例

如果成功生成应用程序,则会生成一个可执行文件 DuckingCaptureSample.exe。 要运行它,请从“调试”菜单中选择“开始调试”或“开始但不调试”或在命令窗口中键入 DuckingCaptureSample

DuckingCaptureSample 为用户提供了从默认控制台设备捕获音频的两种实现方式:WASAPI 和 Wave API。 要启动捕获会话,请选择一种模式,然后单击应用程序用户界面上的“启动”。 要结束会话,请单击“停止”。 根据用户指定的设备(输入或输出),应用程序会使用 MMDevice API 获取对默认呈现或捕获通信设备的引用。 用户开始聊天会话后,应用程序会执行以下任务:

  • 以事件驱动模式创建并初始化音频客户端。
  • 将客户端与事件句柄相关联,事件句柄发出信号,表示样本已准备好捕获或呈现。
  • 为传输设置捕获客户端和呈现客户端。
  • 创建聊天线程并启动音频引擎。

在捕获音频数据时,每次处理过程中样本都会使用捕获客户端获取缓冲区中可用的捕获数据总量,从默认输入设备读取数据,然后释放数据包,让缓冲区可用于读取下一组捕获数据。

对于呈现,应用程序将决定在捕获终结点缓冲区中排队播放的数据量。 它相应地向缓冲区写入数据,然后释放缓冲区,为下一次处理做准备,直至写入所有数据。 对于呈现,会对无提示帧进行预滚动处理,以防止音频引擎在启动时出现故障。 DuckingCaptureSample 还展示了如何从音量混合器中隐藏呈现流。

有关流衰减功能的详细信息,请参阅使用通信设备

使用核心音频 API 的SDK 示例