我将 WebAudio API 与 new Audio() 对象用作源。以下是我正在做的事情的简化版本。然而,这不会在 firefox 25.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();
}
jsFiddle:http://jsfiddle.net/7bJUU/
我读了另一个question createMediaElementSource 需要 CORS。上面示例中的文件似乎有 Access-Control-Allow-Origin: * 但它在 firefox 中仍然不起作用。如果我使用本地音频文件在本地运行相同的示例,一切正常。
不确定这是错误还是我做错了什么。感谢您的帮助。
最佳答案
原因如下:
我在 Firefox(如第一项所述)和 Chrome 45.0.2454.101m 上进行了测试,它们运行良好,因此我在 JSFiddle 上进行了更新:https://jsfiddle.net/7bJUU/11/ 7bJUU
关于html - Firefox WebAudio createMediaElementSource 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20180550/