我正在尝试编写一个 C# 代码,该代码从每个访问声音输出的 Windows 应用程序输出当前的音频输出级别(如音量混合器不断变化的绿色条所示)。
该程序将每 10 毫秒检查一次,并输出如下内容:Windows Media Player: 30、Mozilla Firefox: 0、Adobe Flash Player: 35(如图所示)
我正在使用 Windows 7,并在 C# 中尝试(因为 Java 无法实现这一点)。
我已经找到了获取和设置正在运行的应用程序的主音量(Windows Media Player 的手柄栏显示 65%)的方法,有没有办法获取绿色波动级别数据?
谢谢你!
您可以使用CSCore。
CoreAudioAPI-Audiosesions 有一个包装器。使用类似的东西(有关更多详细信息,请查看单元测试:音频会话单元测试):
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.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)