如何通过OBS推流至Agora并在Flutter App中播放直播流?
基于Agora的直播流搭建步骤
一、Agora平台配置
- 注册Agora账号并创建直播项目,获取App ID和临时Token(生产环境需自行生成安全Token,避免使用临时Token)
- 在Agora控制台开启RTMP推流功能,生成专属推流地址(格式示例:
rtmp://push.agora.io/live/your_stream_name?token=your_token)
二、OBS推流设置
- 打开OBS,进入「设置」-「推流」面板
- 服务选择「自定义」,将Agora生成的RTMP地址填入「服务器」栏,串流密钥按控制台提示填写(部分场景需将流名拆分作为密钥)
- 调整视频参数(建议匹配Agora默认配置:1080p分辨率、30fps帧率),点击「开始推流」,确认Agora控制台显示推流状态正常
三、Flutter端播放实现
方案1:Agora官方媒体播放器
- 在Flutter项目的
pubspec.yaml中添加agora_rtc_engine依赖并执行flutter pub get - 初始化Agora引擎:
await AgoraRtcEngine.createWithConfig(RtcEngineConfig(your_app_id)); - 创建媒体播放器实例并播放:
final player = AgoraMediaPlayer(); await player.open(url: 'http://pull.agora.io/live/your_stream_name.m3u8', startPos: 0); await player.play(); - 通过
AgoraVideoView组件绑定播放器,在UI中展示视频画面
方案2:第三方简易播放器
- 添加
chewie(基于video_player的封装,更易用)依赖到pubspec.yaml - 直接传入Agora生成的HLS拉流地址初始化播放器:
final videoController = VideoPlayerController.network('http://pull.agora.io/live/your_stream_name.m3u8'); await videoController.initialize(); final chewieController = ChewieController( videoPlayerController: videoController, autoPlay: true, looping: false, ); - 使用
Chewie组件在页面中渲染播放器(注意iOS需配置ATS允许HTTP访问,Android需添加网络权限)
替代方案推荐
1. Amazon IVS
- 操作流程:AWS控制台创建IVS频道,获取RTMP推流地址与密钥,OBS推流后,通过IVS生成的HLS地址在Flutter端播放(可使用官方
amazon_ivs_player插件或video_player) - 核心优势:自动多码率适配,低延迟模式延迟可达2-5秒,无缝集成AWS生态服务
2. Azure Media Services
- 操作流程:创建AMS账户与直播端点,获取RTMP推流地址,OBS推流后生成HLS/DASH拉流地址
- 核心优势:具备专业媒体处理能力(转码、DRM保护),支持多CDN分发,适合企业级直播场景
3. 阿里云直播
- 操作流程:阿里云控制台创建直播域名,生成推流/拉流地址,OBS推流后用HLS地址在Flutter端播放
- 核心优势:国内节点覆盖广,访问速度快,延迟低,适合面向国内用户的直播业务
内容的提问来源于stack exchange,提问作者zainali23
相关产品推荐
相关产品推荐

