我使用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属性。读取volume属性始终返回1。
您知道在Mobile Safari中控制html5音频标签音量的任何解决方法吗?
这似乎是一个常见的问题 - Javascript Web Audio API AnalyserNode不起作用 - 但我不能确定我是否找到了我的实现的边缘情况.
我使用createMediaElementSource()创建音频源,但不是使用页面标记中的音频标记,而是使用Buzz.js动态创建元素.
这是我的测试设置:
window.addEventListener('load', function(e) {
audioContext = new webkitAudioContext();
audioAnalyser = audioContext.createAnalyser();
sound = new buzz.sound("sound.mp3");
sound.load().bind("canplaythrough", function(e) {
source = audioContext.createMediaElementSource(this.sound);
source.connect(audioAnalyser);
audioAnalyser.connect(audioContext.destination);
this.play().loop();
});
}, false);
window.setInterval(function(){
array = new Uint8Array(audioAnalyser.frequencyBinCount);
console.log(audioAnalyser.getByteFrequencyData(array));
})
Run Code Online (Sandbox Code Playgroud)
使用上面的代码,声音播放.我还可以附加有效的其他节点(双二阶滤波器,增益等),但audioAnalyser.getByteFrequencyData会在每一帧上返回未定义的值...
可能与使用Buzz.js有关吗?