跳到正文
yt-dlp

Reddit 的 yt-dlp 命令生成器

为 Reddit 视频生成 yt-dlp 命令 —— 包括让它们有声音的那一步合并。

可选。留空的话命令会以 URL 结尾,由你自己填。

你的命令

yt-dlp --merge-output-format mp4 --no-playlist --embed-metadata https://www.reddit.com/r/videos/comments/xxxxxx/
基本

仅音频会提取声音轨并丢弃视频流。

视频与画质

限制高度上限。yt-dlp 仍会挑选该上限及以下最好的一路流。

把分离的视频流和音频流合并进去的文件类型。

高级选项(3)

会取代画质下拉框。适合已经熟悉 format 语法的人。

不重新编码,只重新封装。快且无损。

重新编码视频。慢且有损 —— 只在 remux 不行时才用。

音频

音频要转换成的文件类型。

VBR 的体积与质量之比最好;固定 bitrate 更容易预估大小。

字幕

内嵌会把字幕放进视频里;保存则在旁边写一个独立的 .srt 文件。

用逗号分隔。想要所有可用语言就写 all。

播放列表与频道

当网址同时属于一个视频和一个播放列表时该怎么做。

范围和列表都可以,例如 1-10,15,或者用 -5::2 表示从末尾开始每隔一项取一项。

高级选项(1)

记下已经下过的项,于是重新运行会跳过它们。这就是让一个频道保持同步的办法。

片段与章节
高级选项(2)

像 *00:01:30-00:03:00 这样的时间范围,或者章节名。开头的星号表示这是时间戳。

元数据与封面
高级选项(3)
SponsorBlock

依据 SponsorBlock 数据,把社区标记的片段从文件里直接剪掉。

高级选项(1)

片段保留,但会被标出来,让你自己跳过。

文件与目录

字段名写在 %(...)s 里。斜杠会创建目录。

高级选项(4)

文件写到哪里。配合上面的模板可以生成子目录。

文件名最大长度,按字符计。

筛选
高级选项(5)

YYYYMMDD,或者像 now-1month 这样的相对日期。

YYYYMMDD,或者相对日期。

跳过更小的文件。可以写 5M、500K 之类。

跳过更大的文件。

停下来之前要下载的文件数量。

网络

例如 2M 或 500K。当你需要把余下带宽留给别的事情时很有用。

高级选项(5)

能加快分片流的下载。从 4 开始比较合适。

失败的分片要重试几次。也可以写 infinite。

HTTP、HTTPS 或 SOCKS proxy 的地址。

让请求看起来来自真实浏览器。突然出现 403 时,这是最常见的解法。

登录与 cookies

直接读取你的登录会话。私密、年龄限制或会员专属内容都需要它。

高级选项(1)

从浏览器导出的 Netscape 格式 cookies.txt。

直播
高级选项(2)

反复检查直到预定的直播开始。MIN-MAX 是两次检查之间的秒数。

故障绕行
高级选项(3)

已弃用,应改用 --add-headers。之所以保留,是因为很多旧教程还在用它。

已弃用,应改用 --add-headers。

按站点区分的专用选项,例如 youtube:player_client=web。

输出与调试
高级选项(2)
重置

为什么 Reddit 视频下来是没声音的

Reddit 把视频和音频存成两个文件。如果缺 ffmpeg,yt-dlp 会下载视频流,而没有任何东西把音频合进去 —— 文件能播,但是静音的,也没有任何报错解释原因。

装上 ffmpeg,本页预设会处理余下部分。图集帖子被当作播放列表,所以整个播放列表模式能取到全部内容。

v.redd.it 这个主机是大部分麻烦的起点。直接给 v.redd.it 链接可以干净地下载,但同一条视频若是通过 subreddit 信息流或 old.reddit.com 页面找到的,到手的是包着 Reddit 页面网址的链接,旧版 yt-dlp 有时拆不开这层包装。改任何其他设置之前先更新 —— yt-dlp -U —— Reddit 的 extractor 被重写过好几次,三个月前的二进制比网站现在的样子还要旧。

图集是另一半。Reddit 会把内含视频的图片图集打包,yt-dlp 则把它呈现成一个由独立条目组成的播放列表 —— 图片一张一条,视频自己占一条。如果你只要视频,关掉播放列表,yt-dlp 就只取视频;如果要全部,保持整个播放列表模式并加上记录文件,这样重跑时只会补上第一次失败的那些条目。

被隔离的和 NSFW 的 subreddit 需要 cookies —— 和其他地方一样的浏览器 cookies 选项 —— 因为 Reddit 不肯把媒体网址交给匿名请求。已删除的帖子是唯一任何选项都够不到的东西:帖子一删,媒体 CDN 条目跟着消失,从前存在的镜像也早就没了。仍然可用的是 Wayback Machine 存的页面本身,不过那在 yt-dlp 能抓取的范围之外。

Reddit 把自己托管的每样东西都重新编码,天花板还很低:v.redd.it 最高到 720p,所以 1080p 的高度上限找不到 720p 以上的东西,原样返回 720p 文件 —— 这是平台的上限,不是下载失败。只存音频也值得知道:给 Reddit 视频加 -x,会像别处一样提取音轨,这是从一条你不需要视频的帖子里只留声音的最快办法。

常见问题

为什么我下的 Reddit 视频没有声音?
Reddit 把视频和音频分开存放,所以必须合并 —— 而这需要 ffmpeg。静音的文件几乎总是意味着缺少 ffmpeg。
NSFW 帖子能用吗?
需要一个开启了 18+ 设置的登录会话。用 --cookies-from-browser 提供。
能下载整个图集帖子吗?
把播放列表处理设为整个播放列表;yt-dlp 把图集当作播放列表。