【问题标题】:What is the maximum sound level最大声级是多少
【发布时间】:2011-12-13 10:49:05
【问题描述】:

我正在创建一个小闹钟,在启动闹钟之前必须将扬声器音量设置为最大。一切正常,但我不知道扬声器的最大值是多少。你们中有人知道或知道我在哪里可以找到它吗?

这是我设置扬声器音量的方法:

defaultDevice.AudioEndpointVolume.MasterVolumeLevel = 1;

BR

【问题讨论】:

  • 我猜最大值是 100?
  • 这与 WPF 或 .net-4.0 无关,所以我删除了这些标签。你用的是什么音频库?
  • 应该是 11。这样,如果有人把它一直调到 10,但又想大声一点,他们可以把它调到 11。/spinal Tap。
  • 当我将它设置为 1 时,它在测试计算机上工作,但是当我尝试将它设置为 3 时,它在某些计算机上崩溃,并显示值超出范围的消息。这就是为什么我想为每台计算机找到最高级别

标签: c# audio


【解决方案1】:

根据您的提示,我找到了答案。我的问题的正确答案是:

defaultDevice.AudioEndpointVolume.MasterVolumeLevel = defaultDevice.AudioEndpointVolume.VolumeRange.MaxdB;

感谢您的帮助

【讨论】:

    【解决方案2】:

    看看IAudioEndpointVolume::GetVolumeRange API。它会为您提供以分贝为单位的音量范围。

    【讨论】:

    • 嘿,我有这两个音频设备private readonly MMDeviceEnumerator devEnum = new MMDeviceEnumerator(); private readonly MMDevice defaultDevice;,但我找不到 getVolumeRange - 只有一个我不知道如何使用的 VolumeRange。你能举个例子吗?
    【解决方案3】:

    如果您使用的是IAudioEndpointVolume 接口,它有一个GetVolumeRange 方法可以获取以分贝为单位的音量范围。

    【讨论】:

    • 嘿,我有这两个音频设备private readonly MMDeviceEnumerator devEnum = new MMDeviceEnumerator(); private readonly MMDevice defaultDevice;,但我找不到 getVolumeRange - 只有一个我不知道如何使用的 VolumeRange。你能举个例子吗?
    • 您看到的是 C++ 和 C# 之间的区别。在线文档适用于 C++,它没有属性,因此使用 Get 和 Set 前缀。在 C# 中,相同的方法成为属性,因此 Get/Set 前缀对您隐藏。
    猜你喜欢
    • 1970-01-01
    • 2017-01-11
    • 2012-02-18
    • 1970-01-01
    • 2013-02-26
    • 2012-06-30
    • 2011-03-13
    • 1970-01-01
    • 2015-05-21
    相关资源
    最近更新 更多