在Windows Vista及更高版本中,可以使用MMDevice Api获取主音量:
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);
pMeter -> GetPeakValue(&peak); // I need this value
但是如何在Windows XP上获取此信息?
答案 0 :(得分:1)
来自MSDN,Peak Meters:
如果音频端点设备在硬件中实现峰值仪表,则IAudioMeterInformation接口使用硬件峰值仪表。否则,接口在软件中实现峰值仪表。
在Vista之前,设备或KMixer(WASAPI的前身用于内部音频混合)没有硬件峰值计量。没有软件回退实现来提供计量数据。所以你只是没有数据,你无法获得它。
如果您有要发送到播放的数据,则可能需要对此数据Feed实施软件计量。