0%

Youtube-dl 安装使用指南

youtube-dl是非常有名的命令行下载工具,使用方法简单,支持的网站也多。

安装

终端中输入。

brew install youtube-dl

然后查看一下版本,我下载的时候brew下载的最高版本只能是2018.07.21,但实际youtube-dl更新非常勤,截止我写这篇文章时(2020.09.08),已经有2020.09.06版本了,因为这类下载工具经常需要更新来保证能够继续下载,所以要确保到最新的版本,

youtube-dl --version

如果不是最新版本的话。

sudo youtube-dl --update

使用

youtube-dl的基本使用方法非常简单。

youtube-dl {url}

就可以啦,会下载到所在的位置。

当然,youtube-dl也提供非常多样的选项以供使用,常用比如说——

#标准用法
youtube-dl [OPTIONS] URL [URL...]

调整存储位置+修改下载视频的名称。

#比如要放到 Downloads 文件夹
youtube-dl -o '/Users/{username}/Downloads/%(title)s.%(ext)s' {url}

下载字幕

#下载字幕文件
--write-sub                  
#下载youtube自动生成的cc字幕
--write-auto-sub    

只下载音频

-x

下载youtube列表。

--playlist-start NUMBER          指定列表中开始下载的视频(默认为1)
--playlist-end NUMBER            指定列表中结束的视频(默认为last)
--playlist-items ITEM_SPEC       指定列表中要下载的视频项目编号.如:"--playlist-items 1,2,5,8"或"--playlist-items 1-3,7,10-13"
--match-title REGEX              下载标题匹配的视频(正则表达式或区分大小写的字符串)
--reject-title REGEX             跳过下载标题匹配的视频(正则表达式或区分大小写的字符串)
--max-downloads NUMBER           下载NUMBER个视频后停止
--no-playlist                    当视频链接到一个视频和一个播放列表时,仅下载视频
--yes-playlist                   当视频链接到一个视频和一个播放列表时,下载视频和播放列表

下载多个视频时,默认如果一个视频发生错误就终止下载,可以用-i改成忽略错误继续下载。

-i, --ignore-errors              遇到下载错误时跳过

代理协议。

--proxy URL                      使用HTTP/HTTPS/SOCKS协议的代理,如socks5://127.0.0.1:1080/.

在视频中嵌入字幕。

--embed-subs                     在视频中嵌入字幕(仅适用于mp4,webm和mkv视频)

对视频进行转码,不过需要装ffmpeg或者其他转码的工具。

--recode-video FORMAT            必要时将视频转码为其他格式(当前支持: mp4|flv|ogg|webm|mkv|avi)

配置文件(后面会说到)。

--ignore-config                  不读取配置文件,当时用了全局配置文件/etc/youtube-dl.conf:不再读取 ~/.config/youtube-dl/config 
--config-location PATH           使用指定路径下的配置文件

其他可选命令

我这里粘贴了这位好心人 的部分翻译(侵删),留作参考。

通用选项

-h, --help                       打印帮助文档
--version                        打印版本信息
-U, --update                     更新到最新版(需要权限)
-i, --ignore-errors              遇到下载错误时跳过
--abort-on-error                 遇到下载错误时终止
--dump-user-agent                显示当前使用的浏览器(User-agent)
--list-extractors                列出所有的提取器(支持的网站)
--extractor-descriptions         同上
--force-generic-extractor        强制使用通用提取器下载
--default-search PREFIX          使用此前缀补充不完整的URLs,例如:"ytsearch2 yt-dl" 从youtube搜索并下载两个关于yt-dl视频. 使用"auto"youtube-dl就会猜一个,一般效果等价于"ytsearch"("auto_warning"猜测时加入警告).我已知支持的PREFIX:ytsearch (youtube), ytsearchdate (youtube), yvsearch (yahoo videos), gvsearch (google videos)
--ignore-config                  不读取配置文件,当时用了全局配置文件/etc/youtube-dl.conf:不再读取 ~/.config/youtube-dl/config (%APPDATA%/youtube-dl/config.txt on Windows)
--config-location PATH           使用指定路径下的配置文件
--flat-playlist                  列出列表视频但不下载
--mark-watched                   标记看过此视频 (YouTube only)
--no-mark-watched                不标记看过此视频 (YouTube only)
--no-color                       打印到屏幕上的代码不带色

网络选项

--proxy URL                      使用HTTP/HTTPS/SOCKS协议的代理.如:socks5://127.0.0.1:1080/.
--socket-timeout SECONDS         放弃连接前等待时间
--source-address IP              绑定的客户端IP地址
-4, --force-ipv4                 所有连接通过IPv4
-6, --force-ipv6                 所有连接通过IPv6

