【发布时间】:2013-06-05 13:03:45
【问题描述】:
我正在尝试播放带有 HTML5 音频的 mp3 广播流广播电台。
我认为这无关紧要,但这里是代码:
var player = new Audio();
player.autobuffer = true;
player.src = "http://173.192.48.71:9048/;";
player.volume = 1;
player.play();
Shoutcast 检测到请求来自浏览器并返回广播状态页面,所以我输入“;”在流的末尾强制服务器返回音频流而不是状态页面。这适用于 Chrome 和 Safari,但不适用于 Firefox。
Firefox 出于某种原因将此检测为文本/纯文本内容并拒绝播放它并出现此错误:
HTTP "Content-Type" of "text/plain" is not supported.
Load of media resource http://173.192.48.71:9048/; failed.
我使用 Fiddler 检查从广播服务器发送的内容,它清楚地指出“内容类型:音频/mpeg”。有什么方法可以强制 Firefox 播放带有 HTML5 音频的直播流?
【问题讨论】:
-
Firefox 通常不支持 MP3。 developer.mozilla.org/en-US/docs/HTML/Supported_media_formats你的版本可以吗?
-
@Brad MP3 本身不受支持,但它使用操作系统的编解码器。我尝试播放非 Shoutcast mp3 流并且它可以工作,但对于shoutcast 它没有。我猜 FF 认为它是 text/plain 因为 ICY 的文本元数据标头。
-
ICY-*标头不会影响任何内容。错误消息要么被误报,要么在您以某种方式加载不同 URL 的地方存在错误。 (我怀疑这是一个错误,就像你点击该服务器上的任何其他端点一样,你会得到text/html。) -
@Brad:这是 Mozilla 的最新更改,导致非标准端口上的非 http 内容 (HTTP/0.9) 被强制为
text/plaincontent-type,所以是的,ICY 标头在这里创造与众不同的世界。请参阅下面的答案。 -
@spender,
ICY在状态行...是的,这是有道理的。我指的是实际的ICY-MetaInt标头,什么不是。
标签: html audio-streaming radio shoutcast internet-radio