【问题标题】:Windows 8.1 WPF application mixerSetControlDetails returns MMSYSERR_ERRORWindows 8.1 WPF 应用程序 mixSetControlDetails 返回 MMSYSERR_ERROR
【发布时间】:2015-06-19 18:14:54
【问题描述】:

编辑

修改NAudio源码并稍作调试,发现我设置Value属性时调用的mixerSetControlDetails函数返回MMSYSERR_ERROR

有没有办法进一步了解mixerSetControlDetails 失败的原因?

我也愿意通过其他方式在 C# 上完成同样的事情。

原创

我有一些代码可以计算语音中的能量并使用 NAudio 根据此计算值设置麦克风提升级别。我在阅读音频样本时没有问题,但是当我尝试设置麦克风增强时,程序卡住了。

我已经检查了 Windows 7、8 和 8.1 上的问题。该问题仅出现在 Windows 8.1 上。有趣的是,当我在装有 Windows 8.1 的虚拟机上运行该程序时,它按预期工作。这可能是权限问题吗?

这里是设置提升值的代码

foreach (MixerControl mixerControl in MixerLine.Controls)
{
    if (mixerControl.ControlType == MixerControlType.Volume)
    {
        UnsignedMixerControl volumeControl = (UnsignedMixerControl)mixerControl;

        volumeControl.Value = (uint) value;
    }
}

使用此代码预先创建 MixerLine。

MixerLine = new MixerLine((IntPtr) deviceID, 0, MixerFlags.WaveIn);

【问题讨论】:

    标签: c# wpf windows-8.1 naudio winmm


    【解决方案1】:

    似乎mixerSetControlDetails 函数随机返回MMSYSERR_ERROR(至少我找不到模式)。实际上它确实设置了新值,只是忽略异常,或者如果它没有设置尝试再次设置值。卡住的行为与我的程序有关,与此错误无关。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 2023-03-10
      • 2014-09-07
      • 2015-09-21
      • 2014-08-11
      相关资源
      最近更新 更多