【发布时间】:2023-03-19 19:09:01
【问题描述】:
说,我要查询“http://streaming.shoutcast.com/80sPlanet”(在线广播“A.0.0.00Radio:All 80s All The Time”)的当前广播。 我可以向该 URL 发出 HTTP GET 请求,并将标头“icy-metadata”设置为“1”,并返回包括以下“icy-*”标头:
key = "icy-br"; value = "128"
key = "icy-genre"; value = "Decades,80s"
key = "icy-metaint"; value = "16000"
key = "icy-name"; value = "A.0.0.00Radio:All 80s All The Time"
key = "icy-notice1"; value = "<BR>This stream requires <a href="http://www.winamp.com">Winamp</a><BR>"
key = "icy-notice2"; value = "SHOUTcast DNAS/posix(linux x64) v2.5.1.725<BR>"
key = "icy-pub"; value = "1"
key = "icy-sr"; value = "44100"
key = "icy-url"; value = "http://a.0.00radio.com/80s/"
但是没有关于当前在流中播放的内容的信息(我的意思是歌曲/艺术家/专辑/等)。不过,在直播主页 (http://80splanet.com) 上始终有最新信息。 有人告诉我,可以通过 HTTP GET 请求向添加“/7.html”或“/stats”的流 URL 获取“正在播放”信息。它适用于某些流。例如:
http://198.100.125.242/7.html
<HTML><meta http-equiv="Pragma" content="no-cache"></head><body>383,1,541,30000,377,128,Man of the Hour - w/ Patrick and Sebastian </body></html>
(数字是流的统计信息。它们在 SHOUTcast 服务器文档中有说明) 但大多数流不支持此功能(不支持“/7.html”或“/stats”)。 HTTP 错误 404 返回或类似。
看起来 SHOUTcast 提供了一些 API (wiki.shoutcast.com/wiki/SHOUTcast_Developer) 来请求它的电台目录、获取热门电台图表等。还有“SHOUTcast XML 元数据规范”。似乎有一种方法可以以某种方式从流中获取元数据。
此外,还有一种方法可以挖掘流原始数据并根据“icy-mettaint”标头值搜索元数据,如下所述:stackoverflow.com/a/4914538/8128293,但是(首先)我无法访问流的原始数据(android.media.MediaPlayer 类只接收流 URL 并在其内部保持连接)。 (第二)我不确定这种方法,因为它没有在任何地方记录。并且(第三)我不确定它是否适用于非 mpeg 音频流(例如:audio/aacp)。
我也听说有一种方法可以通过 JSON 请求获取这种元数据到流,但仍然没有示例可查看。
【问题讨论】:
标签: audio stream metadata shoutcast internet-radio