Im使用WebAudio API和new Audio()
对象作为源。以下是我正在做的简化版本。但是,这并不会在firefox 25.0.1中播放任何声音。Firefox WebAudio createMediaElementSource不起作用
var context;
if(window.webkitAudioContext) {
context = new webkitAudioContext();
} else {
context = new AudioContext();
}
var audio = new Audio();
// This file does seem to have CORS Header
audio.src = "http://upload.wikimedia.org/wikipedia/en/4/45/ACDC_-_Back_In_Black-sample.ogg";
var source;
function onCanPlay() {
console.log("can play called");
source = context.createMediaElementSource(audio);
source.connect(context.destination);
audio.removeEventListener("canplay", onCanPlay);
audio.play();
}
if(audio.readyState < 3) {
audio.addEventListener("canplay", onCanPlay);
} else {
onCanPlay();
}
的jsfiddle:http://jsfiddle.net/7bJUU/
我在另一个question是createMediaElementSource
需要CORS读取。上面的例子中的文件似乎有Access-Control-Allow-Origin: *
,但它仍然不能在Firefox中工作。如果我本地运行与本地音频文件相同的示例,一切正常。
不知道这是一个错误,或者如果我做了一些非常错误的事情。任何帮助表示赞赏。
这看起来像一个Firefox的错误给我。 CORS头文件肯定存在,代码都是正确的。 –
这看起来像一个错误https://bugzilla.mozilla.org/show_bug.cgi?id=937718 – z33m
嗯。那么,我想你可以使用AJAX作为权宜之计,因为OGG文件有一个CORS头。祝你好运。 –