假设以下音频元素
<audio controls>
<source src="horse.ogg" type="audio/ogg">
<source src="horse.mp3" type="audio/mpeg">
</audio>
现在我想用javascript做同样的事情
var audio new Audio( 'horse.mp3' ) ;
所以问题是我怎样才能提供'ogg'所以'audio'对象可以决定它可以播放哪个?
答案 0 :(得分:1)
相当于createElement
和setAttribute
中的JS中的任何标记。
var audio = document.createElement('audio');
audio.setAttribute('controls', 'controls');
var ogg = document.createElement('source');
ogg.setAttribute('src', 'horse.ogg');
ogg.setAttribute('type', 'audio/ogg');
var mp3 = document.createElement('source');
mp3.setAttribute('src', 'horse.mp3');
mp3.setAttribute('type', 'audio/mp3');
audio.appendChild(ogg);
audio.appendChild(mp3);
答案 1 :(得分:1)
使用audio | video.canPlayType(type)
示例:
var canPlayMpeg = audio.canPlayType("audio/mpeg");
你也可以使用像buzz.js http://buzz.jaysalvat.com
这样的lib答案 2 :(得分:1)
Javascript类不支持回退,因此您有两个选择:
Audio
取决于支持。检查是否支持编码;
var audio = new Audio();
if (audio.canPlayType("audio/ogg; codecs=vorbis")) {
audio = new Audio("file.ogg");
} else ...
DOM注入;
var el = document.createElement('audio');
el.innerHTML = '<source src="file.ogg" type="audio/ogg" /><source src="file.mp3" type="audio/mp3" />';
document.body.appendChild(el);