如何在 yt-dlp 中选择最大分辨率并指定格式/编解码器?

如何在 yt-dlp 中选择最大分辨率并指定格式/编解码器?

我经常使用 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编解码器似乎.在列表之后有一些额外的哈希值或其他内容。

相关内容