在 Windows 7 上静音麦克风

Posted

技术标签:

【中文标题】在 Windows 7 上静音麦克风【英文标题】:Mute microphone on Windows 7 【发布时间】:2012-03-22 12:08:35 【问题描述】:

我在将 Windows 7 机器上的麦克风静音时遇到问题。但是我发现的所有代码都没有运行,或者运行时它没有做任何事情。是否已为使用 C# 代码的 Windows 7 机器完成。我只需要一个开/关解决方案。 DDL 文件也适用于 Win x64bit。但我认为我在另一个地方造成了错误。

        mixers.Recording.Lines.GetMixerFirstLineByComponentType(
                     MIXERLINE_COMPONENTTYPE.SRC_MICROPHONE).Volume = 0;
            if (!mediaElement1.CheckAccess()) mediaElement1.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, (Action)delegate  mediaElement1.Play(); );


            if (MessageBox.Show("Incoming Call from: " + string.Format(e.RemoteParticipant), "Video Chat Call", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
            
                mixers.Recording.Lines.GetMixerFirstLineByComponentType(
                             MIXERLINE_COMPONENTTYPE.SRC_MICROPHONE).Volume = 1;
                if (!mediaElement1.CheckAccess()) mediaElement1.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, (Action)delegate  mediaElement1.Stop(); );
                _currentConversation.StartVideo();

            '

如果if (MessageBox.Show("Incoming Call from: " + string.Format(e.RemoteParticipant), "Video Chat Call", MessageBoxButton.YesNo) == MessageBoxResult.Yes) 发生错误并显示“算术运算导致溢出。”

【问题讨论】:

什么是e.RemoteParticipant?如果您将该 string.Format 放在它自己的行上并将其保存到变量中,该错误是否会发生在该行上?实际上我没有看到只接受一个参数的string.Format 的重载,那是扩展方法吗? 可能重复***.com/a/3046715/285594 【参考方案1】:

http://www.computercabal.com/2010/11/mute-microphone-from-c-on-windows.html -- 这位先生似乎遇到了类似的问题,他提供了解决方案的源代码。

【讨论】:

【参考方案2】:

您可以使用音频切换器 API https://www.nuget.org/packages/Audioswitcher.AudioApi.CoreAudio/4.0.0-alpha5

代码很简单:

private async void btnMute_ButtonClick(object sender, EventArgs e)

    var audioController = new CoreAudioController();
    var devices = await audioController.GetDevicesAsync(DeviceType.Capture, DeviceState.Active);
    var device = devices.FirstOrDefault(x => x.IsDefaultDevice);
    if(device != null) 
        await device.SetMuteAsync(!device.IsMuted);
    

【讨论】:

不错。看起来SetMuteAsync 应该是MuteAsync,或者你可以使用ToggleMute【参考方案3】:

这可能会有所帮助:Windows Mixer Control in C#

祝你好运:)。

编辑:如果我是对的,它还可以使某些设备静音。

【讨论】:

似乎对我来说更大的这个错误算术运算导致溢出。 :(

以上是关于在 Windows 7 上静音麦克风的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3:如何在使用 AVFoundation 录制视频期间将麦克风静音/取消静音

Swift AVAudioEngine - 如何使本地麦克风静音

移植到 iOS 7 的应用程序现在请求麦克风访问权限

使用 NAudio 录制音频并在麦克风输入静音时写入文件

Unity - 麦克风检查是不是静音

如何使用 Auriotouch 将麦克风的音频输入静音并仅识别设备的内部音频