windows声卡实时输出电平
参考:IMMDeviceEnumerator 如何获取音频设备的名称
https://blog.csdn.net/u011417605/article/details/48630677
#include <iostream>
#include <mmdeviceapi.h>
#include <endpointvolume.h>
#include <Functiondiscoverykeys_devpkey.h>//PKEY_Device_FriendlyName
int main()
{
std::cout << "Hello World!\n";
CoInitialize(NULL);
IMMDeviceEnumerator* pEnum = NULL;
IMMDevice* pDevice = NULL;
IAudioMeterInformation* pMeter = NULL;
float peak;
HRESULT hr;
hr = CoCreateInstance(__uuidof(MMDeviceEnumerator),
NULL,
CLSCTX_INPROC_SERVER,
__uuidof(IMMDeviceEnumerator),
(void**)& pEnum);
hr = pEnum->GetDefaultAudioEndpoint(eRender, eConsole, &pDevice);
pDevice->Activate(__uuidof(IAudioMeterInformation),
CLSCTX_ALL,
NULL,
(void**)& pMeter);
UINT count = 0;
pMeter->GetMeteringChannelCount(&count);
float* peaks = new float[count];
while (true)
{
pMeter->GetChannelsPeakValues(count, peaks); // I need this value
for (int i = 0 ; i < count;i++)
{
std::cout << i + 1 << ":" << peaks[i] << "," << 10*log(peaks[i]) << "db;";
}
std::cout << "\n";
Sleep(100);
}
}