357全球通 357全球通

在VPS安装Youtube-dl 和 FFmpeg 轻松下载youtube

in 默认分类 read (991) 文章转载请注明来源!

请配合上文用VPS下载youtube视频阅读。

刚才写完文章之后我发现,用youtube-dl下载视频的时候,下载1080P分辨率及以上的时候,音视频是分开的。。。这就很蛋疼了!我刚下了一部电影,然后用电脑看视频,同时手机播放声音。也是没谁了哈哈哈!!!
开玩笑,当然有解决办法了。

FFmpeg则是一个很强大的音视频处理工具,功能包括合并、分割、压制音视频等。
官网地址:http://www.ffmpeg.org/

我们只需要安装FFmpeg就好了。
我用的系统是Debian9,估计其他系统都应该适用~

基础环境配置

Centos 7:

yum update

yum install wget

yum install gcc

yum install gcc-c++

yum install make

Ubuntu or Debian

apt-get update

apt-get install wget

apt-get install build-essential

apt-get install make

安装 FFmpeg
也是为了下载高清的视频,没需求不装也可以。
我们采用不区分操作系统的编译安装

1、安装 yasm

wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz

tar -zxvf yasm-1.3.0.tar.gz

cd yasm-1.3.0

./configure

make

make install

如果报错,类似make: *** No targets specified and no makefile found. Stop.

centos:

yum install gcc gcc-c++ autoconf automake

yun -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel

ubuntu

apt-get install gcc build-essential

然后从 ./configure 命令从新开始。

2、安装 FFmpeg

cd /root

wget http://www.ffmpeg.org/releases/ffmpeg-3.3.3.tar.gz

tar -zxvf ffmpeg-3.3.3.tar.gz

cd ffmpeg-3.3.3

./configure

make

make install

大概等了5分钟左右编译完成了,输入以下命令查看安装的FFmpeg版本

ffmpeg -version

这样就算FFmpeg安装好了。

接下来我们下载youtube视频,输入下方命令,则会自动下载最高分辨率,如果遇到分辨率高于1080P的情况会自动把两个文件合成一个MP4文件.

youtube-dl https://www.youtube.com/watch?v=M7oWxLioxo4&t=24s

在网上找了很多youtube-dl命令,记录几个常用的。
下载YouTube视频
1、查看视频所有类型,只看不下载

youtube-dl -F [url]

youtube-dl --list-formats [url]

这是一个列清单参数,执行后并不会下载视频,但能知道这个目标视频都有哪些格式存在,这样就可以有选择的下载啦!

关于音频和视频的合并
下载指定质量的视频和音频并自动合并

youtube-dl -f [format code] [url]

我们需要分别下载视频和音频,可以使用137+140这样的组合.

youtube-dl -f 137+140 https://www.youtube.com/watch?v=M7oWxLioxo4&t=24s

注意:The first format must contain the video, 所以只能是 "-f 137+140"

下载视频列表

youtube-dl -f [format code] [palylist_url] //这种方式可以下载指定清晰度的mp4视频
youtube-dl [playlist_url] //下载视频列表,这种方式下载的视频可能是mkv格式或者webm格式
youtube-dl -cit [playlist_url] //下载视频列表,这种方式下载的视频可能是mkv格式或者webm格式
youtube-dl --yes-playlist [url] //当链接为视频列表,则下载该列表视频,跟上面的一样,可能是mkv或者webm格式

下载字幕

youtubd-dl --write-sub [url] //这样会下载一个vtt格式的英文字幕和mkv格式的1080p视频(up主自己上传的字幕)
youtube-dl --write-auto-sub [url] //下载自动生成的字幕(YouTube only)
youtube-dl --all-subs //下载所有字幕(有点夸张,可能用于采集吧)
youtube-dl --write-sub --skip-download [url] //下载单独的vtt字幕文件,而不会下载视频
youtube-dl --list-subs [url]  //列出所有可以下载的字幕,包括语言以及格式
youtube-dl --sub-format FORMAT //选择下载的字幕格式,如果没有你选定的格式,youtube会选择另外一个格式下载
youtube-dl --sub-lang LANGS  //选择下载字幕的语言

