在科学上网普及的时代,访问 YouTube 并不是什么难事,但由于官方并不提供视频下载,通常我们需要使用第三方网站或脚本来下载视频。不过由于 YouTube 1080P及以上的视频,视频流和音频流是分开的,所以下载高清视频时略显不便。不过如果你有一台 VPS 的话,便可以使用 YouTube-DL 这个脚本来下载高清视频了,不仅能够自由选择视频以及音频的质量,还支持自动合并。下面以 Debian VPS 为例,介绍 YouTube-DL 的安装以及使用方法。
YouTube-DL 本身的安装非常简单,依次运行以下两条命令即可:
- wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl
- chmod a+rx /usr/local/bin/youtube-dl
这样就算安装完成了,不过由于视频合并需要用到 avconv ,我们还需要编译安装它。
update.自 Debian 8 起无需再编译安装,直接 apt-get install --no-install-recommends ffmpeg
即可
首先安装一些基本工具
- apt-get update
- apt-get install git build-essential nasm pkg-config yasm gcc
然后依次运行:
- git clone git://git.libav.org/libav.git
- cd libav
- ./configure
- make
- make install
在执行完毕之后,就可以开始使用 YouTube-DL 了,先运行 youtube-dl -F https://******* 来分析视频格式,返回如下:
- 140 mp4 audio only DASH audio 127k , m4a_dash container, mp4a.40.2@128k, 4.37MiB
- 251 webm audio only DASH audio 143k , opus @160k, 4.58MiB
- 171 webm audio only DASH audio 144k , vorbis@128k, 4.15MiB
- 136 mp4 1280×720 720p 2214k , avc1.4d401f, 30fps, video only, 47.14MiB
- 248 webm 1920×1080 1080p 3071k , vp9, 30fps, video only, 80.12MiB
- 137 mp4 1920×1080 1080p 4156k , avc1.640028, 30fps, video only, 84.10MiB
如果需要下载1080及以上清晰度的话,运行以下命令即可:
youtube-dl -f 137+171 https://*******
如果下载1080以下清晰度,则不需要再指定音频ID,因为视频流和音频流是合并的。
下载完成后视频会自动合并并且删除任何临时文件。需要注意视频ID必须放在加号的前面,下载其他清晰度以此类推。即便在下载途中中断也没关系,只要当前目录存在未完成的临时文件,再次执行相同参数的下载时,youtube-dl 会自动导入临时文件断点续传。
如果需要嵌入字幕的话,则需要先分析字幕语言:
- youtube-dl –all-subs https://*******
返回结果如下:
- Available automatic captions for 6A4-SVUHQYI:
- Language formats
- gu vtt, ttml
- zh-Hans vtt, ttml
- zh-Hant vtt, ttml
- Available subtitles for 6A4-SVUHQYI:
- Language formats
- en-GB vtt, ttml
- pt vtt, ttml
其中 Available automatic captions 为自动生成的字幕,Available subtitles 为作者上传的字幕。嵌入简体中文自动字幕方法:
- youtube-dl -f xxx+xxx https://******* –write-auto-sub –sub-lang zh-Hans
嵌入作者英文字幕的方法:
- youtube-dl -f xxx+xxx https://******* –write-sub –sub-lang en-GB
等待下载完成后,再取回本地即可。
怎么取回本地
装个Apache或者Nginx就可以弄回来了
具体怎么操作能不能写个教程,我是个盲人
debian的话 apt install nginx,然后视频移动到 /var/www/html 里,浏览器访问 ip+文件名就可以下载了