C# 中的静音麦克风
Muting Microphone in C#
我目前正在尝试用 C# 编写一个程序,使麦克风静音和取消静音以模拟口吃效果。
我试过使用谷歌搜索,但我只能找到一些已有 10 年历史的条目。
我尝试使用 MediaCommands
,然后使用 MicrophoneVolumeMute
,但无法正常工作。
提前致谢
有许多用纯 C# 编写的开源项目可以完成这项工作。例如,您可以查看 https://github.com/DanielGilbert/dgMicMute. Unfortunately it's not that easy anymore to globally toggle microphones since Win7. For this reason, the required code is quite substantial. As starting point you can read DgMic.cs.
如果我们考虑使用外部库,事情就会变得容易得多。这是一些适用于 NAudio:
的代码
using var enumerator = new NAudio.CoreAudioApi.MMDeviceEnumerator();
var commDevice = enumerator.GetDefaultAudioEndpoint(DataFlow.Capture, Role.Communications);
commDevice.AudioEndpointVolume.Mute = true; //or false
要完成这项工作,您必须添加对 NAudio NuGet package 的引用。
我目前正在尝试用 C# 编写一个程序,使麦克风静音和取消静音以模拟口吃效果。
我试过使用谷歌搜索,但我只能找到一些已有 10 年历史的条目。
我尝试使用 MediaCommands
,然后使用 MicrophoneVolumeMute
,但无法正常工作。
提前致谢
有许多用纯 C# 编写的开源项目可以完成这项工作。例如,您可以查看 https://github.com/DanielGilbert/dgMicMute. Unfortunately it's not that easy anymore to globally toggle microphones since Win7. For this reason, the required code is quite substantial. As starting point you can read DgMic.cs.
如果我们考虑使用外部库,事情就会变得容易得多。这是一些适用于 NAudio:
的代码using var enumerator = new NAudio.CoreAudioApi.MMDeviceEnumerator();
var commDevice = enumerator.GetDefaultAudioEndpoint(DataFlow.Capture, Role.Communications);
commDevice.AudioEndpointVolume.Mute = true; //or false
要完成这项工作,您必须添加对 NAudio NuGet package 的引用。