如何从Wave Out捕获PCM数据

如何以编程方式捕捉audio? 我正在实现一个应用程序,实时在networking上的桌面stream。 video部分完成。 我需要实现audio部分。 我需要一种方法来从声卡获取PCM数据,并将其提供给我的编码器(使用Windows Media格式实现)。

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

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

提前致谢。

我不认为有一个直接的方式来使用操作系统 – 这是一个功能,可能(或可能不)在声卡上。 一些声卡有一个回送界面 – Creative称之为“What U Hear”。 您只需将其选为输入而不是麦克风,然后使用您已知的正常waveInOpen()进行记录。

如果声卡没有这个功能,那么我觉得你运气不好,除了像做自己的驱动程序那样疯狂。 或者你可以说服你的用户从扬声器的输出线路输入:)

新的Windows Vista核心音频API有明确的支持(称为Loopback Recording),所以如果你只能使用Vista的应用程序,这是一条路。

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