我需要一個C++ API來枚舉輸入設備併爲Windows Vista,Windows 7和Windows 8捕獲聲音。如果沒有公共API,則可以針對不同版本的Windows使用特定於OS的API。用於在Windows上捕獲聲音的API
我在微軟網站上發現了一些參考文獻,但我不知道該選什麼。你有什麼建議?
我需要一個C++ API來枚舉輸入設備併爲Windows Vista,Windows 7和Windows 8捕獲聲音。如果沒有公共API,則可以針對不同版本的Windows使用特定於OS的API。用於在Windows上捕獲聲音的API
我在微軟網站上發現了一些參考文獻,但我不知道該選什麼。你有什麼建議?
對於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 library。
正是:
獲取錄音設備的總數目前存在:
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
嗯,這取決於你想用什麼做的: waveIn API,Core Audio API(在XP上不可用),DirectShow? – user1764961
@ user1764961我不想使用特定的東西。現在我處於「研究」階段,我需要選擇一個,但我不知道要選擇什麼。 – Felics
Steinberg的ASIO API超出或無法做到這一點。 – ChiefTwoPencils