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

Flutter Chewie播放GCP存储桶视频报404但Chrome可正常播放

解决Chewie播放GCP存储桶视频报404的问题

针对你遇到的Chewie播放视频返回exoplayer2.upstream.HttpDataSource$InvalidResponseCodeException: Response code: 404错误,给出以下排查和解决方向:

  • 检查存储桶视频的访问权限
    GCP存储桶默认是私有访问,Chrome和VLC能播放大概率是因为你的本地环境(比如浏览器登录了GCP账号、VLC通过系统凭证授权)已经具备访问权限,但Chewie/ExoPlayer是直接发起HTTP请求,没有携带这些凭证,所以返回404。
    解决方式:要么将该视频对象设置为公开可读(适合非敏感内容),要么生成带签名的临时访问URL(有效期内可直接访问,适合敏感内容)。

  • 验证视频URL的正确性
    确认你使用的URL是GCP存储桶提供的HTTP/HTTPS访问地址,而非gs://协议地址——ExoPlayer不直接支持gs://协议,必须转换成可公开访问的HTTP格式(比如https://storage.googleapis.com/[bucket-name]/[video-path])。另外检查URL中是否有特殊字符(比如空格、中文)未做URL转义,这也可能导致请求路径错误返回404。

  • 自定义HttpDataSource的User-Agent
    部分存储服务会验证请求的User-Agent,ExoPlayer默认的UA和Chrome、VLC不同,可能被拦截返回404。你可以修改Chewie示例代码中的ExoPlayer配置,自定义UA:

    val dataSourceFactory = DefaultHttpDataSource.Factory()
        .setUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36")
    val mediaSource = ProgressiveMediaSource.Factory(dataSourceFactory)
        .createMediaSource(MediaItem.fromUri(yourVideoUrl))
    
  • 排查设备网络环境
    确认测试设备的网络是否能正常访问GCP存储服务,比如是否处于限制外网的环境(如公司内网),而Chrome能访问是因为走了系统代理,但App未配置代理。可以尝试用设备的浏览器直接打开视频URL,看是否能正常加载——如果浏览器也打不开,那就是网络或权限问题。

正如Jar-Jar所说:“任何帮助都很受欢迎”

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 01:57:53