如何通过PyTube清晰打印YouTube视频的全部分辨率?
解决PyTube获取YouTube视频所有分辨率不全的问题
你之前的代码只过滤了progressive流,这是问题核心——YouTube的progressive流是音视频合并的格式,仅支持低分辨率(通常最高到720p);而1080p及以上的高分辨率视频,都是以adaptive流的形式存在(视频与音频分离),只取progressive流必然会漏掉这些高分辨率选项。
要获取所有分辨率,需要同时包含progressive和adaptive的视频流,具体实现代码如下:
from pytube import YouTube video_url = "你的YouTube视频链接" yt = YouTube(video_url) # 获取所有视频流(包含progressive和adaptive),提取分辨率并去重 resolutions = [] for stream in yt.streams.filter(type="video"): if stream.resolution not in resolutions: resolutions.append(stream.resolution) # 按分辨率数值大小排序(避免字符串排序导致的顺序错误) resolutions.sort(key=lambda x: int(x[:-1])) print("所有可用分辨率:") for res in resolutions: print(res)
代码关键点说明:
yt.streams.filter(type="video"):筛选所有视频流,覆盖音视频合并的progressive和分离的adaptive两种类型- 去重处理:同一分辨率可能对应不同编码格式的流,避免重复添加
- 自定义排序规则:
key=lambda x: int(x[:-1])提取分辨率的数字部分转成整数,保证排序为144p→240p→360p→…→2160p的正确顺序
运行代码后,会输出该视频完整的分辨率列表,示例如下:
所有可用分辨率: 144p 240p 360p 480p 720p 1080p 1440p 2160p
内容的提问来源于stack exchange,提问作者Hasan Hüseyin
相关产品推荐
相关产品推荐

