Html Firefox WebAudio createMediaElementSource不工作
我将WebAudio API与Html Firefox WebAudio createMediaElementSource不工作,html,firefox,html5-audio,web-audio-api,Html,Firefox,Html5 Audio,Web Audio Api,我将WebAudio API与new Audio()对象一起用作源。下面是我正在做的事情的简化版本。但是,它在Firefox25.0.1中不会播放任何声音 var context; if(window.webkitAudioContext) { context = new webkitAudioContext(); } else { context = new AudioContext(); } var audio = new Audio(); // This file doe
new Audio()
对象一起用作源。下面是我正在做的事情的简化版本。但是,它在Firefox25.0.1中不会播放任何声音
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();
}
var上下文;
if(window.webkitAudioContext){
context=新的webkitAudioContext();
}否则{
上下文=新的AudioContext();
}
var audio=新音频();
//此文件似乎有CORS头
audio.src=”http://upload.wikimedia.org/wikipedia/en/4/45/ACDC_-_Back_In_Black-sample.ogg";
var源;
函数onCanPlay(){
log(“可调用的播放”);
source=context.createMediaElementSource(音频);
source.connect(context.destination);
audio.removeEventListener(“canplay”,onCanPlay);
音频播放();
}
如果(audio.readyState<3){
audio.addEventListener(“canplay”,onCanPlay);
}否则{
onCanPlay();
}
jsFiddle:
我在另一篇文章中读到,createMediaElementSource
需要CORS。上面示例中的文件似乎具有访问控制允许源代码:
,但在firefox中仍然不起作用。如果我使用本地音频文件在本地运行相同的示例,那么一切都正常
不确定这是一个bug还是我做错了什么。感谢您的帮助。原因如下:
我在Firefox(如第一项所述)和Chrome 45.0.2454.101m上进行了测试,它们运行良好,因此我在JSFIDLE上进行了更新:
7bJUU
这在我看来像是Firefox的bug。CORS头肯定在那里,代码都是正确的。这看起来确实像一个bug。嗯,我想你可以使用AJAX作为权宜之计,因为OGG文件有一个CORS头。祝你好运。@Kevin你有关于这方面的例子吗。那么这将如何运作呢?我们通过ajax加载文件,然后将其压缩到缓冲源中???@vekah我认为您可以将自己添加到bugzilla页面上的cc列表中。作为一种解决方法,您可以在同一个域上设置代理,因为据我检查,此错误不会影响来自同一来源的文件。请注意,您也可以直接在音频元素上使用crossorigin
属性,如
。