什么是音频元素的javascript等价物

时间:2013-09-17 09:14:48

标签: javascript audio

假设以下音频元素

<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'对象可以决定它可以播放哪个?

3 个答案:

答案 0 :(得分:1)

相当于createElementsetAttribute中的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类不支持回退,因此您有两个选择:

  1. 检查客户端是否可以播放一种编解码器并创建 Audio取决于支持。
  2. 创建DOM元素并将其注入页面。
  3. 检查是否支持编码;

    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);