yt-dlp 使用指南:高级技巧与最佳实践
yt-dlp 是一款基于 yt-dl 的开源命令行程序,用于从 YouTube 和其他众多视频网站下载视频、音频及字幕。相较于 yt-dl,yt-dlp 在速度、功能、维护和更新频率方面都有显著优势。本文旨在深入探讨 yt-dlp 的高级技巧与最佳实践,帮助你充分利用这款强大的工具,实现更高效、更个性化的下载体验。
一、安装与配置:打好基础
在使用 yt-dlp 之前,首先需要确保其已正确安装并配置。
-
安装:
yt-dlp 的安装方式取决于你的操作系统:
- Windows: 可以使用
pip install yt-dlp
命令进行安装,需要预先安装 Python 和 pip。建议使用 Python 3.7 或更高版本。也可以通过下载可执行文件的方式安装,无需依赖 Python。 - macOS: 可以使用
brew install yt-dlp
命令进行安装,前提是已经安装了 Homebrew。也可以使用pip install yt-dlp
。 - Linux: 各个发行版可能有不同的包管理器,例如
apt install yt-dlp
(Debian/Ubuntu) 或dnf install yt-dlp
(Fedora)。 同样可以使用pip install yt-dlp
。 - 跨平台: 使用
pip install yt-dlp
是一种通用的跨平台安装方式,但需要确保 Python 和 pip 已正确安装。
- Windows: 可以使用
-
配置:
yt-dlp 的配置可以通过命令行参数或者配置文件完成。配置文件可以避免在每次运行命令时输入相同的参数,提高效率。
-
创建配置文件: yt-dlp 会按照一定的顺序查找配置文件。通常情况下,配置文件位于以下路径:
- Unix-like 系统:
$HOME/.config/yt-dlp/config
或$XDG_CONFIG_HOME/yt-dlp/config
- Windows:
%APPDATA%\yt-dlp\config.txt
- Unix-like 系统:
-
配置语法: 配置文件采用每行一个参数的格式。例如,要设置代理服务器,可以在配置文件中添加以下行:
--proxy "http://proxy.example.com:8080"
-
常用配置选项:
--proxy "协议://地址:端口"
: 设置代理服务器。--user-agent "用户代理字符串"
: 设置用户代理,模拟不同的浏览器或设备。某些网站会根据用户代理来限制下载。--cookies-from-browser "浏览器"
: 从指定浏览器加载 cookies,可以绕过某些网站的登录验证。-o "输出路径/%(title)s.%(ext)s"
: 设置输出文件名和路径。--format "最佳清晰度视频+最佳清晰度音频/最佳"
: 设置下载的视频格式。--write-subs
: 下载字幕。--write-auto-subs
: 下载自动生成的字幕。--sub-lang "语言代码"
: 指定下载的字幕语言。--embed-subs
: 将字幕嵌入到视频中。--limit-rate "速率"
: 限制下载速度。例如,--limit-rate 200K
限制下载速度为 200KB/s。--no-check-certificate
: 禁用 SSL 证书验证,在某些情况下可能需要使用。--ignore-errors
: 忽略下载错误,继续下载其他视频。
-
二、格式选择与参数精讲:灵活掌控
yt-dlp 提供了强大的格式选择功能,允许你根据需求选择最佳的视频、音频格式和质量。
-
格式选择器
--format
:--format
参数是 yt-dlp 最重要的参数之一,用于指定下载的格式。它使用一个格式选择器字符串来描述所需的格式。-
基本语法:
best
: 选择最佳质量的视频和音频。worst
: 选择最差质量的视频和音频。bestvideo
: 选择最佳质量的视频。bestaudio
: 选择最佳质量的音频。worstvideo
: 选择最差质量的视频。worstaudio
: 选择最差质量的音频。视频格式id+音频格式id
: 将指定的视频和音频格式合并。可以使用yt-dlp -F URL
命令查看可用的格式 ID。
-
高级用法:
- 指定视频分辨率: 例如,
bestvideo[height<=720]+bestaudio
选择高度小于等于 720p 的最佳视频和最佳音频。 - 指定视频编码: 例如,
bestvideo[vcodec=avc1]+bestaudio
选择视频编码为 avc1 的最佳视频和最佳音频。 - 指定音频编码: 例如,
bestvideo+bestaudio[acodec=opus]
选择最佳视频和音频编码为 opus 的最佳音频。 - 使用条件表达式: 例如,
bestvideo[ext=mp4]+bestaudio/best
如果视频格式为 mp4 则选择最佳视频和音频,否则选择最佳质量的视频和音频。 - 优先级选择: 使用斜杠
/
分隔多个格式选项,yt-dlp 会按照顺序尝试下载,直到成功。 例如,bestvideo[height<=720]+bestaudio/best
首先尝试下载高度小于等于 720p 的最佳视频和最佳音频,如果失败则选择最佳质量的视频和音频。
- 指定视频分辨率: 例如,
-
-
查看可用格式:
使用
yt-dlp -F URL
命令可以查看指定 URL 的所有可用格式。输出结果会显示每个格式的 ID、分辨率、编码、文件大小等信息。 -
常用格式选择示例:
- 下载最佳质量的视频和音频:
yt-dlp -f best "URL"
- 下载最佳质量的视频,如果无法合并,则只下载最佳质量的视频:
yt-dlp -f "bestvideo+bestaudio/bestvideo" "URL"
- 下载 720p 的视频:
yt-dlp -f "bestvideo[height<=720]+bestaudio/best" "URL"
- 只下载音频:
yt-dlp -x --audio-format mp3 "URL"
- 将视频转换为 mp3:
yt-dlp -x --audio-format mp3 -o "%(title)s.mp3" "URL"
- 下载最佳质量的视频和音频:
三、字幕处理:获取与嵌入
yt-dlp 提供了强大的字幕处理功能,可以下载、提取、转换和嵌入字幕。
-
下载字幕:
--write-subs
: 下载可用的字幕。--write-auto-subs
: 下载自动生成的字幕。--sub-lang "语言代码"
: 指定下载的字幕语言。例如,--sub-lang zh-CN
下载简体中文字幕。 可以指定多个语言代码,例如--sub-lang "zh-CN,en"
。--all-subs
: 下载所有可用的字幕。
-
提取字幕:
--extract-audio
: 提取音频。--convert-subs "格式"
: 将字幕转换为指定的格式。常用的格式包括 srt、ass、vtt 等。 例如,--convert-subs srt
将字幕转换为 srt 格式。
-
嵌入字幕:
--embed-subs
: 将字幕嵌入到视频中。需要安装 ffmpeg 或 libav 工具。--embed-thumbnail
: 将视频缩略图嵌入到视频文件中。--embed-metadata
: 将视频元数据嵌入到视频文件中。
-
字幕处理示例:
- 下载简体中文和英文字幕:
yt-dlp --write-subs --sub-lang "zh-CN,en" "URL"
- 下载所有字幕并转换为 srt 格式:
yt-dlp --all-subs --convert-subs srt "URL"
- 下载视频并嵌入简体中文字幕:
yt-dlp --embed-subs --sub-lang "zh-CN" "URL"
- 下载简体中文和英文字幕:
四、下载列表与批量处理:高效管理
yt-dlp 支持下载视频列表和批量处理多个视频,可以提高效率,减少重复操作。
-
下载视频列表:
-a "文件路径"
: 从指定的文件中读取 URL 列表,每行一个 URL。--batch-file "文件路径"
: 与-a
参数相同。--playlist-start "起始索引"
: 指定播放列表的起始索引。--playlist-end "结束索引"
: 指定播放列表的结束索引。--playlist-items "索引列表"
: 指定播放列表中要下载的视频索引列表,多个索引之间用逗号分隔。 例如,--playlist-items "1,3,5"
下载播放列表中的第 1、3 和 5 个视频。--no-playlist
: 忽略播放列表,只下载第一个视频。--yes-playlist
: 强制将 URL 视为播放列表。
-
批量处理多个视频:
可以使用循环语句或 shell 脚本来批量处理多个视频。
-
下载列表与批量处理示例:
- 从文件中下载 URL 列表:
yt-dlp -a urls.txt
- 下载播放列表中的第 1 到 5 个视频:
yt-dlp --playlist-start 1 --playlist-end 5 "播放列表URL"
-
使用循环语句批量处理多个视频:
bash
for url in "URL1" "URL2" "URL3"; do
yt-dlp "$url"
done
- 从文件中下载 URL 列表:
五、高级技巧与最佳实践:精益求精
-
使用 cookies 绕过登录验证:
某些网站需要登录才能下载视频。可以使用
--cookies-from-browser "浏览器"
参数从浏览器中加载 cookies,绕过登录验证。 -
使用代理服务器:
在某些情况下,可能需要使用代理服务器才能下载视频。可以使用
--proxy "协议://地址:端口"
参数设置代理服务器。 -
限制下载速度:
可以使用
--limit-rate "速率"
参数限制下载速度,防止占用过多带宽。 -
使用 aria2c 加速下载:
aria2c 是一款强大的多线程下载工具。yt-dlp 可以与 aria2c 结合使用,提高下载速度。需要先安装 aria2c,然后使用
--external-downloader aria2c --external-downloader-args "-x 16"
参数指定使用 aria2c 进行下载,并设置线程数为 16。 -
更新 yt-dlp:
定期更新 yt-dlp 可以获取最新的功能和修复 bug。可以使用
pip install --upgrade yt-dlp
命令进行更新。 -
处理下载错误:
使用
--ignore-errors
参数可以忽略下载错误,继续下载其他视频。也可以使用--retries "次数"
参数设置重试次数。 -
自定义输出文件名:
--output
或-o
参数允许你自定义输出文件名和路径。可以使用变量来动态生成文件名,例如%(title)s
,%(id)s
,%(ext)s
等。%(title)s
: 视频标题。%(id)s
: 视频 ID。%(ext)s
: 视频扩展名。%(uploader)s
: 上传者。%(upload_date)s
: 上传日期 (YYYYMMDD)。%(duration)s
: 视频时长(秒)。
示例:
yt-dlp -o "%(uploader)s - %(title)s (%(upload_date)s).%(ext)s" "URL"
六、常见问题解答
-
为什么下载速度很慢?
- 检查网络连接是否正常。
- 尝试使用代理服务器。
- 使用 aria2c 加速下载。
- 限制下载速度,防止占用过多带宽。
- 有些视频服务器本身速度就比较慢。
-
为什么无法下载某些视频?
- 确认 URL 是否正确。
- 检查是否需要登录才能下载。
- 尝试使用
--cookies-from-browser
参数。 - 网站可能更改了下载方式,需要更新 yt-dlp。
- 该视频可能受到地理限制。
-
如何更新 yt-dlp?
使用
pip install --upgrade yt-dlp
命令进行更新。 -
如何查看 yt-dlp 的版本?
使用
yt-dlp --version
命令查看 yt-dlp 的版本。
七、总结
yt-dlp 是一款功能强大且灵活的视频下载工具。通过掌握本文介绍的高级技巧和最佳实践,你可以更好地利用 yt-dlp,实现更高效、更个性化的下载体验。记住要定期更新 yt-dlp,并参考官方文档获取更多信息。希望本文能帮助你成为 yt-dlp 的高手!