从流媒体源通过AudioContext路由时,音频元素无法播放

时间:2016-08-15 11:13:24

标签: javascript html html5 audiocontext

var audio = document.getElementById("audio");
audio.src = "http://SAMEDOMAIN:8000/stream.ogg"; // works with if(0)
//audio.src = "test.ogg"; // Works always
//audio.src = "http://SAMEDOMAIN/test.ogg"; // works always
console.log(audio.src);

if(1){ // vars below are defined as globals.
    audioCtx = new AudioContext();
    audioSrc = audioCtx.createMediaElementSource(audio);
    analyser = audioCtx.createAnalyser();
    audioSrc.connect(analyser);
    audioSrc.connect(audioCtx.destination);
}
audio.play();
status("Init stream.");

我不确定这是否是Firefox和Chrome的一些奇怪限制,但两者都将播放数据,当来自Icecast服务器的stream.ogg上使用AudioContext代码时,音频都会失败播放,分析仪数据都是零。但是没有AudioContext代码,它就可以正常播放。

音频元素的控件显示它正在接收数据,至少在Firefox中,mozGetMetadata()函数显示准确的音轨信息。

我最好的猜测是它似乎与它不知道完整的文件大小/轨道长度有关。

编辑:原来这是一个跨域问题,即使它是同一个域,只是一个不同的端口。它只会在使用音频上下文时影响事物。阿列克谢指出了这一点,我将它全部推到了同一个端口上,它开始工作了。如果只有浏览器会在开发控制台中报告类似的东西,那就会解决这么多麻烦。

0 个答案:

没有答案