DOM Audio
一般的浏览器都支持 Audio 标签的方式播放音频。引擎内的 DOM Audio 模式通过创建 Audio 标签来播放一系列的声音。但是在某些浏览器上可能会出现下列情况:
部分移动浏览器内,Audio 的回调缺失,会导致加载时间偏长的问题。所以我们尽量推荐使用 WebAudio。
iOS 系统上的浏览器,必须是用户主动操作的事件触发函数内,才能够播放这类型的音频。使用 javascript 主动播放可能会被忽略。
WebAudio
WebAudio 的兼容性比 DOM 模式好了不少,不过也有一些特殊情况:
iOS 系统上的浏览器,默认 WebAudio 时间轴是不会前进的,只有在用户第一次触摸并播放音频之后,时间轴才会启动。也就是说页面启动并播放背景音乐可能做不到。最好的处理方式就是引导用户点击屏幕,然后播放声音。
---------------------------------------------上面的是官方文档的介绍--------------------------------------------------
进入正题,目前在做web端时候遇到一个问题,在ios的设备上,如果用户把静音键打开了,那这个时候播放音频的话,如果是webAudio是没有声音的(在播没有出错可以正常结束)如果是domAudio的话就是正常的播放,有声音。
看了一下audio相关的代码发现dom模式的话 引擎是去创建了一个audio标签来播放音频的,而web模式则是利用AudioContext来播放的
所以目前有个疑问,为什么web模式下在静音状态不能正常发声呢,而dom就可以正常播放,是因为AudioContext本身的设计就是这样么,原理又是什么?
希望了解相关知识的大佬解释下,感谢