0

假设以下音频元素

<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”,以便“音频”对象可以确定它可以播放哪个?

4

3 回答 3

1

等效于 JS 中的任何标签createElementsetAttribute.

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);
于 2013-09-17T09:18:02.450 回答
1

使用 audio|video.canPlayType(type)

例子 :

var canPlayMpeg = audio.canPlayType("audio/mpeg");

您还可以使用诸如buzz.js http://buzz.jaysalvat.com之类的库

于 2013-09-17T09:18:06.190 回答
1

Javascript 类不支持回退,因此您有两种选择:

  1. 检查客户端是否可以播放某种编解码器并创建 Audio依赖支持。
  2. 创建 DOM 元素并将它们注入页面。

检查是否支持编码;

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);
于 2013-09-17T09:21:49.613 回答