Icecast元数据提取在输出audio数据中产生工件

我试图(在NodeJS中 ):

  1. 连接到Icecast互联网audiostream。 例如: http : //icecast3.977music.com/comedy
  2. parsing响应头并提取icy-metaint值。
  3. 将原始audio数据写入文件,同时从audiostream中提取元数据字节,以便:
    • 元数据到达时拦截并parsing。
    • 不要在输出文件中包含元数据字节,以免由于注入的元数据而导致audio失真。

在SmackFu的“非官方”Shoutcast元数据协议页面之后,我已经能够得到这个了:

https://gist.github.com/e7474421dcb25e011620

基本上,我能够提取元数据时,预期(只有1个元数据事件在stream转储包括在头脑的最初)。 这部分似乎工作正常。

问题是输出的MP3文件在整个文件中都有明显的audio失真,据推测当元数据字节到达时。 但是,我肯定会提取这些元数据字节,不包括他们在输出文件,所以这是怪异的一部分。

上面的链接中的协议文档没有说输出文件需要做什么,但显然我仍然做错了什么。 有人知道还有什么需要做的audiostream? 提前致谢!

我能够在Node.js IRC频道上进行分类。 我输出的audio字节数量出现“off by 1”错误,导致无效的audio文件。

OP中张贴的要点已得到纠正,现在正常工作。

这个小练习的延续被打包到一个Node.JS模块中,以便从SHOUTcast / Icecaststream中读取audio和元数据。 如果您感兴趣,请查看node-radio-stream 。