使用Youtube-dl下载视频
简介
youtube-dl是一款命令行下载工具,可以用来下载视频网站的视频.(Github链接)
支持列表包括: BiliBili, Youtube, 爱奇艺等
youtube-dl项目由Ricardo Garcia创建于2008年。源代码由Python编写,托管在GitHub上。最初仅支持YouTube,但随着项目的发展,开始支持其他视频网站。2011年Ricardo Garcia不再维护此项目,由phihag接手,后转移给dstftw.
准备工作
安装python3和pip


安装时, 记得勾选pip
安装youtube-dl
命令安装:
1 | |
或者下载exe文件
官方原话:
Windows users can download an .exe file and place it in any location on their PATH except for
%SYSTEMROOT%\System32(e.g. do not put inC:\Windows\System32).
安装ffmpeg(选择安装)
主要用来转换mp4格式

解压缩安装包, 然后把ffmpeg解压缩目录\bin添加到环境变量



如图所示, 添加环境变量ffmpeg解压缩目录\bin

安装aria2(选择安装)
如果不需要多线程下载话,可以不用安装.
aira2是一个可以多线程下载的命令行下载工具,可以用于提高下载速度.youtube-dl默认是单线程下载.
下载完成后,安装目录添加到环境变量即可(参考ffmpeg安装过程即可)

使用说明
1. 下载单个视频
1 | |
-o "E:\保存位置\%(title)s-%(upload_date)s.%(ext)s"视频输出路径和视频文件名称-f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/mp4'设置下载视频格式为mp4
如果不支持下载mp4格式, 把这个参数改为-f best可以下载其他格式https://www.youtube.com/watch?v=H00fMgUMmlY视频地址
2. 下载频道里面的多个视频
1 | |
-o "E:\保存位置\%(playlist_index)s-%(title)s-%(upload_date)s.%(ext)s"视频输出路径和视频文件名称-f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/mp4'设置下载视频格式为mp4
如果不支持下载mp4格式, 把这个参数改为-f best可以下载其他格式--playlist-reverse反转下载列表, 因为默认是按最新时间为开头排序,所以要加这个参数https://www.youtube.com/@ArduinoBar/videos频道地址
3.下载播放列表(专辑列表)
1 | |
--yes-playlist 下载播放列表, 专门用来下载视频专辑的参数
-o "E:\保存位置\%(playlist_index)s-%(title)s-%(upload_date)s.%(ext)s" 视频输出路径和视频文件名称
-f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/mp4'设置下载视频格式为mp4
如果不支持下载mp4格式, 把这个参数改为-f best可以下载其他格式
4.按地址文件下载多个视频
youtube-dl -a url.txt也可以将要下载视频的URL全部放在文本文件中,并将其作为参数传递给youtube-dl。此命令将下载url.txt文件中所有URL指向的视频。文件中使用#号作为注释.
5.下载字幕
youtube-dl --write-sub [url]这样会下载一个vtt格式的英文字幕和mkv格式的1080p视频下来youtube-dl --write-sub --skip-download [url]下载单独的vtt字幕文件,而不会下载视频youtube-dl --write-sub --all-subs [url]下载所有语言的字幕(如果有的话)youtube-dl --write-auto-sub [url]下载自动生成的字幕(YouTube only)youtube-dl --embed-subs [url]:把字幕合并到视频中,只支持 mp4、mkv 和 webm 格式的视频
6.按日期下载视频列表
youtube-dl 允许我们按照上传日期来筛选和下载视频或播放列表,例如:
要下载 2019 年 8 月 1 日上传的视频,可以使用:
youtube-dl --date 20190801 [URL];下载在特定日期或之前上传的视频:
youtube-dl --datebefore 20190801 [URL];下载在特定日期或之后上传的视频:
youtube-dl --dateafter 20190101 [URL];仅下载过去 6 个月内上传的视频:
youtube-dl --dateafter now-6months [URL];下载特定时间段内(例如 2018 年 1 月 1 日至 2019 年 1 月 1 日)上传的视频:
youtube-dl --dateafter 20180101 --datebefore 20190101 [URL]。
7. 按序号下载视频列表
要从播放列表下载第 10 个文件,可使用:youtube-dl --playlist-items 10 [playlist_url]
要下载多个指定的文件,用逗号分隔:youtube-dl --playlist-items 2,3,7,10 [playlist_url]
也可以按序号来指定下载范围,例如:
从第 10 个开始,直接下载完整个列表:
youtube-dl --playlist-start 10 [playlist_url]在播放列表中仅下载从第 2 到第 5 的文件:
youtube-dl --playlist-start 2 --playlist-end 5 [playlist_url]
8. 查看视频的所有类型,只看不下载
命令:youtube-dl -F [url]或者youtube-dl --list-formats [url]。
这是一个列清单参数,执行后并不会下载视频,但能知道这个目标视频都有哪些格式存在,以便有选择的下载。

如上图所示,Youtube-dl 列出了给定视频的所有可用格式,从左到右分别为:format code(视频格式代码)、extension(扩展名)、resolution(分辨率)和 note(注释)。当您想要以特定质量或格式下载视频时,先查看一下有哪些可用,会非常便利。
9. 下载视频列表文件名称, 输出到txt文件
1 | |
--get-filename获取视频名称
9.1. 获取视频播放列表的视频地址, 输出到txt文件
1 | |
--get-id获取视频id
10. 更多使用方法
https://zhuanlan.zhihu.com/p/105141332
https://github.com/ytdl-org/youtube-dl
进阶使用
搭配aria2进行多线程下载
1 | |
上面命令可以加入--playlist-end 5测试下载5个视频
参数说明
--external-downloader aria2c//调用外部下载工具
--external-downloader-args//外部下载工具指定参数
-x 16//启用aria2 16个线程,最多就支持16线程
-K 1M//指定块的大小