地理限制

--geo-verification-proxy URL     使用此代理地址测试一些有地理限制的地址
--geo-bypass                     绕过地理限制通过伪装X-Forwarded-For HTTP头部的客户端ip (实验)
--no-geo-bypass                  不 绕过地理限制通过伪装X-Forwarded-For HTTP头部的客户端ip (实验)
--geo-bypass-country CODE        强制绕过地理限制通过提供准确的ISO 3166-2标准的国别代码(实验) 注:以上三个实验参数实测未成功

视频选择

--playlist-start NUMBER          指定列表中开始下载的视频(默认为1)
--playlist-end NUMBER            指定列表中结束的视频(默认为last)
--playlist-items ITEM_SPEC       指定列表中要下载的视频项目编号.如:"--playlist-items 1,2,5,8"或"--playlist-items 1-3,7,10-13"
--match-title REGEX              下载标题匹配的视频(正则表达式或区分大小写的字符串)
--reject-title REGEX             跳过下载标题匹配的视频(正则表达式或区分大小写的字符串)
--max-downloads NUMBER           下载NUMBER个视频后停止
--min-filesize SIZE              不下载小于SIZE的视频(e.g. 50k or 44.6m)
--max-filesize SIZE              不下载大于SIZE的视频(e.g. 50k or 44.6m)
--date DATE                      仅下载上传日期在指定日期的视频
--datebefore DATE                仅下载上传日期在指定日期或之前的视频 (i.e. inclusive)
--dateafter DATE                 仅下载上传日期在指定日期或之后的视频 (i.e. inclusive)
--min-views COUNT                不下载观影数小于指定值的视频
--max-views COUNT                不下载观影数大于指定值的视频
--match-filter FILTER            通用视频过滤器. Specify any key (see help for -o for a list of available keys) to match if the key is present, !key to check if the key is not present, key > NUMBER (like "comment_count > 12", also works with >=, <, <=, !=, =) to compare against a number,key = ‘LITERAL‘ (like "uploader = ‘Mike Smith‘", also works with !=) to match against a string literal and & to require multiple matches. Values which are not known are excluded unless you put a question mark (?) after the operator. For example, to only match videos that have been liked more than 100 times and disliked less than 50 times (or the dislike functionality is not available at the given service), but who also have a description, use --match-filter "like_count > 100 & dislike_count <? 50 & description" .
--no-playlist                    当视频链接到一个视频和一个播放列表时,仅下载视频
--yes-playlist                   当视频链接到一个视频和一个播放列表时,下载视频和播放列表
--age-limit YEARS                下载合适上传年限的视频
--download-archive FILE          仅下载档案文件中未列出的影片,已下载的记录ID
--include-ads                    同时下载广告(实验)

下载选项

-r, --limit-rate RATE            最大bps (e.g. 50K or 4.2M)
-R, --retries RETRIES            重试次数 (默认10), or "infinite".
--fragment-retries RETRIES       一个分段的最大重试次数(default is 10), or "infinite" (DASH, hlsnative and ISM)
--skip-unavailable-fragments     跳过不可用分段(DASH, hlsnative and ISM)
--abort-on-unavailable-fragment  放弃某个分段当不可获取时
--keep-fragments                 下载完成后,将下载的片段保存在磁盘上; 片段默认被删除
--buffer-size SIZE               设置缓冲区大小buffer (e.g. 1024 or 16K) (default is 1024)
--no-resize-buffer               不自动调整缓冲区大小.默认情况下自动调整
--playlist-reverse               以相反的顺序下载播放列表视频
--playlist-random                以随机的顺序下载播放列表视频
--xattr-set-filesize             Set file xattribute ytdl.filesize with expected file size (experimental)
--hls-prefer-native              使用本机默认HLS下载器而不是ffmpeg
--hls-prefer-ffmpeg              使用ffmpeg而不是本机HLS下载器
--hls-use-mpegts                 使用TS流容器来存放HLS视频,一些高级播放器允许在下载的同时播放视频
--external-downloader COMMAND    使用指定的第三方下载工具,当前支持:aria2c,avconv,axel,curl,ffmpeg,httpie,wget
--external-downloader-args ARGS  给第三方下载工具指定参数,如:--external-downloader aria2c --external-downloader-args -j8

文件系统选项

