【发布时间】:2018-09-12 07:40:53
【问题描述】:
我正在使用以下代码播放声音文件:
var audio = new Audio();
audio.src = 'somePath/filename.ogg';
audio.volume = 10;
audio.autoPlay = false;
audio.preLoad = true;
// ...
audio.play();
而且效果很好。但是,有些浏览器可能不支持 ogg 格式,所以我也想添加 mp3 格式作为替代。我怎么能用 javascript 做到这一点呢?
作为参考,当您提供多种格式时,这就是纯 HTML5 中的外观:
<audio volume="10" preload="auto">
<source src="filename.ogg" type="audio/ogg">
<source src="filename.mp3" type="audio/mpeg">
</audio>
所以,基本上我需要将<source> 元素添加到Audio 对象,而不是设置audio.src。我该怎么做呢? javascript中是否有类似new Source()的东西我需要在这里使用,我可以以某种方式添加到audio?
额外问题:如果浏览器不支持所提供的任何源格式,我能否以某种方式执行一些自定义代码,例如向用户打印一条消息,说他们的浏览器很糟糕? :)
【问题讨论】:
-
如果浏览器是旧的,和video标签一样,你可以使用“Your browser does not support the audio element”。 .只需在来源下添加该行
-
new Audio(src)真的只是Object.assign(document.createElement('audio'), {src:src, autoplay:true});。所以不,没有 Source 构造函数,但基本的 DOM 方法可以。 -
谢谢你,@Kaiido。我认为
Audio'object' 背后还有更多魔力。 -
对于不支持来源的检测,这里已经介绍过:stackoverflow.com/questions/32430280/…
标签: javascript html html5-audio