c# - 是否可以使用 .net 检测来自 Windows 桌面应用程序的音频?

标签 c# .net windows audio desktop-application

我是一名新手 C# 编码器,作为我学习过程的一部分,我想构建一个桌面 Windows 应用程序。该应用程序主要检测某个应用程序(网络浏览器、iTunes、VLC 等)当前是否正在播放音频。如果另一个正在运行的应用程序同时开始播放音频,我希望制作的应用程序会自动暂时降低其中一个应用程序的音量。当第二个应用程序的音频停止播放音频时,音频将恢复到其原始水平。

例如:

  • 我在 iTunes 中播放音乐
  • 我开始在 Chrome 中观看 YouTube 视频
  • iTunes 降低音量(音乐继续以较低的音量播放)
  • 我看完了 YouTube 视频
  • iTunes 恢复到原来的音量


  • 我不确定是否可以构建此应用程序,因为它可能需要深度操作系统集成。我搜索了“.net 检测音频”,但一无所获。它可能超出了 .net 的限制。

    该应用程序还需要 .net 能够逐个应用程序调整音频级别以及检测它!

    这是我关于 Stack Overflow 的第一个问题。我已经有这个想法好几年了,直到最近才开始学习编码。我很想把这个应用程序制作成一个作品集,并将它作为免费软件在线发布!

    先感谢您。

    最佳答案

    github上有一个项目名称CScore

    您可以按如下方式应用代码:

       using System;
       using CSCore.CoreAudioAPI;
    
      namespace AudioDetector
    {
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(IsAudioPlaying(GetDefaultRenderDevice()));
            Console.ReadLine();
        }
    
        public static MMDevice GetDefaultRenderDevice()
        {
            using (var enumerator = new MMDeviceEnumerator())
            {
                return enumerator.GetDefaultAudioEndpoint(DataFlow.Render, Role.Console);
            }
        }
    
        public static bool IsAudioPlaying(MMDevice device)
        {
            using (var meter = AudioMeterInformation.FromDevice(device))
            {
                return meter.PeakValue > 0;
            }
        }
    }
    }
    

    这将在播放音频时通知您,

    Sourece

    关于c# - 是否可以使用 .net 检测来自 Windows 桌面应用程序的音频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49310613/

    相关文章:

    python - 在没有提升权限的情况下调用二进制文件

    java - JAR 文件在 Linux 上按预期工作,在 Windows 上抛出异常

    c++ - Win32 相当于 getuid()

    c# - Scintilla .NET - 找不到库

    c# - 级数计算

    c# - Monogame 模板在启动时崩溃并出现 System.TypeInitializationException

    c# - 如何在无人值守模式下截取网站截图?

    .net - 如何正确处理ThreadInterruptedException?

    .net - .NET XmlSerializer 类可以将 InnerXml 反序列化为字符串吗?

    .net - XML 序列化继承类时出现 InvalidOperationException