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

使用Pytube获取视频流时遭遇KeyError: 'streamingData'错误求助

解决pytube抛出KeyError: 'streamingData'的问题

我写了一段代码查看播放列表里视频的720p流,代码如下:

from pytube import Playlist
from pytube import YouTube as YT
import threading as th
import time

plist=input('Enter the playlist: ')

videos=list(Playlist(plist))
i=videos[0]
video=YT(i)
strm=video.streams.filter(res="720p")
print(strm)

运行后出现错误:

Traceback (most recent call last):
  File "D:\Practicals\Python\ML\youtube\temp.py", line 11, in <module>
    strm=video.streams.filter(res="720p")
         ^^^^^^^^^^^^^
  File "D:\Python311\Lib\site-packages\pytube\__main__.py", line 296, in streams
    return StreamQuery(self.fmt_streams)
                       ^^^^^^^^^^^^^^^^
  File "D:\Python311\Lib\site-packages\pytube\__main__.py", line 176, in fmt_streams
    stream_manifest = extract.apply_descrambler(self.streaming_data)
                                                ^^^^^^^^^^^^^^^^^^^
  File "D:\Python311\Lib\site-packages\pytube\__main__.py", line 161, in streaming_data
    return self.vid_info['streamingData']
           ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
KeyError: 'streamingData'

解决方法:

  • 更新pytube到最新版本:旧版本pytube可能适配不了YouTube的最新接口,执行命令更新:
    pip install --upgrade pytube
    
  • 检查视频权限:如果视频是年龄限制、地域封锁或需要登录才能观看的内容,pytube无法获取streamingData。手动打开视频链接确认是否能正常访问。
  • 修改pytube请求头:YouTube可能拦截pytube的默认请求头,手动添加浏览器的User-Agent:
    修改代码中创建YT对象的部分:
    from pytube import YouTube as YT
    # 替换成你自己浏览器的User-Agent(可在浏览器控制台的Network选项中查看)
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"}
    video = YT(i, headers=headers)
    
  • 确认视频状态:如果视频是直播、已删除或私有视频,也会触发这个错误,检查播放列表里的第一个视频是否能正常播放。

内容的提问来源于stack exchange,提问作者Aaryan R Soni

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 17:30:07