簡體   English   中英

有沒有可能在 IOS 上控制 HTML5 音量?

[英]Is there any possibility to control HTML5 audio volume on IOS?

我使用 html5 音頻庫Buzz為瀏覽器游戲添加聲音。 有一個用於靜音和取消靜音的切換按鈕,適用於桌面和 Android 設備。 不幸的是,iOS 上的音頻標簽似乎非常有限,因此我無法在 Mobile Safari 中靜音(請參閱https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/Introduction/Introduction. html ):

在 iOS 設備上,音頻電平始終在用戶的物理控制之下。 音量屬性在 JavaScript 中不可設置。 讀取 volume 屬性總是返回 1。

您知道在 Mobile Safari 中控制 html5 音頻標簽音量的任何解決方法嗎?

要為 iOS 添加音量更改支持而不是為此將整個應用程序從 html5 音頻重寫為 Web 音頻,您可以通過createMediaElementSource組合這些音頻解決方案。

請在 Mozilla 網站上查看更多詳細信息https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/createMediaElementSource

眾所周知,我一直認為動態音量控制和交叉淡入淡出是不可能的。 蘋果已經規定了它是這樣的。 除了.... 顯然,Kodo Games 的人(特別是 Nicola Hibbert?)已經成功了,並將代碼提供給任何人。 我剛剛在 iOS 8 上檢查過。淡入淡出和交叉淡入淡出似乎有效!

看看(新網站有效): Web Audio API 入門

似乎您可以設置muted屬性而不是更新音量值。 適用於 iOS 15

  /**
   * Set volume of sound object
   * @param volume
   */
  setVolume (volume) {
    const muted = volume === 0
    // iOS workaround when volume is 0
    this.sound.muted = muted
    this.sound.volume = volume
  }

我通過簡單地停止所有聲音並將變量isMuted設置為 true 或 false 來解決此問題,因此我可以在播放聲音的任何地方檢查這一點:

// set the variable
var isMuted = false;

// toggle audio
function toggleMute() {

    var toggleAudioBtn = $(".toggleAudio");

        if (isMuted == false) {
            sounds.stop();
            isMuted = true;
            toggleAudioBtn.css("background-image", "url('images/ui/btn_audio_mute.png')");
        } else {
            isMuted = false;
            toggleAudioBtn.css("background-image", "url('images/ui/btn_audio.png')");
        }

};

// for every sound check if sound is muted
if(isMuted == false) {
    sound.play();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM