gpt4 book ai didi

c# - 获取音频混合器中可视化的单个 Windows 应用程序当前音量输出级别

转载 作者:太空狗 更新时间:2023-10-29 22:09:17 25 4
gpt4 key购买 nike

我正在尝试编写一个 C# 代码,从每个访问声音输出的 Windows 应用程序输出当前音频输出电平(如音量混合器不断变化的绿色条所示)。

程序将每 10 毫秒检查一次,并输出如下内容:Windows Media Player:30,Mozilla Firefox:0,Adobe Flash Player:35(如图所示)

我正在使用 Windows 7,并在 C# 中尝试(因为 Java 无法实现)。

我找到了为正在运行的应用程序获取和设置主音量(对于 Windows Media Player 显示 65% 的 handle 栏)的方法,有没有办法获取绿色波动级别数据?

谢谢!

Audio Mixer

最佳答案

您可以使用 CSCore .CoreAudioAPI-Audiosessions 有一个包装器。使用类似的东西(有关更多详细信息,请查看单元测试:AudioSession-UnitTests):

private static void Main(string[] args)
{
using (var sessionManager = GetDefaultAudioSessionManager2(DataFlow.Render))
{
using (var sessionEnumerator = sessionManager.GetSessionEnumerator())
{
foreach (var session in sessionEnumerator)
{
using (var audioMeterInformation = session.QueryInterface<AudioMeterInformation>())
{
Console.WriteLine(audioMeterInformation.GetPeakValue());
}
}
}
}

Console.ReadKey();
}

private static AudioSessionManager2 GetDefaultAudioSessionManager2(DataFlow dataFlow)
{
using (var enumerator = new MMDeviceEnumerator())
{
using (var device = enumerator.GetDefaultAudioEndpoint(dataFlow, Role.Multimedia))
{
Debug.WriteLine("DefaultDevice: " + device.FriendlyName);
var sessionManager = AudioSessionManager2.FromMMDevice(device);
return sessionManager;
}
}
}

要控制应用程序量,请查看单元测试 here .

关于c# - 获取音频混合器中可视化的单个 Windows 应用程序当前音量输出级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21200825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com