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

Kotlin中如何从Firebase Storage获取视频并加载到VideoView

功能实现方案

1 检索Firebase Storage中的视频文件

你已经完成了对应视频文件的StorageReference初始化,接下来只需通过该引用的downloadUrl异步接口获取视频的可访问下载地址即可,该接口会自动处理签名校验,返回的URI可以直接给播放器使用。

2 加载视频到VideoView播放

将上一步获取到的URI设置给VideoView,搭配MediaController即可实现完整的播放控制逻辑,完整实现代码如下:

// 你已有的初始化代码
val storageRef = FirebaseStorage.getInstance().reference.child("videos/$recivir.mp4")
val mediaController = MediaController(this)
mediaController.setAnchorView(videoView)
videoView.setMediaController(mediaController)

// 异步获取视频下载地址并加载播放
storageRef.downloadUrl.addOnSuccessListener { uri ->
    // 获取到下载URI后设置给VideoView
    videoView.setVideoURI(uri)
    videoView.setOnPreparedListener { mp ->
        // 可按需配置播放参数,比如是否循环播放
        mp.isLooping = false
        // 准备完成后自动播放,不需要自动播放可删除本行
        videoView.start()
    }

    videoView.setOnErrorListener { mp, what, extra ->
        // 播放出错的处理逻辑,可自定义提示样式
        Toast.makeText(this@你的Activity类名, "视频加载失败,请稍后重试", Toast.LENGTH_SHORT).show()
        true
    }
}.addOnFailureListener { exception ->
    // 从Firebase获取下载地址失败的处理,常见原因有文件不存在、Storage权限不足等
    Toast.makeText(this@你的Activity类名, "获取视频资源失败:${exception.message}", Toast.LENGTH_SHORT).show()
}
注意事项
  • 首先需要在AndroidManifest.xml中添加网络权限,否则无法加载云端视频:
    <uses-permission android:name="android.permission.INTERNET" />
    
  • 开发阶段如果出现获取地址失败的问题,可先检查Firebase Storage的读写规则,测试阶段可临时开放读取权限验证逻辑:

测试用临时规则(仅开发阶段使用,上线前务必替换为符合业务安全要求的规则):

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read: if true;
      allow write: if false;
    }
  }
}
  • 大体积视频建议开启Firebase Storage的CDN缓存,可显著提升加载速度、降低流量消耗。

内容的提问来源于stack exchange,提问作者Andrés Arboleda

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:45:03