是否有可能在IOS上控制HTML5音频音量



我使用html5音频库Buzz为浏览器游戏添加声音。有一个切换按钮可以静音和取消静音,这在台式机和 Android 设备上效果很好。不幸的是,IOS上的音频标签似乎非常有限,因此我无法在移动Safari中将音频静音(请参阅 https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/Introduction/Introduction.html):

在 iOS 设备上,音频电平始终在用户的物理控制之下。Volume 属性在 JavaScript 中不可设置。读取 volume 属性始终返回 1。

您知道在移动 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 音频 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();
}

最新更新