有没有人知道如何以编程方式捕获正在播放的声音(即来自声卡的所有声音,而不是麦克风等输入设备)。
答案 0 :(得分:17)
假设您在谈论Windows,基本上有三种方法可以做到这一点。
第一种是打开音频设备的主输出作为录制源。这只有在驾驶员支持它时才有可能,尽管大多数人都这样做了。虚拟设备的通用名称是“您听到的内容”或“波出”。您需要使用合适的API(请参阅MSDN中的WaveIn或DirectSound)来进行捕获。
第二种方法是编写一个过滤器驱动程序,它可以在音频流到达物理设备之前拦截它。同样,这种技术仅适用于具有合适驱动程序拓扑的设备,而且肯定不适合胆小的人。
这意味着这些选项都不能保证在具有任意硬件的PC上工作。
最后一种方法是使用虚拟音频设备,例如Virtual Audio Cable。如果此设备在Windows中设置为defualt播放设备,那么所有表现良好的应用程序都将通过它播放。然后,您可以从同一设备录制以捕获总和输出。只要您可以控制要记录的应用程序使用的设备,那么此选项将始终有效。
所有这些技巧都有其优点和缺点 - 由您决定哪种技术最适合您的需求。
答案 1 :(得分:3)
您可以使用波形音频接口,每个PInvoke有一个MSDN article如何访问它。
为了捕捉正在播放的声音,您只需打开播放设备而不是麦克风。打开输入,当然不是输出; - )
答案 2 :(得分:0)
如果您使用的是OSX,Audio Hijack Pro from Rogue Amoeba可能是最简单的方法。
无论如何,为什么不将你的音频循环回你的音频并录制?这是一个非常简单的解决方案。只需将电缆插入音频输出插孔和线路输入插孔即可开始录音。
答案 3 :(得分:0)
您必须启用设备立体声混音。如果你这样做,直接声音找到这个设备。