Icecast元数据提取在输出音频数据中产生伪像

时间:2010-09-10 19:16:41

标签: audio streaming metadata node.js icecast

我正在尝试(在NodeJS中):

  1. 连接到Icecast互联网音频流。例如:http://icecast3.977music.com/comedy
  2. 解析响应标头并提取icy-metaint值。
  3. 将原始音频数据写入文件,同时从音频流中提取元数据字节,以便:
    • 在元数据到达时拦截并解析元数据。
    • 不包括输出文件中的元数据字节,因此由于注入的元数据而没有音频工件。
  4. 在SmackFu的"unofficial" Shoutcast Metadata Protocol页面之后,我能够做到这一点:

    https://gist.github.com/e7474421dcb25e011620

    基本上,我能够在预期时提取元数据(在 gist 中包含的流转储的最开始时只有1个元数据事件)。那部分似乎工作正常。

    问题是输出MP3文件在整个文件中都有明显的音频伪像,大概是在元数据字节到达时。但是,我肯定是在输出文件中提取那些元数据字节而不包括它们,所以这是奇怪的部分。

    上面链接中的协议文档没有说明需要对输出文件做任何其他事情,但显然我仍然做错了。有人知道还需要对音频流做些什么吗?提前谢谢!

1 个答案:

答案 0 :(得分:1)

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

OP中发布的要点已经更正,现在工作正常。

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