c#/。NET - 录制正在播放的当前音频

时间:2017-07-27 14:52:39

标签: c# .net audio wav

c#/ .net中是否记录当前播放的音频?我在互联网上搜索了很多,但我能找到的唯一结果就是用麦克风录音。

我不想使用麦克风输入进行录制,我想在单击录制按钮时录制计算机上正在播放的内容。

由于

2 个答案:

答案 0 :(得分:2)

这里有两个选项:

  1. 硬件环回设备 - 虚拟"立体声混音"音频设备,其充当常规音频捕获设备并且同时产生通过系统的默认音频输出设备播放的混合音频馈送的副本。由于此类设备显示为真实的音频输入设备,因此您可以使用标准API,库甚至退出应用程序来从此类设备进行录制。

  2. 以编程方式访问虚拟环回设备,就好像它是类似麦克风的设备一样。后台的API将复制播放的音频内容,并使其在播放时可以回放。好消息是您可以访问您感兴趣的设备的混合音频源。

  3. 这两个选项在MSDN上的Loopback Recording文章中有详细描述,可通过标准音频API,特别是WASAPI获得。

    对于C#开发,您可能会使用像NAudio这样的包装器。

    对于选项1,您会在StackOverflow上找到很多问题,对于另一个选项,关键字是AUDCLNT_STREAMFLAGS_LOOPBACK

答案 1 :(得分:-1)

能够从另一个应用程序接收数据的唯一方法是开发人员通常通过某些SDK,API或其他方式提供访问点。如果没有这个,您的应用程序代码就无法从其他应用程序接收字节。

麦克风工作原因是因为它从应用程序接收声音输出字节并将这些声波字节发送回PC以呈现并输出声音。由于您可以从麦克风访问这些字节,因此您可以捕获声音。

查看您尝试从中获取声音的应用程序开发人员是否有API或SDK。