我想编写一个小型 JavaScript 库,可以为 Icecast 流获取“正在播放”的数据。从我理解 http://www.smackfu.com/stuff/programming/shoutcast.html,我可以通过向无线电流发送 HTTP 请求来做到这一点,如下所示:
GET /radiotunes_bebop HTTP/1.1
Host: pub2.radiotunes.com
Icy-MetaData:1
然后服务器将使用一些响应标头进行应答。其中之一是icy-metaint
指示元数据插入流的时间间隔的字段。元数据将如下所示:
StreamTitle='Dexter Gordon - Jodi';StreamUrl='';
虽然这可以让我获得所需的信息,但如果您不需要音频本身,效率就不是很高。 (当流未播放时可能会出现这种情况。)有没有办法在不缓冲音频的情况下获取流标题?我知道我可以抓取 HTML 来获取它,但该方法有很大的局限性。
自 Icecast 2.4 起,获取有关通过服务器运行的流的机器可读元数据的首选方法是 status-json.xsl。所有安装均默认启用此 JSON API。从 2.4.1 开始,它默认是开放 API 并发送 ACAO 标头“*”。
对于旧的 Icecast 安装 (2.3.x):可以使用 JSON API 对其进行改造(管理员从以下位置复制 status-json.xsl 和 xml2json.xslt 就足够了)2.4.1发布到 web 目录)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)