捕获本地扬声器设备/麦克风的pcm数据,方案还是很多的,而且也比较简单,这个就直接上代码,有不懂的可以私信,相互交流
#include <mmdeviceapi.h>
#include <Audioclient.h>
#include <stdio.h>
#include <mmsystem.h>int main(int argc, char* argv[])
{
IMMDeviceEnumerator *pMMDeviceEnumerator = NULL;
IAudioCaptureClient *pAudioCaptureClient = NULL;
IAudioClient *pAudioClient = NULL;
WAVEFORMATEX *pwfx = NULL;
IMMDevice* pDevice = NULL;
BYTE *pData(NULL);
DWORD dwFlags(0);FILE *fp = fopen("test.pcm", "wb+");
if (!fp)
return -1;//使用COM库,必须调用CoInitialize/CoInitializeEx
CoInitialize(NULL);
//获取枚举音频设备的对象
HRESULT hr = CoCreateInstance(
__uuidof(MMDeviceEnumerator), NULL, CLSCTX_ALL,
__uuidof(IMMDeviceEnumerator),
(void**)&pMMDeviceEnumerator);
if (FAILED(hr)) return -1;
//获取默认的扬声器设备 eRender:播放设备 eCapture:麦克风设备//hr = pMMDeviceEnumerator->GetDefaultAudioEndpoint(eCapture, eConsole, &pDevice);
hr = pMMDeviceEnumerator->GetDefaultAudioEndpoint(eRender, eConsole, &pDevice);
pMMDeviceEnumerator->Release();
if (FA