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

Windows系统下修复pytube模块KeyError: 'url_encoded_fmt_stream_map'问题

解决Windows上pytube的KeyError: 'url_encoded_fmt_stream_map'问题

这个错误本质是YouTube更新了页面数据结构,旧版本的pytube还在沿用过时的字段名解析流数据,下面是几种在Windows上可行的修复方案:

方案1:升级到pytube最新修复版本

这是最直接的解决方法,官方社区已经针对这个问题做了修复,只是PyPI上的版本可能存在滞后。操作步骤如下:

  • 打开命令提示符(CMD)或PowerShell(右键选择“以管理员身份运行”避免权限问题)
  • 先尝试升级官方版本:
    pip install --upgrade pytube
    
  • 如果升级后问题依旧,强制重新安装或者安装GitHub上的最新源码版本:
    pip install pytube --force-reinstall
    # 或者直接安装GitHub最新版
    pip install git+https://github.com/pytube/pytube.git
    

方案2:手动修改pytube源代码(适合不想升级的情况)

如果升级后还是有问题,或者你需要保留特定版本,可以手动修改pytube的解析逻辑:

  1. 找到pytube的安装目录:默认路径一般是C:\Users\[你的用户名]\AppData\Local\Programs\Python\Python[版本号]\Lib\site-packages\pytube(把[你的用户名]和[版本号]换成实际内容)
  2. 打开目录下的extract.py文件,找到get_ytplayer_config函数
  3. 替换原来获取url_encoded_fmt_stream_map的代码,改为从player_response中解析流数据:
    原来的代码可能类似:
    stream_map = ytplayer_config['url_encoded_fmt_stream_map']
    
    替换成:
    import json
    player_response = json.loads(ytplayer_config['player_response'])
    stream_data = player_response['streamingData']
    # 后续可以从stream_data的['formats']和['adaptiveFormats']中获取流信息
    
  4. 保存文件后重启Python环境,再测试你的代码。

方案3:切换到更稳定的替代工具yt-dlp

如果pytube的问题反复出现,推荐使用yt-dlp——这是一个维护更活跃的YouTube下载工具,对页面结构的更新适配更快:

  • 安装yt-dlp:
    pip install yt-dlp
    
  • 简单的Python调用示例:
    import yt_dlp
    
    video_url = "你的YouTube视频URL"
    # 可以自定义下载参数,比如指定画质、格式等
    ydl_options = {
        'format': 'bestvideo+bestaudio/best'
    }
    
    with yt_dlp.YoutubeDL(ydl_options) as ydl:
        ydl.download([video_url])
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:50:56