VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 4098|回复: 3

麦克风音量调节

[复制链接]
57_avatar_middle
最佳答案
0 
在线会员 发表于 2019-4-26 10:01:16 | 显示全部楼层 |阅读模式
3驿站币
哪位高手有写好编译好的软件,可以调节麦克风音量大小,只要可以调节到最大就行,感谢!





上一篇:无法连接客户端
下一篇:sql server 数据类型不匹配错误
77_avatar_middle
最佳答案
31 
online_vip 发表于 2019-4-26 10:47:48 | 显示全部楼层
这个应该对你有帮助:

一个利用 Windows Api 控制放音音量和录音麦克风音量实现类(C++代码)
https://blog.csdn.net/CometNet/article/details/6537631
57_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2019-5-2 19:27:51 | 显示全部楼层
顶一下,哪位大神知道或者有这个软件的
75_avatar_middle
最佳答案
0 
在线会员 发表于 2019-5-3 08:56:18 | 显示全部楼层
这只是几个API函数的调用,哪为这做一个软件。给你个例程,自己粘过去编译,人不能太懒。虽然我就比较懒。
在编译前,首先你的有麦克风插在电脑上,不插也没关系,做跟不做不一样。还有扬声器。
其次测试用的window10+vs2015,不能保证其它环境正确。没有那么多环境和精力去调试。
再次包含文件找不到,哪就没办法,那绝对是微软最新SDK里应该包含地。需要去下载平台SDK,
而能运行的就对他哼一声,证明代码编译没问题。如果没效果,就把bMute = TRUE;
放到正常的代码行编译,或许它就不会叽叽歪歪地了。
#include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <stdio.h>
#include <mmdeviceapi.h>
#include <endpointvolume.h>
#include <Functiondiscoverykeys_devpkey.h>
using namespace std;
//录制设备
void demo1() {
        cout << "\n录制设备例程\n============\n" << endl;
        IMMDevice *pDevice = NULL;
        GUID g_guidMyContext = GUID_NULL;
        CoInitialize(NULL);
        HRESULT hr = S_OK;
        hr = CoCreateGuid(&g_guidMyContext);
        IMMDeviceEnumerator *pEnumerator = NULL;
        hr = CoCreateInstance(__uuidof(MMDeviceEnumerator),
                NULL, CLSCTX_INPROC_SERVER,
                __uuidof(IMMDeviceEnumerator),
                (void**)&pEnumerator);

        cout << "枚举输入终端设备:" << endl;
        IMMDeviceCollection *pCollection = NULL;
        hr = pEnumerator->EnumAudioEndpoints(eCapture, DEVICE_STATE_ACTIVE, &pCollection);
        UINT  count;
        hr = pCollection->GetCount(&count);
        if (count < 1) {
                cout << "!!!!没有活动的输入设备!!!!!" << endl;
                pCollection->Release();
                pEnumerator->Release();
                return;
        }
        IMMDevice *pEndpoint = NULL;
        IPropertyStore *pProps = NULL;
        LPWSTR pwszID = NULL;
        for (ULONG i = 0; i < count; i++)
        {
                hr = pCollection->Item(i, &pEndpoint);
                hr = pEndpoint->GetId(&pwszID);
                hr = pEndpoint->OpenPropertyStore(STGM_READ, &pProps);
                PROPVARIANT varName;
                PropVariantInit(&varName);
                hr = pProps->GetValue(PKEY_Device_FriendlyName, &varName);
                wcout.imbue(locale("chs"));
                wcout << L"设备编号=" << i << L" 名称=" << varName.pwszVal << L" ID=" << pwszID << endl;
                CoTaskMemFree(pwszID);
                pwszID = NULL;
                PropVariantClear(&varName);
                pProps->Release();
                pEndpoint->Release();
        }
        pCollection->Release();

        //操作主输出设备
        hr = pEnumerator->GetDefaultAudioEndpoint(eCapture, eConsole, &pDevice);
        IAudioEndpointVolume*g_pEndptVol;
        hr = pDevice->Activate(__uuidof(IAudioEndpointVolume),CLSCTX_ALL, NULL, (void**)&g_pEndptVol);
        BOOL bMute;
        float fVolume;
        hr = g_pEndptVol->GetMute(&bMute);
        hr = g_pEndptVol->GetMasterVolumeLevelScalar(&fVolume);
        cout << "默认音量:" << (fVolume * 100) << "%" << endl;
        cout << "默认是否哑音:" << (bMute?"静音":"否") << endl;
        //设置音量(百分比为80)
        cout << "设置音量到:" << (fVolume * 100) << "%" << endl;
        fVolume =0.8f;
        //哑音(禁用) bMute = TRUE;
        hr = g_pEndptVol->SetMasterVolumeLevelScalar(fVolume, &g_guidMyContext);
        hr = g_pEndptVol->SetMute(bMute, &g_guidMyContext);
        pDevice->Release();
        g_pEndptVol->Release();
        pEnumerator->Release();
        CoUninitialize();
        cout << endl;
}
//播放设备
void demo2() {
        cout << "\n播放设备例程\n============\n" << endl;
        IMMDevice *pDevice = NULL;
        GUID g_guidMyContext = GUID_NULL;
        CoInitialize(NULL);
        HRESULT hr = S_OK;
        hr = CoCreateGuid(&g_guidMyContext);
        IMMDeviceEnumerator *pEnumerator = NULL;
        hr = CoCreateInstance(__uuidof(MMDeviceEnumerator),
                NULL, CLSCTX_INPROC_SERVER,
                __uuidof(IMMDeviceEnumerator),
                (void**)&pEnumerator);

        cout << "枚举输出终端设备:" << endl;
        IMMDeviceCollection *pCollection = NULL;
        hr = pEnumerator->EnumAudioEndpoints(eRender, DEVICE_STATE_ACTIVE,&pCollection);
        UINT  count;
        hr = pCollection->GetCount(&count);
        if (count < 1) {
                cout << "!!!!!没有活动的输出终端设备!!!!!" << endl;
                pCollection->Release();
                pEnumerator->Release();
                return;
        }
        IMMDevice *pEndpoint = NULL;
        IPropertyStore *pProps = NULL;
        LPWSTR pwszID = NULL;
        for (ULONG i = 0; i < count; i++)
        {
                hr = pCollection->Item(i, &pEndpoint);
                hr = pEndpoint->GetId(&pwszID);
                hr = pEndpoint->OpenPropertyStore(STGM_READ, &pProps);
                PROPVARIANT varName;
                PropVariantInit(&varName);
                hr = pProps->GetValue(PKEY_Device_FriendlyName, &varName);
                wcout.imbue(locale("chs"));
        wcout<< L"设备编号="<< i <<L" 名称="<< varName.pwszVal<<L" ID="<<pwszID<<endl;
                CoTaskMemFree(pwszID);
                pwszID = NULL;
                PropVariantClear(&varName);
                pProps->Release();
                pEndpoint->Release();
        }
        pCollection->Release();
        //操作主输出设备
        hr = pEnumerator->GetDefaultAudioEndpoint(eRender, eConsole, &pDevice);
        IAudioEndpointVolume*g_pEndptVol;
        hr = pDevice->Activate(__uuidof(IAudioEndpointVolume),
                CLSCTX_ALL, NULL, (void**)&g_pEndptVol);
        BOOL bMute;
        float fVolume;
        hr = g_pEndptVol->GetMute(&bMute);
        hr = g_pEndptVol->GetMasterVolumeLevelScalar(&fVolume);
        cout << "默认音量:" << (fVolume * 100) << "%" << endl;
        cout << "默认是否哑音:" << (bMute ? "静音" : "否") << endl;
        //设置音量(百分比)为50       
        fVolume = 0.5f;
        cout << "设置音量到:" << (fVolume*100) << "%"<< endl;
        //哑音 (禁用) bMute = TRUE;
        hr = g_pEndptVol->SetMasterVolumeLevelScalar(fVolume, &g_guidMyContext);
        hr = g_pEndptVol->SetMute(bMute, &g_guidMyContext);
        pDevice->Release();
        g_pEndptVol->Release();
        pEnumerator->Release();
        CoUninitialize();
        cout << endl;
}
int main()
{
        //终端输入设备音量控制例程
        demo1();
        //终端输出设备音量控制例程
        demo2();
        system("pause");
        return 0;
}



麦克风音量调节

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-11-29 11:43

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表