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

Flutter安卓应用使用better_player播放视频触发ExoPlayer异常求助

修复Flutter better_player播放视频时的ExoPlayer DRM异常

这个异常的核心原因是ExoPlayer的API变更:新版本的MediaSource.Factory#setDrmSessionManagerProvider不再默认处理null值(旧版本会自动创建DefaultDrmSessionManagerProvider实例),必须显式传入该类的实例才能兼容原有逻辑。

修复方案

方案1:升级better_player到最新稳定版

  • 打开项目的pubspec.yaml文件,将better_player的依赖版本更新为最新稳定版
  • 执行命令:flutter pub get拉取更新后的依赖
  • 重新编译运行项目,新版本的better_player已适配ExoPlayer的这个API变更,能直接解决问题

方案2:手动修改安卓端代码(无法升级依赖时用)

  • 找到安卓项目中better_player的相关实现代码(若使用的是第三方依赖,需定位到better_player模块的源码)
  • 查找调用setDrmSessionManagerProvider(null)的代码行,替换为显式创建实例的代码:
    // 原代码
    mediaSourceFactory.setDrmSessionManagerProvider(null)
    
    // 修改后代码
    mediaSourceFactory.setDrmSessionManagerProvider(DefaultDrmSessionManagerProvider())
    
  • 确保代码顶部引入了对应的类:
    import com.google.android.exoplayer2.drm.DefaultDrmSessionManagerProvider;
    
  • 重新编译安卓项目即可

额外检查

如果项目中存在自定义的ExoPlayer集成逻辑,也要检查是否直接调用了setDrmSessionManagerProvider方法,确保传入的不是null,而是显式的DefaultDrmSessionManagerProvider实例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 02:25:21