首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CSCore应用音频混合器Name+Peak

CSCore应用音频混合器Name+Peak
EN

Stack Overflow用户
提问于 2014-06-02 16:50:07
回答 1查看 2.5K关注 0票数 1

我试图得到峰值(在win7的音频混频器中绿色栏的水平)的processID,例如5640-Spotify。

在因特网上搜寻一个好的图书馆。我找到了CSCore。

现在我有了这个:

代码语言:javascript
运行
复制
class Program
{
    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()*100);
                    }

                }
            }
        }

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

}
}

http://cscore.codeplex.com/的文档对我没有帮助。有人能用我的代码给我举个例子吗?我怎样才能得到这样的输出:

58,31232-进程-ID--Spotify

现在看起来是这样的:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-03 12:59:06

您可以将代码修改为类似的内容(还可以查看cscore的单元测试):

代码语言:javascript
运行
复制
class Program
{
    static void Main(string[] args)
    {
        using (var sessionManager = GetDefaultAudioSessionManager2(DataFlow.Render))
        using (var sessionEnumerator = sessionManager.GetSessionEnumerator())
        {
            foreach (var session in sessionEnumerator)
            {
                Assert.IsNotNull(session);

                using (var session2 = session.QueryInterface<AudioSessionControl2>())
                using (var audioMeterInformation = session.QueryInterface<AudioMeterInformation>())
                {   
                    Debug.WriteLine("Process: {0}; Peak: {1:P}", 
                        session2.Process == null ? String.Empty : session2.Process.MainWindowTitle,
                        audioMeterInformation.GetPeakValue()*100);
                }
            }
        }

        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;
            }
        }
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23999531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档