0

我正在indicator-sound为 OSS4 编写一个克隆。设置音量现在可以正常工作,但我在程序的静音方面遇到了麻烦。

关于 OSS4 中静音的几个事实:

  • vmix 没有静音(我们使用 vmix 进行音量控制)
  • 此外,控制音量的“媒体键”方式不会设置静音控制,而是音量 = 0

这样做的问题是,当读取 vmix 音量并遇到零时,我们不知道用户是否实际上将其设置为零,或者将其设置为其他值,但已静音。

当OSS4的vmix中没有中央静音的概念并且其他音量控制器在内部处理静音时,我应该如何编写静音逻辑?

git代码,如果有帮助

4

1 回答 1

1

我不熟悉,vmix所以OSS这可能是一种方式......

您可以将两个变量添加到您自己的系统中:一个用于维持静音状态的标志,以及一个用于维持最近的未静音音量的值。

OnMuteEvent
    if MuteFlag //we were muted, now unmuting
        MuteFlag = False
        vmix current volume = LastVolume
    else //we were unmuted, now muting
        MuteFlag = True
        LastVolume = vmix current volume
        vmix current volume = 0

当用户打开静音时,您设置静音标志,您可以反映在您的 UI 上,并记录音量值,然后将音量设置为 0。当用户取消静音时,将音量设置回记录的值并清除旗帜。

如果您的应用程序可以在用户可能已经设置静音状态时启动,您可以按如下方式进行初始化:

if vmix.volume is 0 //might be mute!
    MuteFlag = True //assume it was due to being muted
    LastVolume = MaxVolume/2 //some sensible volume for when we unmute
于 2010-12-27T13:11:29.033 回答