Windows Vista / 7:如何采样输出audio混合?

我如何获得当前的波形输出采样stream?

在2006年12月关于social.microsoft.com的一个问题( 如何从Vista中的'Wave'或'Stereo Mix'进行logging? )yjslash问:

Windows XP或更早版本中,我可以将audiostream捕获到扬声器。 换句话说, DirectSoundCapture能够从选定的源代码行中捕获。 如果select“Wave Out Mix”或“Stereo Mix”或其他类似的音源作为录音源行,Dir​​ectSoundCapture可以将audiostream录制到扬声器。

Larry Osterman(MSFT) (audio团队开发人员和StackOverflow用户 )回应说:

你在XP中使用了哪些API? 他们应该继续在Vista上工作。

WASAPI有一个特殊的环回模式,允许客户端捕获后混audiostream,这也可能有帮助

关于Stackoverflow的一个问题( 我如何读取windows xp和windows 7中的系统audio输出? )也提到WASAPI能够对输出混合进行采样,并且可以从Windows Vista开始。

2007年1月,Windows Team博客文章提到了对audio输出进行采样的能力(用于回声消除的目的;以及HDCP对其的影响):

回声消除对于高级内容的工作不太好吗?

我们相信,Windows Vista为应用程序提供了足够的信息,以成功构build高质量的回声消除function。

用什么API来采样audio输出? Vista提供哪些应用程序访问当前的audio输出stream? WASAPI的哪些function以及如何使用它们可以采样/采集当前的audio输出?

也可以看看

  • 探索Windows Vistaaudio设备链(树?)的工具
  • MSDN:关于WASAPI

我在MSDN中找到了这个 ( Loopback Recording ),还有( 捕获流 )。

顺便说一下,根据MSDN,WASAPI将不允许您捕获具有DRM保护的流:

Windows Vista提供数字版权管理(DRM)。 WASAPI不允许环回记录包含受DRM保护的内容的数字流。 类似地,受信任的音频驱动程序不允许回送设备捕获包含受保护内容的数字流。 Windows Vista只允许受信任的驱动程序播放受保护的内容。 有关受信任的驱动程序和DRM的更多信息,请参阅Windows DDK文档。