【问题标题】:Get information and mute/unmute auxiliary input devices获取信息和静音/取消静音辅助输入设备
【发布时间】:2023-03-21 21:39:01
【问题描述】:

我正在尝试找到一种方法来获取有关 Windows 设备辅助输入设备的信息,并能够单独将它们静音/取消静音。

https://i.imgur.com/iECpF9P.png

在图片中,您可以在播放设备的“级别”选项卡下看到一个“麦克风”。

我已经尝试使用 NAudio 和 WASAPI 来获取音频设备信息,但是这些辅助输入设备都没有在其中列出,而且 Playback MMDevice 的属性也没有表明它具有辅助输入设备。

我应该查看任何其他包装器或 api 以从给定的输出设备中找到辅助输入设备并随意静音/取消静音辅助输入设备?

使用 .NET Framework 4.5

【问题讨论】:

    标签: c# .net windows audio


    【解决方案1】:

    是的,我已经编写了另一个 API,它与此处的 Windows Mixer API 接口https://docs.microsoft.com/en-us/windows/win32/multimedia/audio-mixer-reference。它使用起来非常简单,我相信它也应该可以解决您的问题。您可以枚举每个设备行的所有设备和控件。此 API 中的代码也使用 Microsoft 的文档进行了记录。

    WindowsMixer API Github

    静音所有输入设备的示例;

    var deviceComponent = MixerLineInfoComponentType.Wavein;
    WindowsMixer.MuteAllDevices(deviceComponent);
    

    枚举所有输入设备的示例;

    var deviceComponent = MixerLineInfoComponentType.Wavein;
    var inputDevices = WindowsMixer.FindAllDevices(deviceComponent).ToArray();
    
    var deviceEnumeration = string.Join("\n", inputDevices.Select(i =>
         i.SourceMixerLineInfo.target.productName));
    
    Console.WriteLine(deviceEnumeration);
    

    您也可以使用它一次将单个设备静音。

    【讨论】:

    • 遗憾的是,.NET Framework 4.5 与 .NET Standard 2.0 库不兼容。无论如何,我确实尝试过检查示例,因为我可能会在以后将项目更新到 4.6.1。除此之外,虽然列表确实显示了多个音量和静音节点,但它没有指定节点的所有者名称,也没有在每个节点上单独控制,从而使特定辅助输入的特定节点静音。
    猜你喜欢
    • 2013-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 2020-08-31
    • 1970-01-01
    • 2022-10-21
    相关资源
    最近更新 更多