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

Flutter添加Video_Trimmer后Better_Player无法播放问题求助

问题分析

添加 video_trimmer 插件后,better_player 无法播放视频,移除插件则恢复正常。控制台抛出的核心错误为:

java.lang.NullPointerException: MediaSource.Factory#setDrmSessionManagerProvider 不再通过实例化新的 DefaultDrmSessionManagerProvider 来处理 null 值。请显式构造并传递一个实例以保留原有行为。

本质是两个插件依赖的 ExoPlayer 版本冲突:

  • 你当前使用的 better_player: ^0.0.83 基于旧版 ExoPlayer(2.17.x)开发,代码中会向 setDrmSessionManagerProvider 传递 null;
  • video_trimmer: ^1.1.3 引入了更新的 ExoPlayer(2.18+),该版本严格禁止传递 null,导致 better_player 触发空指针异常。

解决方法

方法1:强制统一ExoPlayer版本

在 pubspec.yaml 中添加依赖覆盖,强制使用与 better_player 兼容的 ExoPlayer 版本:

dependency_overrides:
  exoplayer_android: 2.17.1
  exoplayer_core: 2.17.1
  exoplayer_dash: 2.17.1
  exoplayer_hls: 2.17.1
  exoplayer_rtsp: 2.17.1
  exoplayer_smoothstreaming: 2.17.1
  exoplayer_transformer: 2.17.1

添加后执行 flutter pub get,重新运行项目。

方法2:升级better_player到兼容版本

将 better_player 升级到修复了 ExoPlayer 兼容性问题的版本(如 ^0.0.86 及以上),新版本已适配 ExoPlayer 2.18+ 的 API 变更:

better_player: ^0.0.86
video_trimmer: ^1.1.3

执行 flutter pub get 后重新测试。

方法3:降级video_trimmer版本

如果上述方法无效,可以尝试降级 video_trimmer 到依赖旧版 ExoPlayer 的版本(如 ^1.0.6),但此方法可能会丢失新版本的功能:

better_player: ^0.0.83
video_trimmer: ^1.0.6

验证步骤

  • 执行 flutter clean 清除缓存;
  • 执行 flutter pub get 安装依赖;
  • 卸载当前应用后重新运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 09:33:33