Flutter用chewie/video_player播放网络视频遇ExoPlaybackException错误求助
问题排查与解决方法
1. 修复URL编码问题
你的视频链接中存在HTML转义字符&,这会导致URL解析错误,服务器无法定位到正确的视频资源。将链接中的&替换为&:
原链接:
https://server.appsstaging.com:3091/uploads/moduleImage/2023-06-13T08-33-03.541ZY2Mate.is%20-%20This%20crab%20is%20so%20fun%20Useful%20Baby%20Product%20&%20Toys%201213--nUnAkXniYU-720p-1658960279583.mp4
修正后链接:
https://server.appsstaging.com:3091/uploads/moduleImage/2023-06-13T08-33-03.541ZY2Mate.is%20-%20This%20crab%20is%20so%20fun%20Useful%20Baby%20Product%20&%20Toys%201213--nUnAkXniYU-720p-1658960279583.mp4
2. 调整初始化顺序
当前代码中,ChewieController在VideoPlayerController初始化完成前就已创建,可能导致控制器状态异常。修改_initPlayer方法,确保视频控制器初始化完成后再创建Chewie控制器:
void _initPlayer() { videoPlayerController = VideoPlayerController.network( "修正后的视频链接" ); videoPlayerController.initialize().then((_) { setState(() { chewieController = ChewieController( videoPlayerController: videoPlayerController, autoPlay: false, looping: false, zoomAndPan: true, deviceOrientationsAfterFullScreen: DeviceOrientation.values, ); }); }); }
3. 检查视频编码兼容性
ExoPlayer对视频编码有特定要求,优先确保视频采用H.264(AVC)视频编码和AAC音频编码(移动端支持最广泛的格式)。可通过ffmpeg工具检查视频编码:
ffmpeg -i your_video.mp4
4. 验证服务器SSL证书
链接使用HTTPS,若服务器SSL证书不被Android系统信任(如自签名证书),会导致视频加载失败。可采取以下措施:
- 更换为受信任的正规SSL证书
- 测试环境下,配置允许不安全的HTTPS连接(生产环境禁用):
在android/app/src/main/res/xml下创建network_security_config.xml:
然后在<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">server.appsstaging.com</domain> </domain-config> </network-security-config>AndroidManifest.xml的<application>标签中添加:android:networkSecurityConfig="@xml/network_security_config"
5. 确认网络权限
检查Android项目的AndroidManifest.xml中是否添加了网络权限:
<uses-permission android:name="android.permission.INTERNET"/>
内容的提问来源于stack exchange,提问作者sarakhan
相关产品推荐
相关产品推荐

