我想创建一个nodejs服务,下载youtube视频并将其作为表单数据发送到另一个服务。 我使用node-youtube-dl下载视频。
let YoutubeDl = require("youtube-dl");
let fs = require("fs");
let axios = require("axios");
function getVideo (req, res) {
let videoName = "";
let fw = undefined;
let videoStream = YoutubeDl(req.query.url, ["--format=best[height<=480]"]);
videoStream.on("info", (info) => {
videoName = `${info.title}.mp4`;
fw = fs.createWriteStream(videoName);
videoStream.pipe(fw);
});
videoStream.on("end", () => {
let fr = fs.createReadStream(videoName);
let fd = new FormData();
fd.append("file", fr);
const request = {
"method": "¨POST",
"url": "anOtherServiceUrl",
"data": fd
};
axios(request).then(response => res.send(response.data));
});
}
上面的代码可以工作,但我不需要在磁盘上写文件。
我正在考虑实现Duplex或Transform流。但我不知道在调用_write
时如何处理数据。