【问题标题】:Icecast Metadata Extracting Produces Artifacts in Output Audio dataIcecast 元数据提取在输出音频数据中产生伪影
【发布时间】:2011-04-10 21:34:15
【问题描述】:

我正在尝试(NodeJS):

  1. 连接到Icecast 互联网音频流。例如:http://icecast3.977music.com/comedy
  2. 解析响应标头并提取icy-metaint 值。
  3. 将原始音频数据写入文件,同时从音频流中提取元数据字节,以便:
    • 元数据到达时对其进行拦截和解析。
    • 在输出文件中不包含元数据字节,这样就不会因为注入的元数据而产生音频伪影。

按照 SmackFu 的 "unofficial" Shoutcast Metadata Protocol 页面,我已经走到了这一步:

https://gist.github.com/e7474421dcb25e011620

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

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

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

【问题讨论】:

    标签: audio streaming metadata node.js icecast


    【解决方案1】:

    我能够在 Node.js IRC 频道上解决这个问题。我在输出的音频字节数中有一个“off by 1”错误,因此导致音频文件无效。

    在 OP 中发布的 gist 已得到更正,现在可以正常工作了。

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

    【讨论】:

      猜你喜欢
      • 2021-04-05
      • 2011-09-01
      • 2016-02-29
      • 2015-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-23
      • 1970-01-01
      相关资源
      最近更新 更多