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

Asset目录视频无法播放求助:ExoPlayer报Source error

排查ExoPlayer加载本地MP4的Source Error问题

针对你遇到的ExoPlayer播放本地MP4报错的情况,结合你提供的信息,从以下方向逐一排查:

  • 视频编码格式兼容性问题
    ExoPlayer对MP4的编码有明确兼容要求,并非所有MP4文件都能直接播放。1080p的MP4如果使用了ExoPlayer不支持的编码(比如特殊参数的H.265编码、非AAC格式的音频编码),就会触发Source error。你可以用MediaInfo这类工具查看视频的编码详情,确认视频编码为H.264(AVC)、音频编码为AAC,这是ExoPlayer对MP4的兼容基准。

  • 视频文件完整性问题
    即便视频时长正常,若文件本身存在损坏(比如拷贝、下载过程中出现丢包),也会导致加载失败。你可以将视频文件放到手机自带播放器中测试,如果自带播放器也无法打开,说明文件本身有问题,替换完整的视频文件即可。

  • 控制器初始化流程问题
    你的代码仅完成了控制器实例化,但可能未完成初始化就尝试播放。确保在调用play()前先执行await _controller.initialize(),同时处理初始化异常:

    _controller = VideoPlayerController.asset('assets/videos/disclaimer.mp4');
    try {
      await _controller.initialize();
      _controller.play();
    } catch (e) {
      print('初始化或播放失败: $e');
    }
    

    另外,记得在页面销毁时释放控制器:_controller.dispose();

  • pubspec.yaml资源配置细节
    再检查下pubspec里的资源配置缩进,Flutter对YAML格式的缩进要求严格,必须使用2个空格(不能用Tab):

    assets:
      - assets/videos/disclaimer.mp4
    

    缩进错误会导致资源无法被正确打包到APK中,ExoPlayer找不到文件也会报Source error。

  • video_player插件版本适配问题
    如果项目依赖的video_player插件版本较旧,可能与Android系统的ExoPlayer版本存在兼容性冲突。尝试将video_player更新到最新稳定版,然后重新构建项目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 14:54:52