-a, --batch-file FILE            文件中包含需要下载的URL
--id                             仅使用文件名中的视频ID
-o, --output TEMPLATE            Output filename template, see the "OUTPUT TEMPLATE" for all the info
--autonumber-start NUMBER        指定%(autonumber)s的起始值(默认为1)
--restrict-filenames             将文件名限制为ASCII字符,并避免文件名中的“&”和空格
-w, --no-overwrites              不要覆盖文件
-c, --continue                   强制恢复部分下载的文件。 默认情况下,youtube-dl仅在可能时将恢复下载。
--no-continue                    不要恢复部分下载的文件(从头开始重新启动)
--no-part                        不使用.part文件 - 直接写入输出文件
--no-mtime                       不使用Last-modified header来设置文件最后修改时间
--write-description              将视频描述写入.description文件
--write-info-json                将视频元数据写入.info.json文件
--write-annotations              将视频注释写入.annotations.xml文件
--load-info-json FILE            包含视频信息的JSON文件(使用“--write-info-json”选项创建)
--cookies FILE                   文件从中读取Cookie(经测试,export cookies插件可以使用,但firebug导出的cookies导致错误,chrome下请用cookies.txt)注意:不同平台windows、Linux、OSX之间需要转换CE LF才能使用!
--cache-dir DIR                  文件存储位置。youtube-dl需要永久保存一些下载的信息。默认为$XDG_CACHE_HOME/youtube-dl或/.cache/youtube-dl。目前,只有YouTube播放器文件(对于具有模糊签名的视频)进行缓存,但可能会发生变化。
--no-cache-dir                   不用缓存
--rm-cache-dir                   删除所有缓存文件

视频格式选项

-f, --format FORMAT              视频格式代码,查看"FORMAT SELECTION"获取所有信息
--all-formats                    获取所有视频格式
--prefer-free-formats            开源的视频格式优先,除非有特定的请求
-F, --list-formats               列出请求视频的所有可用格式
--youtube-skip-dash-manifest     不要下载关于YouTube视频的DASH清单和相关数据
--merge-output-format FORMAT     如果需要合并(例如bestvideo + bestaudio),则输出到给定的容器格式。mkv,mp4,ogg,webm,flv之一。如果不需要合并,则忽略

字幕选项

--write-sub                      下载字幕文件
--write-auto-sub                 下载自动生成的字幕文件 (YouTube only)
--all-subs                       下载所有可用的字幕
--list-subs                      列出所有字幕
--sub-format FORMAT              字幕格式,接受格式偏好,如:"srt" or "ass/srt/best"
--sub-lang LANGS                 要下载的字幕的语言(可选)用逗号分隔,请使用--list-subs表示可用的语言标签

后处理选项

-x, --extract-audio              将视频文件转换为纯音频文件(需要ffmpeg或avconv和ffprobe或avprobe)
--audio-format FORMAT            指定音频格式: "best", "aac", "flac", "mp3", "m4a", "opus", "vorbis", or "wav"; "best" by default;-x存在时无效
--audio-quality QUALITY          指定ffmpeg/avconv音频质量,为VBR插入一个0(best)-9(worse)的值(默认5),或者指定比特率
--recode-video FORMAT            必要时将视频转码为其他格式(当前支持: mp4|flv|ogg|webm|mkv|avi)
--postprocessor-args ARGS        给后处理器提供这些参数
-k, --keep-video                 视频文件在后处理后保存在磁盘上; 该视频默认被删除
--no-post-overwrites             不要覆盖后处理文件; 默认情况下,后处理文件将被覆盖
--embed-subs                     在视频中嵌入字幕(仅适用于mp4,webm和mkv视频)
--embed-thumbnail                将缩略图嵌入音频作为封面艺术
--add-metadata                   将元数据写入视频文件
--metadata-from-title FORMAT     从视频标题中解析附加元数据,如歌曲标题/艺术家。格式语法和--output相似.也可以使用带有命名捕获组的正则表达式。解析的参数替换现有值。Example: --metadata-from-title "%(artist)s - %(title)s" matches a title like "Coldplay - Paradise". Example (regex): --metadata-from-title "(?P<artist>.+?) - (?P<title>.+)"
--xattrs                         将元数据写入视频文件的xattrs(使用dublin core 和 xdg标准)
--fixup POLICY                   自动更正文件的已知故障。never(不做警告), warn(只发出警告), detect_or_warn (默认;如果可以的话修复文件,否则警告)
--prefer-avconv                  后处理时相较ffmpeg偏向于avconv
--prefer-ffmpeg                  后处理优先使用ffmpeg
--ffmpeg-location PATH           ffmpeg/avconv程序位置;PATH为二进制所在文件夹或者目录.
--exec CMD                       在下载后对文件执行命令,类似于find -exec语法.示例:--exec‘adb push {} /sdcard/Music/ && rm {}‘
--convert-subs FORMAT            转换字幕格式(当前支持: srt|ass|vtt)