当前位置: 首页 > news >正文

vc++在Windows中查找扬声器输出的当前音量级别

我正在尝试编写一种音频可视化工具,我需要获取当前发送到扬声器的声音音量。我需要声音的实际音量,而不仅仅是设备的主音量。我一直在尝试使用this来实现它,但我不确定如何实现它。调用了IAudioCaptureClient::GetBuffer()方法之后,我不知道如何使用生成的数据包来查找所需的内容。音频为2声道,每个采样32位。任何帮助都将不胜感激

#include <Windows.h>
#include <stdio.h>
#include <mmeapi.h>
#include <mmdeviceapi.h> 
#include <endpointvolume.h>
#include <audioclient.h>#pragma comment(lib,"Winmm.lib")bool GetVolumeLevel()
{HRESULT hr;IMMDeviceEnumerator* pDeviceEnumerator = 0;IMMDevice* pDevice = 0;IAudioEndpointVolume* pAudioEndpointVolume = 0;try {hr = CoCreateInstance(__uuidof(MMDeviceEnumerator), NULL, CLSCTX_ALL, __uuidof(IMMDeviceEnumerator), (void**)&pDeviceEnumerator);if (FAILED(hr)) throw "CoCreateInstance";hr = pDeviceEnumerator->GetDefaultAudioEndpoint(eRender, eMultimedia, &pDevice);if (FAILED(hr)) throw "GetDefaultAudioEndpoint";hr = pDevice->Activate(__uuidof(IAudioEndpointVolume), CLSCTX_ALL, NULL, (void**)&pAudioEndpointVolume);if (FAILED(hr)) throw "pDevice->Active";float fVolume;hr = pAudioEndpointVolume->GetMasterVolumeLevelScalar(&fVolume);printf("%lf", fVolume);if (FAILED(hr)) throw "SetMasterVolumeLevelScalar";pAudioEndpointVolume->Release();pDevice->Release();pDeviceEnumerator->Release();return true;}catch (...) {if (pAudioEndpointVolume) pAudioEndpointVolume->Release();if (pDevice) pDevice->Release();if (pDeviceEnumerator) pDeviceEnumerator->Release();throw;}return false;
}int main()
{CoInitialize(0);try {GetVolumeLevel();}catch (...) {//err handle..}CoUninitialize();getchar();return 0;
}

相关文章:

  • 理解 Redis 事务-20 (MULTI、EXEC、DISCARD)
  • C++ 反向迭代器(Reverse Iterator)实现详解
  • PyQt5高效布局指南:QTabWidget与QStackedWidget实战解析
  • Spark 中,创建 DataFrame 的方式(Scala语言)
  • Cesium中根据不同条件设置3D Tiles样式
  • 从零开始建立个人品牌并验证定位变现性的方法论——基于开源AI大模型、AI智能名片与S2B2C商城生态的实证研究
  • Github 2025-05-24 Rust开源项目日报 Top10
  • 解决Docker容器内yum: not found、apt: not found、apk: command not found等命令找不到问题
  • 在Mac中使用pyenv管理Python版本:从安装到虚拟环境的全流程指南
  • 大模型剪枝主流技术方案
  • 【KWDB 创作者计划】KWDB单机性能测试:从零开始的详细教程
  • 《Fastjson 与 Jackson 哪个更快?从序列化原理到实战性能对比》
  • python使用pycharm和conda 设置默认使用清华镜像
  • 人脸美颜磨皮祛痘3:深度学习SUNet神经网络实现图片修复(含训练代码、数据集和GUI交互界面)
  • 【深度学习新浪潮】什么是MCP?
  • 2025年ESWA SCI1区TOP,离散人工蜂群算法+多农场多除草机器人任务分配,深度解析+性能实测
  • 织梦dedecms登录后台出现Safe Alert Request Error step 2
  • Android Studio 连接夜神模拟器 自动断开的问题
  • 基于PLC和触摸屏的蔬菜热泵干燥装置电控系统
  • rce命令执行原理及靶场实战(详细)
  • 可以做宣传的网站/企业seo整站优化方案
  • 重庆网站建设找重庆万为/软件开发培训
  • 路由器做映射后 内网可以访问到我的网站 但是外网无法访问/宜昌网站建设公司
  • 济南专业的网站建设公司/软件开发需要多少资金
  • 经典重庆论坛/百度seo关键词排名优化软件
  • 网站强制字体wordpress/网站建设公司苏州