youtube-dl安装和⽤法
原⽂作者:⼈脑之战
⼀、准备⼯作
1、下载Python最新版本并安装,配置环境变量。
2、下载FFmpeg最新版本并解压,把解压之后的bin⽂件夹路径添加到PATH。
⼆、youtube-dl安装
打开cmd,输⼊
pip install youtube-dl  #安装
pip uninstall youtube-dl #卸载
pip install --upgrade youtube-dl #升级
三、youtube-dl⽤法
Usage: youtube-dl [OPTIONS] URL []
Options:
通⽤选项:
-h, --help                      打印帮助⽂档
--version                        打印版本信息
-U, --update                    更新到最新版(需要权限)
-i, --ignore-errors              遇到下载错误时跳过
--abort-on-error                遇到下载错误时终⽌
--dump-user-agent                显⽰当前使⽤的浏览器(User-agent)
--list-extractors                列出所有的提取器(⽀持的⽹站)
--extractor-descriptions        同上
-
-force-generic-extractor        强制使⽤通⽤提取器下载chrome直接下载
--default-search PREFIX          使⽤此前缀补充不完整的URLs,例如:"ytsearch2 yt-dl" 从youtube搜索并下载两个关于yt-dl视频. 使⽤"auto"youtube-dl就会猜⼀个,⼀般效果等价于"ytsearch"("auto_warning"猜测时加⼊警告).我已知⽀持的PREFI    --ignore-config                  不读取配置⽂件,当时⽤了全局配置⽂件/f:不再读取 ~/.config/youtube-dl/config (%APPDATA%/ 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标准的国别代码
--geo-bypass-ip-block IP_BLOCK  强制绕过地理限制通过提供精确的⽆类别域间路由IP段(2018.09.13更新)
视频选择:
--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 >=,    --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              将视频注释写⼊.l⽂件
--load-info-json FILE            包含视频信息的JSON⽂件(使⽤“--write-info-json”选项创建)
--cookies FILE                  ⽂件从中读取Cookie(经测试,export cookies插件可以使⽤,但firebug导出的
cookies导致错误,chrome下请⽤)注意:不同平台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                  删除所有缓存⽂件
缩略图:
--write-thumbnail                把缩略图写⼊硬盘
--write-all-thumbnails          将所有缩略图写⼊磁盘
--list-thumbnails                列出所有可⽤的缩略图格式
详细/模拟选项:
-q, --quiet                      激活退出模式
-
-no-warnings                    忽略警告
-s, --simulate                  不下载不存储任何⽂件到硬盘,模拟下载模式
--skip-download                  不下载视频
-g, --get-url                    模拟下载获取视频直连
-e, --get-title                  模拟下载获取标题
--get-id                        模拟下载获取id
--get-thumbnail                  模拟下载获取缩略图URL
--get-description                模拟下载获取视频描述
--get-duration                  模拟下载获取视频长度
--get-filename                  模拟下载获取输出视频⽂件名
--get-format                    模拟下载获取输出视频格式
-
j, --dump-json                  模拟下载获取JSON information.
-J, --dump-single-json          模拟下载获取每条命令⾏参数的JSON information.如果是个播放列表,就获取整个播放列表的JSON
--print-json                    下载的同时获取视频信息的JSON
--newline                        进度条在新⾏输出
--no-progress                    不打印进度条
--console-title                  在控制台标题栏显⽰进度
-v, --verbose                    打印各种调试信息
--dump-pages                    打印下载下来的使⽤base64编码的页⾯来调试问题(⾮常冗长)
--write-pages                    将下载的中间页以⽂件的形式写⼊当前⽬录中以调试问题
--print-traffic                  显⽰发送和读取HTTP流量
-C, --call-home                  联系youtube-dl服务器进⾏调试
--no-call-home                  不联系youtube-dl服务器进⾏调试
解决⽅法:
--encoding ENCODING              强制指定编码(实验)
--no-check-certificate          禁⽌HTTPS证书验证
--prefer-insecure                使⽤未加密的连接来检索有关视频的信息(⽬前仅⽀持YouTube)
--user-agent UA                  指定user agent
--referer URL                    指定⾃定义的referer,仅限视频来源于同⼀⽹站
--add-header FIELD:VALUE        指定⼀个⾃定义值的HTTP头⽂件,使⽤分号分割,可以多次使⽤此选项
--bidi-workaround                围绕缺少双向⽂本⽀持的终端⼯作。需要在PATH中有bidiv或fribidi可执⾏⽂件
--sleep-interval SECONDS        在每次下载之前休眠的秒数,或者每次下载之前的随机睡眠的范围的下
限(最⼩可能的睡眠秒数)与-max-sleep-interval⼀起使⽤。
--max-sleep-interval SECONDS    每次下载前随机睡眠范围的上限(最⼤可能睡眠秒数)。只能与--min-sleep-interval⼀起使⽤。
视频格式选项:
-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表⽰可⽤的语⾔标签
验证选项:
-u, --username USERNAME          使⽤ID登录
-p, --password PASSWORD          账户密码,如果此选项未使⽤,youtube-dl将交互式地询问。
-2, --twofactor TWOFACTOR        双因素认证码
-n, --netrc                      使⽤rc认证数据
--video-password PASSWORD        视频密码(vimeo, smotri, youku)
Adobe Pass Options:
--ap-mso MSO                    Adobe Pass多系统运营商(电视提供商)标识符,使⽤--ap-list-mso列出可⽤的MSO
--ap-username USERNAME          MSO账号登录
--ap-password PASSWORD          账户密码,如果此选项未使⽤,youtube-dl将交互式地询问。
--ap-list-mso                    列出所有⽀持的MSO
后处理选项:
-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    --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)