我的代码片段如下:
const express = require('express');
const app = express();
const ytdl = require('ytdl-core');
const fs = require('fs')
var router = express.Router();
router.get('/', function (req, res, next) {
console.log('rputer calld')
let url = "https://youtu.be/nD_NDngrEl8";
ytdl(url).pipe(fs.createWriteStream('./presentation/video.webm'));
res.end();
})
app.use(router);
app.listen(2222, () => {
console.log('app listingin on 2222')
})
我使用了express服务器并放置了一个youtube URL,我想以高质量下载它。
高质量的 YouTube 视频只是不包含声音。一般来说,您必须下载单独的视频和音频,并按照您所说的混合这两个文件。
您希望在下载两个文件时实时混合这两个文件,而不是在下载结束时进行混合。
如果您从 info.h 中提供匹配的视频和音频 URL,FFmpeg 就可以做到这一点。格式来代替下载的文件名,然后您可以将混合输出保存到文件、管道或流式传输到任何地方。完成时间会更长,但理论上您可以立即开始使用输出,就像在 YouTube 上观看一样。但我想问题是,为什么不在 YouTube 上观看呢?
一些例子:
带流的 FFmpeg: https://github.com/fent/node-ytdl-core/blob/master/example/ffmpeg.js
这是完美的下载视频 将 ./presentation/video.webm 更改为 video.mp4
const express = require('express');
const app = express();
const ytdl = require('ytdl-core');
const fs = require('fs')
var router = express.Router();
router.get('/', function (req, res, next) {
console.log('rputer calld')
let url = "https://youtu.be/nD_NDngrEl8";
ytdl(url).pipe(fs.createWriteStream('video.mp4'));
res.end();
})
app.use(router);
app.listen(2222, () => {
console.log('app listingin on 2222')
})
对于“高质量”的要求,您可以使用过滤功能返回最高格式的视频
const video = ytdl(url, {
filter: function (format) {
return format.quality== "highest";
},
});
或者使用质量的 itag,它是每个质量的常数(例如 720p itag = 22)
const iTag = 22;
const video = ytdl(url, {
filter: function (format) {
return format.itag === iTag;
},
});
只需使用 npm 包“ytdl-max”
https://www.npmjs.com/package/ytdl-max
https://github.com/BrunoItacaramby/Youtube-Downloader
您只需开始复制 YouTube 链接,它就会自动下载高质量视频、音频或较低质量的视频!