我如何使用nodejs中的ytdl-core包下载高质量的youtube视频

问题描述 投票:0回答:4

我的代码片段如下:

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,我想以高质量下载它。

node.js youtube ytdl
4个回答
2
投票

高质量的 YouTube 视频只是不包含声音。一般来说,您必须下载单独的视频和音频,并按照您所说的混合这两个文件。

您希望在下载两个文件时实时混合这两个文件,而不是在下载结束时进行混合。

如果您从 info.h 中提供匹配的视频和音频 URL,FFmpeg 就可以做到这一点。格式来代替下载的文件名,然后您可以将混合输出保存到文件、管道或流式传输到任何地方。完成时间会更长,但理论上您可以立即开始使用输出,就像在 YouTube 上观看一样。但我想问题是,为什么不在 YouTube 上观看呢?

一些例子:

带流的 FFmpeg: https://github.com/fent/node-ytdl-core/blob/master/example/ffmpeg.js

混合流:https://www.npmjs.com/package/ytdl-core-muxer


1
投票

这是完美的下载视频 将 ./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')
})

0
投票

对于“高质量”的要求,您可以使用过滤功能返回最高格式的视频

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;
  },
});

0
投票

只需使用 npm 包“ytdl-max”

https://www.npmjs.com/package/ytdl-max

https://github.com/BrunoItacaramby/Youtube-Downloader

您只需开始复制 YouTube 链接,它就会自动下载高质量视频、音频或较低质量的视频!

© www.soinside.com 2019 - 2024. All rights reserved.