You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pytube下载不超过1080P的最高可用分辨率视频?

YouTube视频下载优化方案

现有代码

url = message.text
file = YouTube(url)
stream = file.streams.get_by_resolution(360)
stream.download(filename='qwe.mp4')

问题背景

目前仅掌握两种获取视频流的方式:通过itag或指定固定分辨率(示例中为360P),但部分视频不存在360P分辨率,最高仅为240P或120P,因此需要更灵活的流选择逻辑。

解决方案

1. 下载不超过1080P的最高可用分辨率视频

完全可以实现,核心思路是筛选出所有分辨率≤1080P的视频流,再按分辨率从高到低排序,取优先级最高的流即可。

如果需要直接下载包含音视频的完整流(无需后期合并),使用以下代码:

url = message.text
file = YouTube(url)
# 筛选不超过1080P、包含音视频的流,按分辨率降序排列
valid_streams = file.streams.filter(resolution__lte='1080p', progressive=True).order_by('-resolution')
if valid_streams:
    highest_stream = valid_streams.first()
    highest_stream.download(filename='qwe.mp4')
else:
    print("未找到符合条件的视频流")

如果需要支持分离式音视频流(部分高分辨率视频仅提供分离流),可以去掉progressive=True参数,后续自行合并音视频即可。

2. 通过首个存在的itag下载视频

如果上述方案因特殊场景不可行,直接获取列表中第一个可用的流即可,对应的代码如下:

url = message.text
file = YouTube(url)
first_stream = file.streams.first()
first_stream.download(filename='qwe.mp4')

streams.first()会返回默认排序中第一个可用的流,通常是兼容性较好的低分辨率选项。

内容的提问来源于stack exchange,提问作者Goorhatar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 04:25:38