2026 / 7 / 22
做视频这行,最头疼的事情之一就是找素材。尤其是当你需要从各大视频平台获取参考片段、B-roll素材、或者某个博主的教程时,下载工具的好坏直接决定了你的工作效率。今天想跟大家聊聊我这两年一直在用的神器——yt-dlp。
如果你以前用过 youtube-dl,那你一定知道那个工具曾经有多好用。但后来它更新频率断崖式下跌,而 YouTube 那边的反爬策略却在不断升级,下载成功率一天比一天低。
yt-dlp 就是在这个背景下出现的。2021 年它从一个叫 youtube-dlc 的分支独立出来,到今天 GitHub 上的 Star 数已经飙到了 16.3 万。现在 Ubuntu、Debian 这些主流 Linux 发行版都已经把它作为默认的视频下载工具。
最关键的区别是什么? 同样是下载一个视频,youtube-dl 可能被限速到几十 KB/s,而 yt-dlp 单线程就能轻松跑到数 MB/s。对于经常要批量下载素材的编导来说,这个差距意味着从等一个下午变成等一杯咖啡的时间。
安装方式有很多种,挑最适合你的:
Windows:直接下载 yt-dlp.exe 放到 PATH 路径里
macOS:brew install yt-dlp
Linux:pip install -U yt-dlp
最重要的一件事:一定要装 FFmpeg。没有它,你没法合并音视频流、没法转格式、没法提取音频。brew install ffmpeg(mac)或 apt install ffmpeg(Linux)就能搞定。
基础用法极其简单:
bash
yt-dlp "视频链接"
就这样,它会自动帮你下载最高画质的版本。
作为编导,你不可能什么素材都下 4K——硬盘吃不消,剪辑软件也跑不动。yt-dlp 的格式选择非常灵活。
先看看这个视频有哪些格式可选:
bash
yt-dlp -F "视频链接"
会列出所有可用的视频和音频格式及其对应的代码。然后你可以精确指定:
bash
# 下载 1080p 以内最佳画质 yt-dlp -f "bestvideo[height<=1080]+bestaudio/best" "链接" # 指定具体格式代码合并 yt-dlp -f 137+140 "链接" # 合并成 MKV 容器 yt-dlp --merge-output-format mkv "链接"
这里的 + 表示把独立的视频流和音频流合并成一个文件。比起 youtube-dl 时代默认优先高码率(码率高不代表画质好),yt-dlp 默认优先选择高分辨率和优质编码,更符合实际需求。
做选题调研的时候,经常需要把某个博主的整个系列都扒下来参考。直接扔播放列表链接就行:
bash
yt-dlp -i "播放列表链接"
-i 参数会忽略错误,防止个别视频下载失败导致整个任务中断。
外语视频的字幕处理一直是痛点。yt-dlp 对字幕的支持非常完善:
bash
# 下载手动字幕(英语和中文) yt-dlp --write-subs --sub-langs "en,zh" "链接" # 下载自动生成的字幕 yt-dlp --write-auto-subs --sub-langs "en" "链接" # 直接把字幕嵌入视频(MP4/MKV 都支持) yt-dlp --write-subs --embed-subs "链接" # 转成 SRT 格式 yt-dlp --write-subs --sub-format srt "链接"
有了这个功能,做海外素材的剪辑效率直接翻倍。
有些视频特别长,比如音乐会、直播回放、几小时的访谈。yt-dlp 支持按章节自动切割成独立文件:
bash
yt-dlp --split-chapters "链接"
你还可以指定时间范围下载,只下载你真正需要的那一段:
bash
yt-dlp --download-sections "*00:05:00-00:15:00" "链接"
这样就不用把整个视频下下来再剪了,省流量也省时间。
这是我个人最常用的一个工作流——把 yt-dlp 和 FFmpeg 结合起来,下载的同时完成初步剪辑。
bash
# 下载指定时间段,并指定输出文件名 yt-dlp -f "bestvideo[height>=720]+bestaudio" \ --download-sections "*00:32:53-00:35:10" \ -o "clip_%(title)s.%(ext)s" "链接"
--download-sections 依赖 FFmpeg,所以前面说的 FFmpeg 一定要装好。
做系列素材的时候,文件命名特别重要。yt-dlp 的输出模板非常强大:
bash
yt-dlp -o "%(upload_date)s_%(title)s.%(ext)s" "链接" # 输出类似:20251215_我的视频标题.mp4 # 更复杂的命名 yt-dlp -o "素材库/%(uploader)s/%(playlist)s/%(playlist_index)02d_%(title)s.%(ext)s" "播放列表链接"
这样下载下来的素材自动就按「上传者→播放列表→序号」整理好了,导入剪辑软件的时候一目了然。
有些视频需要登录才能看,或者对未登录用户限速。yt-dlp 可以直接从浏览器读取 Cookie:
bash
yt-dlp --cookies-from-browser chrome "链接" # 或者 Firefox yt-dlp --cookies-from-browser firefox "链接"
Chrome、Firefox、Edge 都支持。这对下载年龄限制视频或者会员内容特别实用。
这可能是 yt-dlp 最特别的功能。它集成了 SponsorBlock 的数据,下载视频时能自动标记甚至直接裁剪掉赞助商植入片段:
bash
yt-dlp --sponsorblock-remove all "链接"
你看 YouTube 时最烦的那段“感谢本期赞助商”,下载的时候直接就去掉了。同类工具里几乎没有第二家能做到。
如果每次都要敲一大串参数,那也太累了。yt-dlp 支持配置文件:
系统级:/etc/yt-dlp.conf
用户级:~/.config/yt-dlp/config
每行一个命令行选项。这是我的个人配置示例:
text
# 默认下载 1080p 以内最佳画质 -f bestvideo[height<=1080]+bestaudio/best # 合并成 MP4 --merge-output-format mp4 # 忽略错误继续下载 -i # 输出到 Videos 目录 -o ~/Videos/%(title)s.%(ext)s # 自动写入字幕 --write-subs --sub-langs en,zh
保存之后,每次只需要 yt-dlp "链接" 就行了。
1. YouTube 又抽风了,下载失败怎么办?
YouTube 经常改接口,导致 yt-dlp 临时失效。这时候先更新:
bash
yt-dlp -U
如果 stable 版还不行,切到 nightly 通道通常能解决:
bash
yt-dlp --update-to nightly
2. 需要 Node.js 吗?
从 2026 年中的版本开始,YouTube 需要 JavaScript 运行时来解决反爬挑战。装个 Node.js 就行,然后在配置文件里加上:
text
--js-runtimes node --remote-components ejs:github
yt-dlp 会自动处理后续的事情。
3. 下载速度慢?
可以用多线程下载:
bash
yt-dlp -N 8 "链接"
开 8 个线程同时拉流媒体片段。如果还不够,可以配合 aria2c 作为外部下载器。
对视频编导和剪辑师来说,yt-dlp 不只是一个下载工具,它其实是素材获取和预处理流水线的起点。从下载、格式选择、字幕提取到初步剪辑,一条命令就能完成以前需要好几个软件才能做的事情。
这个工具完全免费开源,Unlicense 协议,商用也没有任何限制。16 万 Star 不是刷出来的——每个 Star 背后,都有一个人曾经需要下载某个视频,然后 yt-dlp 帮到了他。
希望这篇分享对你有帮助。如果你也有自己的 yt-dlp 使用技巧,欢迎在评论区交流。