使用Flutter FijkPlayer播放RTSP流时出现连接拒绝错误求助
FijkPlayer播放RTSP流连接拒绝问题的解决方案
1. 补充Android网络权限配置
Android平台必须声明网络权限,且Android 9+需允许明文网络请求:
- 在
android/app/src/main/AndroidManifest.xml中添加权限:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- 在
<application>标签内添加明文请求允许:
android:usesCleartextTraffic="true"
2. 配置RTSP专属播放选项
FijkPlayer默认配置可能不兼容部分RTSP服务器,需手动指定传输方式与超时参数:
修改initState方法:
@override void initState() { super.initState(); // 强制使用TCP传输,适配多数RTSP服务器 player.setOption(FijkOption.categoryFormat, "rtsp_transport", "tcp"); // 设置3秒超时(单位:微秒) player.setOption(FijkOption.categoryFormat, "stimeout", 3000000); player.setDataSource('rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mp4', autoPlay: true); }
3. 确认ijkplayer协议支持
若上述方法无效,可能是当前fijkplayer依赖的ijkplayer未编译RTSP支持:
- 尝试更换包含全协议支持的fijkplayer版本,或自行编译ijkplayer并集成,确保编译时开启
CONFIG_RTSP、CONFIG_RTP等相关选项。
4. 本地RTSP服务器排查
针对本地流,需确认:
- 设备与服务器处于同一局域网,且服务器554端口(RTSP默认)未被防火墙拦截
- 本地RTSP服务运行正常,可通过VLC再次验证流地址有效性
内容的提问来源于stack exchange,提问作者Raphael Sauer
相关产品推荐
相关产品推荐

