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

使用Pytube下载YouTube视频时出现KeyError: 'bitrate'问题求助

KeyError: 'bitrate' 问题分析与解决

错误原因

这个错误的核心是YouTube返回的视频流元数据中缺失了bitrate字段,而你使用的pytube版本代码直接通过键取值(stream["bitrate"]),没有处理字段缺失的异常情况。

常见触发场景:

  • 部分特殊类型的YouTube视频流(比如某些自适应流、低分辨率流或新格式流)的元数据结构和常规流不同,未包含bitrate字段;
  • 你使用的pytube版本过旧,官方后续修复了字段缺失的兼容逻辑,但你的版本未覆盖该处理。

解决方法

1. 升级pytube到最新版本

这是最直接的解决方案,官方大概率已经修复了这类字段缺失的异常处理。执行以下命令升级:

pip install --upgrade pytube

如果升级后仍有问题,可尝试强制重装:

pip install pytube --force-reinstall

2. 手动修改pytube源码兼容缺失字段

如果暂时无法升级版本,可直接修改报错的streams.py文件:
找到第60行的代码,将:

self.bitrate: Optional[int] = stream["bitrate"]

替换为使用get方法安全取值:

self.bitrate: Optional[int] = stream.get("bitrate")

这样当bitrate字段不存在时,会返回None而非抛出KeyError。

3. 过滤掉无bitrate字段的流

在获取视频流时,主动过滤掉不包含bitrate的流,避免触发错误:

from pytube import YouTube

yt = YouTube("https://www.youtube.com/watch?v=kMKS2QpFTVI")
# 只保留包含bitrate的流
valid_streams = yt.streams.filter(bitrate__isnot=None)
# 选择需要的流下载,比如最高分辨率的视频流
valid_streams.get_highest_resolution().download()

4. 尝试启用OAuth验证(可选)

部分视频虽然可直接访问,但YouTube的API响应可能需要验证才能返回完整的流元数据,可尝试启用OAuth:

yt = YouTube("https://www.youtube.com/watch?v=kMKS2QpFTVI", use_oauth=True, allow_oauth_cache=True)
yt.streams.get_highest_resolution().download()

首次运行会提示你登录YouTube账号,后续会缓存验证信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 11:06:23