我正在尝试(在NodeJS中):
- 连接到Icecast互联网音频流。例如:http: //icecast3.977music.com/comedy
- 解析响应标头并提取
icy-metaint
值。 - 将原始音频数据写入文件,同时从音频流中提取元数据字节,以便:
- 当元数据到达时拦截并解析它。
- 不要在输出文件中包含元数据字节,这样就不会因为注入的元数据而产生音频伪影。
在 SmackFu的“非官方”Shoutcast 元数据协议页面之后,我已经能够做到这一点:
https://gist.github.com/e7474421dcb25e011620
基本上,我能够在预期的时候提取元数据(在gist中包含的流转储的最开始只有 1 个元数据事件)。那部分似乎工作正常。
问题是输出 MP3 文件在整个文件中都有明显的音频伪影,大概是在元数据字节到达时。但是,我肯定会提取这些元数据字节,而不是将它们包含在输出文件中,所以这很奇怪。
上面链接中的协议文档没有说需要对输出文件做任何其他事情,但显然我仍然做错了什么。有人知道音频流还需要做什么吗?提前致谢!