4

如何以编程方式捕获音频?我正在实现一个在网络上实时流式传输桌面的应用程序。视频部分完成。我需要实现音频部分。我需要一种从声卡获取 PCM 数据以馈送到我的编码器的方法(使用 Windows 媒体格式实现)。

我认为答案与 Win32 API 中的 openMixer()、waveInOpen() 函数有关,但我不确定我该怎么做。

如何打开必要的通道以及如何从中读取 PCM 数据?

提前致谢。

4

2 回答 2

7

新的 Windows Vista 核心音频 API 明确支持这一点(称为环回录制),因此如果您可以使用仅 Vista 的应用程序,那么这就是要走的路。

有关如何执行此操作的说明,请参阅 MSDN 上的Loopback Recording文章。

于 2008-09-26T14:16:54.413 回答
4

我认为没有直接的方法可以使用操作系统来做到这一点 - 这是声卡上可能(或可能不)存在的功能。一些声卡有一个环回接口——Creative 称之为“你听到什么”。您只需选择它作为输入而不是麦克风,然后使用您已经知道的普通 waveInOpen() 从中记录。

如果声卡没有此功能,那么我认为您除了做一些疯狂的事情(例如制作自己的驱动程序)之外很不走运。或者您可以说服您的用户将电缆从扬声器输出连接到线路输入:)

于 2008-09-21T19:43:16.677 回答