我需要一个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