*youtube-dl --write-sub --all-subs [url] //下载所有语言的字幕(如果有的话)*
#github上没见这一条,只有上边6条#

关于字幕
youtubd-dl 自带一个↓ --convert-subtitles FORMAT ↓ 参数。

具体用法见例子。
写几个 常用的命令练习一下。
1.

youtube-dl --write-auto-sub --sub-lang en,zh-Hans --convert-subtitles srt https://www.youtube.com/playlist?list=PL2mpR0RYFQsBiCWVJSvVAO3OJ2t7DzoHA
# 下载自动生成的“srt”格式中英文字幕及播放列表视频(字幕和视频分开)

2.

youtube-dl --write-sub --sub-lang ja --skip-download https://www.youtube.com/watch?v=wIft-t-MQuE&index=1
#下载翻译(非自动生成)字幕[日文](vtt格式)
#这里如果没有人工翻译好的字幕,则会提示“WARNING: video doesn't have subtitles”。
注:vtt字幕转srt↓
ffmpeg -i some.vtt some.srt

3.

#下载自动生成的字幕
youtube-dl --write-auto-sub --sub-lang en --skip-download [url]只下载字幕

4.

#下载含音频的视频,指定最高质量

youtube-dl --write-sub --sub-lang en --embed-sub -f bestvideo+bestaudio [url]
#vtt字幕直接压进去的话是无法使用的,也就是视频播放的时候字幕不显示,可能该标准还是不如srt字幕能得到更多支持。

5.

#压入字幕时指定srt
youtube-dl --write-sub --sub-lang en --embed-sub --convert-subtitles srt -f bestvideo+bestaudio [url]

这个是最终的解决办法,指定非自动生成的字幕,且选择srt格式,音频和视频选择最高质量,最终输出mkv文件。


该方法存在一个问题,即字幕标没有标记为默认,视频播放的时候是没有字幕显示的,需要手动点击选择字幕播放。
解决办法
首先ffmpeg对普通视频压入字幕的命令如下:

ffmpeg -i some.webm -i some.srt -c copy -c:s copy output.mkv

这里是直接保持文本复制的,也就是形成的mkv文件是软字幕的。如何指定默认字幕呢?如下:

ffmpeg -i 01.mkv -c copy -c:s copy -disposition:s:0 default new.mkv

这里的mkv文件已经含有字幕,通过该命令对其添加默认标记,从而能够自动显示字幕。更完整的命令如下:

ffmpeg -i some.webm -i some.srt -c copy -c:s copy -disposition:s:0 default new.mkv

6.

#下载列表。现在就还差一个目标,即对列表进行批量下载,这样就功德圆满了。如下:
youtube-dl --write-sub --sub-lang en --embed-sub --convert-subtitles srt -f bestvideo+bestaudio -i PLE7DDD91010BC51F8
#这里使用了-i参数指定一个列表,后面就是列表id。

其他一些常用的参数

youtube-dl --list-extractors #查看支持网站列表
youtube-dl -U #程序升级
youtube-dl --get-format URL #获取视频格式
youtube-dl -F URL #获取所有格式(目前仅支持YouTube)

常用的就这些,用到其他的再添加。
参考来源:

Youtube批量下载视频并自动压入字幕,youtube-dl常用命令整理
youtube-dl 使用小记
用youtube-dl下载油管视频
138vps

十分感谢以上作者!

jrotty WeChat Pay

微信打赏

jrotty Alipay

支付宝打赏

文章二维码

扫描二维码,在手机上阅读!

本文基于《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
文章链接:http://www.357global.com/archives/578.html (转载时请注明本文出处及文章链接)

默认分类
发表新评论
PREVIOUS NEXT
雷姆
拉姆