通常,youtube-dl 的目标是尽可能追求最高质量。但这并不总是可行的。我看到的另一面是尽可能追求最低质量。这也不切实际。有什么命令可以让 youtube-dl 找到最高质量的格式之内设定一个限制?
例如:分辨率宽度等于或低于某个值。请参阅此示例,了解给定视频链接的可用格式:
youtube -F <link>
...
format code extension resolution note
2242414685833597ad m4a audio only DASH audio 21k , m4a_dash container, mp4a.40.2 (48000Hz)
572715713158985v mp4 426x240 DASH video 216k , mp4_dash container, avc1.4D401E, video only
110928776481884vd mp4 640x360 DASH video 420k , mp4_dash container, avc1.4D401E, video only
896314927220784v mp4 854x480 DASH video 738k , mp4_dash container, avc1.4D401E, video only
313835759204486v mp4 1280x720 DASH video 1372k , mp4_dash container, avc1.4D401F, video only
dash_sd_src mp4 unknown
dash_sd_src_no_ratelimit mp4 unknown (best)
110928776481884vd
我想告诉 youtube-dl 选择宽度不超过 640 像素的最高质量的视频流。在本例中就是这样。
如果无法通过分辨率宽度实现,我们可以通过比特率实现。因此,在这个例子中,比特率应为 500k 或更低。
注意:这个问题专门针对来自不同提供商且具有不同格式的非 YouTube 视频。YouTube 视频具有标准格式名称,因此我已经修复了这个问题。
答案1
阅读精美手册:
Format selection examples
Note that on Windows you may need to use double quotes instead of sin‐
gle.
# Download best mp4 format available or any other best if no mp4 available
$ youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best'
# Download best format available but not better that 480p
$ youtube-dl -f 'bestvideo[height<=480]+bestaudio/best[height<=480]'
# Download best video only format but no bigger than 50 MB
$ youtube-dl -f 'best[filesize<50M]'