Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以从HTML5音频元素获取Icecast元数据?_Javascript_Html_Audio_Icecast - Fatal编程技术网

Javascript 是否可以从HTML5音频元素获取Icecast元数据?

Javascript 是否可以从HTML5音频元素获取Icecast元数据?,javascript,html,audio,icecast,Javascript,Html,Audio,Icecast,我正在使用audio元素从icecast服务器流式传输ogg源。音频元素是否提取冰冷的元数据,是否有办法通过javascript访问它 基本上,我想显示我正在播放的电台的“当前播放”信息。我有什么选择 谢谢 不,您的HTML5元素只知道流数据,甚至没有发出获取元数据的适当请求 见以下帖子: 无论如何,这不是不可能的。你只需要在服务器端完成。(请特别参阅第二个链接。) 我还应该指出,在成熟的SHOUTcast服务器上(尚未使用Icecast进行测试,但值得一试)生成“7.html”,其中

我正在使用audio元素从icecast服务器流式传输ogg源。音频元素是否提取冰冷的元数据,是否有办法通过javascript访问它

基本上,我想显示我正在播放的电台的“当前播放”信息。我有什么选择


谢谢

不,您的HTML5元素只知道流数据,甚至没有发出获取元数据的适当请求

见以下帖子:

无论如何,这不是不可能的。你只需要在服务器端完成。(请特别参阅第二个链接。)

我还应该指出,在成熟的SHOUTcast服务器上(尚未使用Icecast进行测试,但值得一试)生成“7.html”,其中包含以逗号分隔的值表示的侦听器数量、最大侦听器、峰值侦听器、立体声/单声道、比特率和当前曲目名称的数据。像这样:

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论坛