Asset目录视频无法播放求助:ExoPlayer报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

