30

有谁知道如何以编程方式捕获正在播放的声音(即来自声卡的所有声音,而不是麦克风等输入设备)。

4

4 回答 4

24

假设您在谈论 Windows,基本上有三种方法可以做到这一点。

首先是打开音频设备的主输出作为录音源。这只有在驱动程序支持时才有可能,尽管现在大多数都这样做。虚拟设备的通用名称是“你所听到的”或“Wave Out”。您将需要使用合适的 API(请参阅 MSDN 中的 WaveIn 或 DirectSound)来进行捕获。

第二种方法是编写一个过滤器驱动程序,可以在音频流到达物理设备之前对其进行拦截。同样,此技术仅适用于具有合适驱动程序拓扑的设备,而且它肯定不适合胆小的人。

这意味着这些选项都不能保证在具有任意硬件的 PC 上工作。

最后一种选择是使用虚拟音频设备,例如Virtual Audio Cable。如果在 Windows 中将此设备设置为默认播放设备,则所有运行良好的应用程序都将通过它播放。然后,您可以从同一设备记录以捕获总和输出。只要您可以控制要录制的应用程序使用的设备,那么此选项将始终有效。

所有这些技术都有其优点和缺点 - 由您决定哪种技术最适合您的需求。

于 2008-10-17T13:45:50.247 回答
3

您可以使用 Waveform Audio Interface,有一篇MSDN 文章介绍了如何通过 PInvoke 访问它。

为了捕捉正在播放的声音,您只需要打开播放设备而不是麦克风。打开输入,当然,不是输出;-)

于 2008-10-17T09:57:55.043 回答
0

如果您使用的是 OSX,来自 Rogue Amoeba 的 Audio Hijack Pro可能是最简单的方法。

无论如何,为什么不把你的音频循环回你的线路并录制呢?这是一个非常简单的解决方案。只需将电缆插入您的音频输出插孔和插孔中的线路并开始录音。

于 2008-11-04T20:07:40.020 回答
0

您必须启用设备立体声混音。如果你这样做,直接声音找到这个设备。

于 2009-02-23T23:16:35.713 回答