如何从Wave Out捕获PCM数据

时间:2020-03-06 14:30:42  来源:igfitidea点击:

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

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

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

提前致谢。

解决方案

我不认为有使用OS的直接方法,它是声卡上可能存在(或者可能不存在)的功能。一些声卡具有回送接口,Creative称其为" What U Hear"。我们只需选择它作为输入而不是麦克风,然后使用我们已经知道的普通waveInOpen()从中进行记录。

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

新的Windows Vista Core Audio API明确支持此功能(称为"回送记录"),因此,如果可以使用仅Vista的应用程序,则可以采用这种方法。

有关如何执行此操作的说明,请参阅MSDN上的"回送记录"文章。