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

Posted

技术标签:

【中文标题】获取音频混合器中可视化的单个 Windows 应用程序当前音量输出级别【英文标题】:Getting individual windows application current volume output level as visualized in audio Mixer 【发布时间】:2014-02-07 15:56:55 【问题描述】:

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

程序每10毫秒检查一次,输出如下:Windows Media Player: 30, Mozilla Firefox: 0, Adob​​e Flash Player: 35(如图)

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

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

谢谢!

【问题讨论】:

【参考方案1】:

您可以使用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。

【讨论】:

感谢 thefiloe 的回复。如问题中所述,获取/设置主音量(混音器图像中的滑块最大值)之前已得到解答:***.com/questions/14306048/controling-volume-mixer。我正在尝试读取混音器图像上显示的绿色值,即当前音频输出音量,它不断变化并且始终小于等于最大主音量。 对不起。没有时间阅读你的整个问题。我已经编辑了我的答案。 非常感谢,我也使用了您以前的答案:) 因为这是一种比链接答案更简单的方法。非常感谢你【参考方案2】:

这是一个示例应用程序,它在图表中显示来自正在运行的应用程序的音频电平。有两个版本,一个在 WPF 中,一个在 Windows.Forms 中。他们使用 Florian 回答中的方法来获取音频电平。

https://github.com/jeske/SoundLevelMonitor

【讨论】:

以上是关于获取音频混合器中可视化的单个 Windows 应用程序当前音量输出级别的主要内容,如果未能解决你的问题,请参考以下文章

最实用的虚拟声卡-Windows安装虚拟声卡(有效解决PR音频输入,AU录音,obs多音频原控制等问题)

最实用的虚拟声卡-Windows安装虚拟声卡(有效解决PR音频输入,AU录音,obs多音频原控制等问题)

最实用的虚拟声卡-Windows安装虚拟声卡(有效解决PR音频输入,AU录音,obs多音频原控制等问题)

最实用的虚拟声卡-Windows安装虚拟声卡(有效解决PR音频输入,AU录音,obs多音频原控制等问题)

获取系统音频流缓冲区以进行可视化

Windows Vista/7:如何对输出音频混合进行采样?