在C#中捕获声音输出

17
我正在尝试使用C#构建一个程序,可以让我从一台计算机上流式传输音频和视频到另一台计算机,并连接到一些视听设备(投影仪、扬声器等)。理想情况下,我希望能够直接从“演示者”计算机捕获此数据,而无需插入任何设备。目前,视频流和在“输出”计算机上重新显示的功能都正常工作,但是我似乎找不到一个好的方法来捕获音频输出,而无需使用插入到耳机插孔并连接到其他计算机的电缆。整个程序的目的就是允许无线进行这样的操作,所以这是一个问题。总之,我正在寻找某种C#接口,可以让我捕捉Windows机器上的声音输出,就像我插了东西到耳机插孔一样。 谢谢您的帮助。

你能给我推荐一些关于视频流的好参考资料吗?我对你是如何进行视频流和“捕获”方面很感兴趣。 - Svetlozar Angelov
1
我使用了C#的屏幕截图API(http://www.developerfusion.com/code/4630/capture-a-screen-shot/),并将图像压缩为PNG格式,然后简单地通过网络发送原始数据。在另一端,它们被重建并绘制在一个全屏的picturebox中。看起来这可能会很慢,但我们使用的是专门用于此目的的网络,并且两端的计算机都相当强大。 - Sean James
这是正确的链接,抱歉:http://www.geekpedia.com/tutorial181_Capturing-screenshots-using-Csharp.html - Sean James
这里有一个工作示例:https://dev59.com/nWMk5IYBdhLWcg3w-Ceq - Florian
3个回答

4
在Windows中,音频卡制造商可以选择提供“你听到的”输入流,以便您捕获输出。如果您的声卡/驱动程序没有此功能,则可以尝试使用虚拟音频电缆执行相同的操作。
在Windows 7中,有一个新的功能,允许您直接收听/捕获任何输入流。

4
请问您能否提供一些关于Windows 7功能的详细信息? - kay.one
@Keivan,我可能在考虑WASAPI,更具体地说是[回送录制](http://msdn.microsoft.com/en-us/library/dd316551%28v = vs.85%29.aspx),C++示例。在C#中,我认为NAudio提供了这个功能。 - Magnus Johansson

4
如果您已经解决了视频方面的问题,NAudio是处理音频组件的好方法。
假设我们将任务分为录制和接收和播放组件,那么以下内容应该能帮助您完成每个方面;
录制: http://opensebj.blogspot.com/2009/04/naudio-tutorial-5-recording-audio.html 接收和播放: 使用C#从流中播放音频 传输方式由您决定,但如果您已经有一种在两台计算机之间发送流的方法,那么您应该能够重用它。只需确保您的缓冲区足够大,以便在接收计算机上始终有数据可供回放。

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接