使用Pytube下载YouTube视频时遇url_encoded_fmt_stream_map错误求助
解决Pytube的url_encoded_fmt_stream_map错误
我之前也踩过这个坑,这个错误基本都是因为YouTube更新了流媒体的格式映射规则,而你的Pytube版本没跟上,或者旧的API调用方式已经失效了。给你几个亲测有效的解决办法:
先升级Pytube到最新版
YouTube的接口经常迭代更新,旧版本的Pytube肯定会出现解析失败的问题。打开终端运行这个命令:pip install --upgrade pytube注意:如果之前装的是
pytube3这类分支包,建议先卸载再安装官方的pytube,分支的维护速度通常跟不上官方节奏。替换废弃的
first()方法
新版本的Pytube已经弃用了first()这个方法,继续使用会导致解析逻辑出错。你可以换成更明确的调用方式:
比如直接下载最高分辨率的视频:from pytube import YouTube yt = YouTube('http://youtube.com/watch?v=9bZkp7q19f0') yt.streams.get_highest_resolution().download()如果只想下载合并好的MP4格式视频(不用后续转码),可以这样筛选:
yt.streams.filter(file_extension='mp4', progressive=True).get_highest_resolution().download()处理区域/登录限制
如果视频有区域限制或者需要登录才能观看,单纯的解析会失败。可以试试开启OAuth授权:from pytube import YouTube yt = YouTube( 'http://youtube.com/watch?v=9bZkp7q19f0', use_oauth=True, allow_oauth_cache=True ) yt.streams.get_highest_resolution().download()第一次运行会弹出浏览器让你登录YouTube授权,授权成功后会缓存凭证,下次就不用重复操作了,能绕过很多登录/区域限制。
检查网络环境
如果你的网络用了代理或者VPN,可能会干扰Pytube的解析请求。可以暂时关掉代理,或者确保代理能正常访问YouTube的API接口。
内容的提问来源于stack exchange,提问作者Soares
相关产品推荐
相关产品推荐

