【发布时间】:2018-05-23 18:11:27
【问题描述】:
晚上好!我只是尝试使用 Node JS 制作自己的网络广播。我看到了很多关于它的问题和教程,但都是老的,很难理解。
const fs = require('fs'),
files = fs.readdirSync('./music'), // I have some mp3 in music folder
clips = [],
dhh = fs.createWriteStream('./tracks.mp3'); // create output stream
let stream, currentfile;
files.forEach(file => {
clips.push(file);
});
// recursive function
const main = () => {
if (!clips.length) {
dhh.end('Done');
return;
}
currentfile = './music/' + clips.shift();
stream = fs.createReadStream(currentfile);
stream.pipe(dhh, { end: false });
stream.on('end', function() {
console.log(currentfile + ' appended');
main();
});
};
main();
所以我将所有的 mp3 都放在一个文件中。当他们连接时,我该怎么做才能将此文件流式传输给许多不同的用户。很多关于它的答案建议使用 BinaryJS,但它是大约 5 年前写的。 我只是不知道如何开始,所以我需要你的帮助。谢谢!
我试过这样的
const http = require('http'),
fs = require('fs'),
filePath = './music/my.mp3',
stat = fs.statSync(filePath);
http.createServer(function(request, response) {
fs.createReadStream(filePath).pipe(response);
response.writeHead(200, {
'Content-Type': 'audio/mpeg',
'Content-Length': stat.size,
});
}).listen(4000);
当用户连接到端口 4000 时,音乐开始播放,但它不是在线的东西,当另一个用户连接时,音乐也从头开始播放,但我想像在线收音机一样做。但它不起作用:(
【问题讨论】:
-
github.com/illuspas/Node-Media-Server 可能是一个开始的地方
标签: node.js audio-streaming internet-radio