Javascript 是否可以从HTML5音频元素获取Icecast元数据?
我正在使用audio元素从icecast服务器流式传输ogg源。音频元素是否提取冰冷的元数据,是否有办法通过javascript访问它 基本上,我想显示我正在播放的电台的“当前播放”信息。我有什么选择Javascript 是否可以从HTML5音频元素获取Icecast元数据?,javascript,html,audio,icecast,Javascript,Html,Audio,Icecast,我正在使用audio元素从icecast服务器流式传输ogg源。音频元素是否提取冰冷的元数据,是否有办法通过javascript访问它 基本上,我想显示我正在播放的电台的“当前播放”信息。我有什么选择 谢谢 不,您的HTML5元素只知道流数据,甚至没有发出获取元数据的适当请求 见以下帖子: 无论如何,这不是不可能的。你只需要在服务器端完成。(请特别参阅第二个链接。) 我还应该指出,在成熟的SHOUTcast服务器上(尚未使用Icecast进行测试,但值得一试)生成“7.html”,其中
谢谢 不,您的HTML5元素只知道流数据,甚至没有发出获取元数据的适当请求 见以下帖子:
2,1,33625,2128,J Mascis-不够
如果您可以获取
http://yourstreamingserver:port/7.html
,那么您就可以非常轻松地获取这些数据。对于Ogg容器流(因此Vorbis和Opus都支持),至少Firefox支持javascript访问元数据。这目前只是“特定于供应商”的Javascript API:audio.mozGetMetadata()代码>
另一方面,如果使用Icecast 2.4.1,则可以通过JSON API独立访问元数据。其他评论中指出的同步不足也适用。不过,它通常是“足够接近”的。一个问题是实时显示与音频流同步的歌曲名称,这不可能从shoutcast服务器(7.html)读取,只能实时读取嵌入音频流中的元信息。我很乐意使用javascript阅读元数据/html5@JoseNobile,不幸的是,你别无选择。。。如果你想要兼容性,至少不需要。您可以使用一个浏览器实现的编解码器,将一些头文件破解到流中以支持CORS,然后处理纯JS编解码器的开销。这对大多数人来说是不可行的。还要记住,由于SHOUTcast样式元数据的性质,它无论如何都不是完全同步的。您还可以使用长轮询AJAX(如Socket.IO)在服务器端执行某些操作。由于协议、域和端口的限制,使用AJAX获取流是不可能的。Shoutcast服务器无法添加自定义标题,因为访问控制允许源代码:*(使用CORS)我将功能请求发送到Google Chrome论坛