5

我正在为广播电台创建三星电视应用程序,他们在 Icecast 流中提供“正在播放”信息。是否有可能(以及如何)提取这些信息?

4

5 回答 5

1

Shoutcast 支持“ Icy-MetaData ”——请求标头中的附加字段。设置后,它向广播服务器发出请求,以在编码的音频流本身中以周期性间隔(每个“ icy-mettaint ”字节一次)嵌入有关流的元数据。“ icy-mettaint ” 的值由直播服务器配置决定,并作为初始回复的一部分发送给客户端。

查看关于Shoutcast Internet Radio Protocol的这篇文章,了解有关icy:metadata和 C 中的示例代码的详细信息。

http://forums.radiotoolbox.com/viewtopic.php?t=74上也提供了更多技术性讨论

于 2013-02-19T09:07:35.180 回答
0

是的,这是可能的。元数据以指定的间隔交织到流数据中。基本上,您读取 8192 字节(或响应标头指定的任何内容Icy-MetaInt),然后读取元数据块。

该元数据块的第一个字节告诉您数据的长度。长度为 0 表示没有更新的元数据。

读取元块后,您将返回读取流数据。

我在这里的答案中有所有这些更详细的信息: https ://stackoverflow.com/a/4914538/362536 虽然我知道您不是在编写 PHP,但无论哪种语言,主体都是相同的。

于 2012-09-13T19:49:52.417 回答
0

我刚刚为 icecast 和 centova 创建了一个广播播放器,它使用 lastFM api 来提取歌曲元数据。https://github.com/johndavedecano/Icecast-Centova-LastFM-API

于 2013-10-07T21:35:03.583 回答
0

如果您正在为广播电台执行此操作,那么他们可以通过 Icecast 的 XSLT 功能提供此数据。一些随机的旧 XSLT 示例,用于提供我在某个时候所做的流元数据。

另一种选择是运行 Icecast 2.4.1 或将两个文件 (xml2json.xsl status-json.xsl) 添加到旧版本。

请注意,只有 Icecast 2.4.1 或更新版本支持添加 CORS/ACAO 标头,这可能是从 Web 应用程序/网站访问数据所必需的。

如果您不直接与广播电台合作并且不能要求他们这样做,那么请忽略此答案。其他人可能会发现它很有用。

于 2014-12-10T16:09:35.267 回答
0

从本地玩家那里没有获得这个元的选项。

您可能可以使用jQuery.stream插件直接获取元数据 - 但您需要在您的 icecast 服务器上设置 Access-Control-Allow-Origin - 但我不知道它是否会工作。

这里最好的解决方案是使用这个脚本: http ://code.google.com/p/icecast-now-playing-script/

因此,您将这个脚本安装在您的 Web 服务器上,然后从 SmartTV 应用程序中,您将在播放流时将其 AJAX 一次。

于 2012-09-14T11:16:20.550 回答