gpt4 book ai didi

javascript - Node.js 无需保存文件即可将 Mp3 流式传输到 http

转载 作者:可可西里 更新时间:2023-11-01 16:43:04 51 4
gpt4 key购买 nike

我正在尝试使用 node.js 将音频从 youtube 链接直接流式传输到 http。

我的代码是这样的,我使用的是 express 4.0。

var express = require('express');
var router = express.Router();
var ytdl = require('ytdl');
var ffmpeg = require('fluent-ffmpeg');
var fs = require('fs');

router.get('/', function(req, res) {

var url = 'https://www.youtube.com/watch?v=GgcHlZsOgQo';
var video = ytdl(url)

res.set({
"Content-Type": "audio/mpeg"
})

new ffmpeg({source: video})
.toFormat('mp3')
.writeToStream(res, function(data, err) {
if (err) console.log(err)
})

});

module.exports = router;

现在,如果我保存文件然后将其通过管道传输到响应,我可以将视频的音频流式传输到响应,但我宁愿尝试找出从下载到 ffmpeg 到响应的某种方式。

不确定这是否可能。主要目标是尽可能保持它的轻量级,并且不必从文件中读取。

我看过 this基本上我想做的代码减去保存到文件的部分。

part of the error

最佳答案

Since, res is a stream and ffmpeg is also a stream.
We pipe them each other with .pipe().


使用管道流式传输数据

使用管道不需要在 ROM 中保存文件。数据存储在 RAM 中并在需要时访问。这是流式传输文件的非常有效的方式!

router.get('/', function(req, res) {
var url = 'https://www.youtube.com/watch?v=GgcHlZsOgQo';

// Audio format header (OPTIONAL)
res.set({ "Content-Type": "audio/mpeg" });

// Send compressed audio mp3 data
ffmpeg()
.input(ytdl(url))
.toFormat('mp3')
.pipe(res);
});

关于javascript - Node.js 无需保存文件即可将 Mp3 流式传输到 http,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23330493/

51 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com