Reddit 的 yt-dlp 命令生成器
为 Reddit 视频生成 yt-dlp 命令 —— 包括让它们有声音的那一步合并。
为什么 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,会像别处一样提取音轨,这是从一条你不需要视频的帖子里只留声音的最快办法。