开发者

How do I figure out if Windows is currently playing any sounds?

How can I figure out if 开发者_Go百科Windows is currently playing any sounds through the primary audio device? I need to know, so that I can make my program automatically adjust its volume.


You could use CSCore.
Download it right here -> http://cscore.codeplex.com/

Paste these lines on a console project.

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;
            }
        }
    }
}

Play a music be it on YouTube, Music Player, etc...
Run the program.
It automatically notifies(true/false) if there is an audio currently being played or not.


You may need to mess around with mixer controls.

Mixer Control

These may help ya out too.

Measure speaker volume by recording playing sound with microphone

Using p/invoke and win-api to monitor audio line-in (C#)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