2017-07-27 162 views
0

正在播放当前正在播放的音频的c#/。net中是否有任何方法?我在互联网上搜索了很多,但我能找到的唯一结果是使用麦克风进行录制。c#/。NET - 正在播放当前正在播放的音频

我不想记录使用麦克风输入,我想记录什么是当我点击一个记录按钮时在电脑上播放。

由于

回答

-1

的唯一方法,以便能够接收从另一个应用程序的数据是如果显影剂提供了一种接入点,通常通过一些SDK,API,或其它手段。没有这个,你的应用程序代码就无法从其他应用程序接收字节。

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

查看是否存在您尝试从中获得声音的应用程序的开发人员提供的API或SDK。

+0

OP正在讨论**音频**而不是“数据”_。录制音频不需要直接访问源应用程序 – MickyD

+0

@MickyD无论音频与否都是数据的所有电子信号。它是通过电流传递的比特流。所以我相信我的术语是指音频流作为数据是有效的。 – CodeSurvivor

+0

它太笼统了,没有用处,不提示明显的解决方案,而不需要直接的API到应用程序 – MickyD

2

你这里有两种选择:

  1. 硬件回环设备 - 虚拟的“立体声混音”的音频设备,它作为一个普通的音频捕获设备,并在生产的同时发挥混合音频馈送的一个副本通过系统的默认音频输出设备。由于此类设备显示为真正的音频输入设备,因此您可以使用标准API,库和甚至退出的应用程序来从此设备进行记录。

  2. 编程访问虚拟回送设备,就好像它是类似麦克风的设备。背景上的API将重放播放的音频内容,并在播放时提供回读。好消息是,您可以访问您感兴趣的设备的混合音频提要。

这两个选项中详细Loopback Recording文章MSDN上,并通过标准的音频的API可用,具体WASAPI说明。

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

对于选项1,您会在StackOverflow上找到很多问题,而关于其他选项的关键字是AUDCLNT_STREAMFLAGS_LOOPBACK

+0

太好了,谢谢!我会玩一玩,并让你知道我如何继续。 –