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

ExoPlayer播放YouTube链接失败 调用youtube提取库报FileNotFoundException

问题诱因

抛出该异常的直接原因是请求发起后,YouTube接口返回了404状态码,安卓原生HTTPURLConnection组件在收到4xx类错误响应时,会默认抛出FileNotFoundException,具体触发根源如下:

  • 所使用的android-youtubeExtractor原始版本已长期停止维护,其核心依赖的get_video_info公开接口在2020年就被YouTube逐步废弃下线,所有指向该端点的请求都会直接返回404,无法拉取到视频元数据与流地址信息。
  • 旧版本库的请求拼接逻辑已经完全失效,代码中附带的eurl等参数不符合YouTube当前的接口校验规则,即使接口未完全拦截,也会因为参数非法返回错误响应。
  • 即便临时绕过接口404问题,旧版本库内置的视频流签名解密逻辑也早已过时。YouTube会定期更新流地址的加密规则,未同步更新解密逻辑的前提下,获取到的流地址本身不具备访问权限,后续播放阶段仍会抛出403权限错误。
解决方案
  • 弃用长期停更的原始版本提取库,替换为社区持续维护的兼容YouTube流提取实现。这类维护版本已完全移除对废弃get_video_info接口的调用,适配了YouTube当前生效的元数据拉取接口,同时会同步跟进YouTube的签名加密规则更新,可稳定获取有效可播放的流地址。
  • 调整提取请求的配置,模拟正常YouTube客户端的请求头(包含合法User-Agent、客户端版本标识等字段),移除旧版本遗留的无效参数拼接逻辑,避免被接口反爬策略拦截。
  • 将提取到的视频流地址传入ExoPlayer时,需要给媒体源绑定的HTTP请求组件配置匹配的请求头(包含Referer、User-Agent字段),避免流地址被YouTube的鉴权逻辑拦截返回403。
  • 针对年龄限制、会员专属、私有、地域锁定类的非公开视频,需要额外补充对应的鉴权参数处理,普通无权限限制的公开视频通过适配后的提取逻辑即可正常获取播放地址。

触发问题的异常日志如下:

java.io.FileNotFoundException: https://www.youtube.com/get_video_info?video_id=TNAMFEo07PU&eurl=https%3A%2F%2Fyoutube.googleapis.com%2Fv%2FTNAMFEo07PU

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 14:45:42