我的 node-icy 模块能够读取任意Icecast流并拦截和/或添加“元数据”事件到输出流。你基本上是“代理”流。一个好的(虽然稍微复杂)的例子可能在这里: proxy.js
node-icy
proxy.js
请注意,“元数据”格式是以分号分隔的键值对字符串,但Icecast客户端只对 StreamTitle 价值,所以只需要你想要的所有信息:
StreamTitle
StreamTitle='Pink Floyd - Welcome to the Machine';
我已经完成了每秒发送元数据事件以保持跟踪位置计数器(尽管可能有点网络繁重)的事情:
StreamTitle='Pink Floyd - Welcome to the Machine (0:12/4:02)';
祝好运!
虽然它有点复杂,但Savonet / Liquidsoap脚本语言具有修改/设置流元数据的功能。 Liquidsoap wiki中有几个例子 https://wiki.sourcefabric.org/display/LS/UserScripts