用于在Windows上捕获声音的API

我需要一个C ++ API来枚举input设备,并为Windows Vista,Windows 7和Windows 8捕获声音。如果没有公共的API,我可以针对不同版本的Windows使用特定于操作系统的API。

我在微软网站上find了一些参考资料,但我不知道该选什么。 你有什么build议?

对于waveIn API,使用waveInGetNumDevs()和waveInGetDevCaps()。 Core Audio API使用IMMDeviceEnumerator。 对于DirectShow阅读: http : //msdn.microsoft.com/en-us/library/windows/desktop/dd377566( v=vs.85) .aspx

这一切都取决于其余的体系结构。 你必须对捕获的PCM做些什么,你可能知道是什么。 这应该有助于您决定使用哪种技术。

看看BASS库

它是:

  • 跨平台;
  • 有据可查 ;
  • 有很大的支持;
  • 使用方便;
  • 有很多插件;
  • 免费用于非商业用途

获取当前录制设备的总数:

int a, count=0; BASS_DEVICEINFO info; for (a=0; BASS_RecordGetDeviceInfo(a, &info); a++) if (info.flags&BASS_DEVICE_ENABLED) // device is enabled count++; // count it 

在44100hz开始录制16位立体声:

 FILE *file; ... // the recording callback BOOL CALLBACK MyRecordingWriter(HRECORD handle, void *buf, DWORD len, void *user) { fwrite(buf, 1, len, file); // write the buffer to the file return TRUE; // continue recording } ... HRECORD record=BASS_RecordStart(44100, 2, 0, MyRecordingWriter, 0); // start recording