【问题标题】:Is it possible to get Icecast metadata from HTML5 audio element?是否可以从 HTML5 音频元素中获取 Icecast 元数据?
【发布时间】:2011-09-01 05:06:56
【问题描述】:

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

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

谢谢!

【问题讨论】:

    标签: javascript html audio icecast


    【解决方案1】:

    如果是 Ogg 容器流(Vorbis 和 Opus 都是如此),至少 Firefox 支持 javascript 访问元数据。这目前只是“供应商特定”的 Javascript API:audio.mozGetMetadata();

    另一方面,如果您使用 Icecast 2.4.1,您可以通过 JSON API 独立访问元数据。其他 cmets 中指出的缺乏同步也适用。不过,它通常“足够接近”。

    【讨论】:

      【解决方案2】:

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

      查看这些帖子:

      现在,这无论如何都不是不可能的。您只需要在服务器端进行即可。 (特别是第二个链接。)

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

      2,1,33,625,2,128,J Mascis - Not Enough

      如果你能获取到http://yourstreamingserver:port/7.html,那么你可以很容易地得到这个数据。

      【讨论】:

      • 一个问题是实时显示歌曲名称与音频流同步,这不可能从shoutcast服务器(7.html)读取,只能实时读取嵌入在音频中的元信息溪流。我很乐意使用 javascript/html5 阅读元数据
      • @JoseNobile,不幸的是,你别无选择......至少如果你想要兼容性的话。您可以使用其中一种浏览器实现的编解码器并将一些标头添加到您的流中以支持 CORS,然后处理纯 JS 编解码器的开销。这对大多数人来说是不可行的。还要记住,由于 SHOUTcast 样式元数据的性质,它无论如何都不是完全同步的。您还可以使用长轮询 AJAX(如 Socket.IO)在服务器端做一些事情。
      • 由于协议、域和端口的限制,无法使用 AJAX 获取流。 Shoutcast 服务器无法将自定义标头添加为 Access-Control-Allow-Origin:*(使用 CORS)我将功能请求发送到 Google Chrome 论坛productforums.google.com/forum/#!category-topic/chrome/…
      猜你喜欢
      • 1970-01-01
      • 2013-11-17
      • 1970-01-01
      • 2017-01-27
      • 2013-05-02
      • 2016-04-09
      • 2011-04-10
      • 2011-12-24
      • 1970-01-01
      相关资源
      最近更新 更多