通过Nodejs播放我们的icecast流,以便我可以读取元数据并在关键部分推送另一个音频文件。
我想知道的是为什么下面的脚本不允许用户听到流。
var http = require('http'),
request = require('request'),
remote = 'http://stream.radiomedia.com.au:8003/stream';
http.createServer(function (req, res) {
res.writeHead(200, {
'Content-Type': 'audio/mpeg',
'Content-Length': 1500
});
// http://somewhere.com/noo.bin
var remoteUrl = remote + req.url;
request(remoteUrl).pipe(res);
}).listen(8080);
答案 0 :(得分:0)
“内容长度”:1500
这是您的主要问题。您无需指定Content-Length
,因为它对于您的流是不确定的。
此外,这将导致服务器使用分块传输编码,如今,许多客户端可以很好地处理该编码。有些则不能,因此,如果旧客户端兼容性对您很重要,则必须禁用分块传输编码。
通过nodejs播放我们的icecast流,以便我可以读取元数据并在关键部分推送另一个音频文件。
这不是一件容易的事。 MP3使用位存储库的概念,因此,即使在帧边界上,也不能任意修剪流,除非您禁用编码器上的位存储库,这会导致质量明显下降。
有关更多信息,请在这里查看我的答案:Is it possible to splice advertisements or messages dynamically into an MP3 file via a standard GET request?