如何在Samsung Smart-TV上提取嵌入在Icecast音频(无线电)流中的流式“正在播放”数据

时间:2012-09-13 13:19:10

标签: samsung-smart-tv icecast internet-radio

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

5 个答案:

答案 0 :(得分:1)

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

查看 Shoutcast Internet Radio Protocol 上的这篇文章,详细了解 icy:metadata 以及C中的示例代码。

更多技术性的讨论也可以在 的 http://forums.radiotoolbox.com/viewtopic.php?t=74

答案 1 :(得分:0)

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

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

一旦你阅读了元块,你就会回到读取流数据。

我在这里的答案中详细介绍了所有这些:https://stackoverflow.com/a/4914538/362536虽然我知道你不是在编写PHP,但无论用什么语言,校长都是相同的。

答案 2 :(得分:0)

从原生播放器中无法获得此元素。

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

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

因此,您在Web服务器上安装此脚本,并在SmartTV应用程序中安装一段时间,然后播放您的信息流。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

如果你是为广播电台做这个,那么他们可以通过Icecast的XSLT功能提供这些数据。一些random old XSLT examples用于提供我在某些时候所做的流元数据。

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

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

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