0

indicator-soundOSS4のクローンを書いています。音量の設定は正常に機能しますが、プログラムのミュート機能に問題があります。

OSS4でのミューティングに関するいくつかの事実:

  • vmixにはミュートがありません(ボリュームコントロールにはvmixを使用します)
  • また、ボリュームを制御する「メディアキー」の方法では、ミュートコントロールは設定されませんが、ボリューム=0に設定されます。

これに伴う問題は、vmixボリュームを読み取ってゼロに遭遇したときに、ユーザーが実際にゼロに設定したのか、それとも他の値に設定したのにミュートがオンになっているのかがわからないことです。

OSS4のvmixに中央ミュートの概念がなく、他のボリュームコントローラーが内部でミュートを処理する場合、どのようにミュートロジックを作成する必要がありますか?

gitコード、それが役立つ場合

4

1 に答える 1

1

私はよく知らないvmixのでOSS、これはかなりずれているかもしれません...

独自のシステムに 2 つの変数を追加できます。ミュート状態を維持するためのフラグと、ミュートされていない最新の音量を維持するための値です。

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 に答える