我经常使用 yt-dlp,并且很喜欢它。但是有一个问题我找不到任何记录。
yt-dlp -v -f "bv*[height<=720]+ba*[ext=m4a]" -N 4 "https://www.youtube.com/xxx"
将找到不超过720分辨率的最佳视频。
yt-dlp -v -f "bv*[ext=mp4]+ba*[ext=m4a]" -N 4 "https://www.youtube.com/xxx"
将找到最佳的 MP4 类型视频,无论分辨率如何。
我想选择扩展/编解码器(avc1
)并限制高度。
yt-dlp -v -f "bv*[height<=720,ext=mp4]+ba*[ext=m4a]" -N 4 "https------"
看起来有道理,但却失败了;
语法错误:无效的过滤器规范“height<=720,ext=mp4”
我尝试使用各种字符来分隔两个过滤器(;
&
+
等),但找不到正确的语法(如果有的话)。我进行了各种网络搜索,但找不到使用两个限定符(如最大分辨率和文件类型)的示例。
我也尝试过:
yt-dlp -v -f "bv*[height<=720]+bv*[ext=mp4]+ba*[ext=m4a]" -N 4 "http----"
运行没有错误,但只使用了第一个“BV”过滤器,设置了最大高度。似乎忽略了指定 MP4 的第二个过滤器。
所以我的问题是:是否可以为视频指定两个或更多过滤器,或者这是 yt-dlp 无法做到的?
如果可以的话,有人能提供正确的语法吗?或者指出说明它是什么的确切网页?
答案1
根据文档,这应该有效:
yt-dlp -v -f "bv*[height<=720][ext=mp4]+ba*[ext=m4a]" -N 4 "https://www.youtube.com/xxx"
因此基本上您可以在单独的方括号对中指定每个过滤器。
如果您还想下载之前未指定的特定编解码器,您也可以为其添加过滤器:
yt-dlp -v -f "bv*[height<=720][ext=mp4][vcodec^=avc1]+ba*[ext=m4a]" -N 4 "https://www.youtube.com/xxx"
^=
意思是“以...开始”,因为avc1
编解码器似乎.
在列表之后有一些额外的哈希值或其他内容。