Howler.js在iOS上无法改变音量

4
在我的 Meteor React 应用中,我使用了一个修改版的 React Howler 来同时播放两个音轨(两个 Howler 实例)。我还实现了一个简单的淡入淡出器来同时更改两个音轨的音量,在 Chrome 和 Android 上效果很好。但是当我在 iOS 上测试时,我发现它可以正常播放音频,但音量不会改变。
奇怪的是:当我在每个时间步骤中读取当前音量时(播放器每秒更新 10 次),它在每个平台上都输出了正确的值。这意味着,在 iOS 上,音量被设置和存储正确,但你听到的声音实际上并没有改变。
以下是在我的 ReactHowler 版本中音量函数的工作方式:
get volume() {
    return this._howler.volume();
}

set volume(val) {
    if(this._howler.volume() != val){
        console.log("setting volume to " + val)
    }
    this._howler.volume(val);
}

控制台输出看起来不错,就像之前描述的那样。当横向淡入淡出值改变时,它会显示。

setting volume to 0.35
howler volume: 0.35 (this is output at every time frame for debugging purposes)
howler volume: 0.35
...

如果您在IOS上只有一个Howler实例,音量调整是否有效?可能是因为Howler或IOS不支持2个实例。 - Mikkel
不,我刚测试过了。即使只有一个实例,音量也被设置了,但音频音量仍保持在相同的水平上。有趣的是,在Chrome或Android(使用Chromium)上,音量变化是瞬间的,但在OSX上的Safari中,需要几秒钟才能在更改后实际上与之前的音量不同,而在iOS上的Safari中根本不起作用。 - Taxel
听起来Safari的音量更改是异步完成的,因此会有延迟。也许在IOS上存在某种权限问题,即您没有告诉它您想要修改音量。而且由于它是异步的,所以您不会收到错误提示? - Mikkel
这个stackoverflow问题和howler.js的github上的这个问题似乎描述了同样的问题。 - Taxel
然而,他们并未找到任何解决方案。我也没找到适用于这里的权限。 - Taxel
现在我遇到了同样的错误,只能在安卓上运行。你找到解决方案了吗? - Edwin Castañeda
1个回答

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接