DuckingMediaPlayer

本示例应用程序通过实现一个媒体播放器来演示流衰减,该播放器可显示系统提供的默认衰减行为,选择退出闪避事件,并在收到闪避事件时实现自定义处理。 此示例必须与 DuckingCaptureSample 配合使用。 有关闪避或流衰减的详细信息,请参阅默认闪避体验

本主题包含以下各节:

说明

此示例演示了以下功能。

  • DirectShow 以播放媒体文件。
  • WASAPI,用于流管理和处理闪避事件。

要求

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

 

下载示例

此样本在以下位置提供。

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

 

生成示例

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

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

运行示例

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

要查看闪避的演示,必须同时执行 DuckingMediaPlayer 和 DuckingCaptureSample。 DuckingCaptureSample 打开一个通信流,并发出信号让系统生成闪避事件。 在发生闪避事件时,系统会通知 DuckingMediaPlayer,媒体播放器会执行用户所要求的操作。

要禁用闪避行为,请执行以下操作:

  1. 在 DuckingCaptureSample 窗口中,选择“使用默认输入设备”,然后单击“开始”,从通信设备启动捕获会话。
  2. 在 DuckingMediaPlayer 上,选择一个要播放的媒体文件,并将闪避选项指定为“选择退出闪避”。

注意,媒体文件会一直播放而不会出现任何中断。 通信流打开时系统产生的事件将被忽略。

要演示系统提供的默认闪避行为,请执行以下操作:

  1. 从控制面板上选择“声音”选项。 在“通信”选项卡上,选择“将其他声音的音量降低 80%”。
  2. 在 DuckingCaptureSample 窗口中,选择“使用默认输入设备”,然后单击“开始”,从通信设备启动捕获会话。
  3. 在 DuckingMediaPlayer 上,选择要播放的媒体文件,但不要选择任何闪避选项。
  4. 在 DuckingCaptureSample 窗口中,单击“停止”以停止通信流。

请注意,当 DuckingCaptureSample 打开通信流时,DuckingMediaPlayer 播放的媒体文件会不间断播放,但音量会降低。 当通信会话停止时,音量将被重置为原始设置。 这种数据流衰减行为是系统默认的闪避行为。

查看媒体播放器实现的自定义闪避行为:

  1. 在 DuckingCaptureSample 窗口中,选择“使用默认输入设备”,然后单击“开始”,从通信设备启动捕获会话。
  2. 在 DuckingMediaPlayer 上,选择一个要播放的媒体文件,并将闪避选项指定为“闪避时暂停”。
  3. 在 DuckingCaptureSample 窗口中,单击“停止”以停止通信流。

请注意,当 DuckingCaptureSample 打开通信流时,DuckingMediaPlayer 播放的媒体文件会暂停。 当通信会话停止时,播放会重新开始。 此流衰减行为就是媒体播放器实现的闪避行为。

DuckingMediaPlayer 还演示了如何将每个应用程序的音量控件与音量混合器整合在一起。

有关数据流衰减功能的详细信息,请参阅默认闪避体验

使用核心音频 API 的SDK 示例