我使用ytdl-core来获取音频流,并在我的代码中使用它,如下所示
let stream;
let v_id;
app.get("/ytid/:videoId", function (req, res) {
let inputVideoID = req.params.videoId;
getAudio(inputVideoID, res)
.then(() => {
stream.pipe(res);
})
.catch(err=>{console.log(err);});
});
async function getAudio(videoID, res) {
if (videoID != v_id) {
console.log(`getAudio: ${videoID}`);
stream = ytdl(videoID, {
quality: "lowestaudio",
filter: "audioonly",
});
v_id = videoID;
}
}
字符串
但是音频没有被发送。如果我想直接从getAudio()
函数管道结果到res
,这将是好的,但我想缓存它并将缓存的流发送给多个人。我处理我的流数据的方式有什么问题吗?
1条答案
按热度按时间ahy6op9u1#
node.js中的流是不可重用的。读或写的时候,他们会消耗。也就是说,一旦从流中读取数据一次,就不能再次读取它。因此,不能使用同一个流来处理多个请求
我写了一个从youtube获取音频的例子:
字符串
的数据