audio - DirectShow 从麦克风 + 立体声混音中捕捉声音

标签 audio filter directshow capture microphone

我正在尝试编写一些代码来使用 DirectShow 过滤器捕获麦克风和立体声混音。首先,我尝试使用 Windows SDK 中的 GraphEdit 设置过滤器。我将捕获设备设置为麦克风和立体声混音,然后将两者的捕获引脚连接到 AVI Mux 的 Input 01 和 Input 02,然后将 AVI Out 引脚连接到 File Writer 的 in 引脚。当我运行图表时,我得到

This graph can't play. Unspecified error (Return code : 0x80004005)



我已经搜索了很多这个错误,但似乎找不到答案。

如果我尝试将它们分别连接到每个 WAV Dest 过滤器,我会收到相同的错误。出于某种原因,我无法理解,它不会让我同时捕获两者。当我从麦克风中捕捉时,立体声混音是模拟麦克风吗?

如果我尝试一次从它们中捕获一个,它会起作用,但我需要同时从两者中捕获。如果我将麦克风设置为输出到扬声器,那么我可以同时录制它们,但这并没有真正帮助我,因为用户可以在扬声器中听到自己的声音,这确实会分散注意力。

我也尝试并成功地使用 WASAPI 记录回送,但我需要一些向后兼容性,因为使用 WASAPI 记录回送仅适用于 Vista 或 Windows 7。

我查看了 PortAudioFFmpeg但我不能让程序变得比现在更复杂。我该怎么办?

最佳答案

我做了一些进一步的研究。显然,这是一个非常棘手的情况。我没有找到有关 DirectShow 过滤器的答案。

某些计算机没有支持 StereoMix 的声卡。唯一适用于 Windows XP 的解决方案是使用 Windows DDK 创建虚拟音频驱动程序,将其设置为默认设备,将缓冲区传递给真实音频设备(不妨碍音频输出)和我的应用程序。

同时,我可以使用 DirectShow 过滤器从麦克风中捕获音频。

以下是 Microsoft 关于音频驱动程序的文档:http://msdn.microsoft.com/en-us/library/windows/hardware/ff537871%28v=vs.85%29.aspx

我对这些事情不是很了解。我希望这可以帮助任何遇到相同情况的人。如果有人有任何其他建议,请告诉我。

关于audio - DirectShow 从麦克风 + 立体声混音中捕捉声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14373495/

相关文章:

mysql - Laravel - Eloquent 子查询过滤行

javascript - 如何在没有另一个数组javascript的情况下过滤一个数组

c++ - 多个 DirectShow 缓冲区如何工作?

javascript - 请帮助!:为什么我的JavaScript中没有音频?

ios - 如何在 iOS 上录制对话/电话?

audio - El Capitan-禁用 csrutil

python - PlaySound仅播放默认的 “SystemAsterisk”声音(Windows 10,C++,Python)

c++ - 传递给 IMediaFilter::Run 的偏移参数

http - 在 DirectShow 中直播 H.264

audio - 更改默认的DirectSound音频渲染器缓冲区大小