Flutter中video_player插件无法播放RTSP流如何解决?
仅使用video_player播放RTSP流的实现方案
首先明确:video_player本身并未内置RTSP解码支持,需通过配置其底层依赖的原生播放器扩展来实现,因为该插件是基于Android的ExoPlayer和iOS的AVPlayer封装的。
Android 平台配置
video_player在Android端依赖ExoPlayer,而ExoPlayer默认不支持RTSP,需添加官方的RTSP扩展:
- 打开项目的
android/app/build.gradle文件,在dependencies块中添加ExoPlayer的RTSP扩展依赖:
dependencies { // 保留原有依赖,新增如下内容 implementation "com.google.android.exoplayer:exoplayer-rtsp:2.X.X" }
注意:将2.X.X替换为当前video_player依赖的ExoPlayer版本(可查看video_player的android/build.gradle文件确认版本号)。
2. 确认项目已申请INTERNET权限(AndroidManifest.xml中默认已配置,但需确保未被移除),同时检查RTSP流地址格式正确(如rtsp://192.168.1.100:554/stream)。
iOS 平台配置
iOS端video_player依赖AVPlayer,仅iOS 14及以上版本的AVPlayer支持RTSP流,配置步骤:
- 修改
ios/Podfile,将部署目标设置为iOS 14.0或更高:
platform :ios, '14.0'
- 在
ios/Runner/Info.plist中添加网络权限配置,允许加载非HTTPS资源:
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
- 确保RTSP流符合标准规范,AVPlayer对RTSP的支持有限,仅兼容基础RTP传输的流。
异常排查
- 先使用VLC等第三方播放器测试RTSP流地址,确认流本身可正常播放。
- 检查设备网络是否能访问RTSP服务器,排除防火墙、端口限制等问题。
- Android端若添加扩展后仍报错,需确认ExoPlayer扩展版本与video_player依赖的ExoPlayer版本完全一致,版本不匹配会引发兼容性问题。
提示:即便完成上述配置,video_player对RTSP的支持稳定性仍不如专门的流媒体插件,但如果必须仅使用该插件,上述配置是唯一可行的路径。
内容的提问来源于stack exchange,提问作者Adarsh Singh
相关产品推荐
相关产品推荐

