如何在yt-dlp中同时指定视频最大分辨率与格式/编码格式?
如何在yt-dlp中同时指定视频最大分辨率与格式/编码格式?
别着急,这个需求完全可以实现,你之前只是用错了语法而已~
正确的写法有两种,你可以任选其一:
写法一:用多个过滤器块叠加(更直观)
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]+ba*[ext=m4a]" -N 4 "https://www.youtube.com/xxx"
为什么你之前的写法不对?
- 你尝试用逗号分隔条件
height<=720,ext=mp4,这不符合yt-dlp的过滤器语法,所以会抛出语法错误; - 而
bv*[height<=720]+bv*[ext=mp4]的写法,其实是让yt-dlp依次匹配两个独立的视频流规则,它会优先选择第一个符合height<=720的流,第二个规则自然就被忽略了,这并不是“同时满足两个条件”的逻辑。
补充:指定编码格式(比如avc1)
如果你的需求是限定编码格式而非仅仅容器格式,把ext=mp4换成vcodec=avc1即可,示例:
yt-dlp -v -f "bv*[height<=720][vcodec=avc1]+ba*[ext=m4a]" -N 4 "https://www.youtube.com/xxx"
备注:内容来源于stack exchange,提问作者Bart Lederman




