如何使用Agora SDK在Flutter中实现直播流录制
Flutter接入Agora直播新增流录制能力实现方案
可行性结论
完全可以实现,无需推翻现有已稳定运行的直播逻辑,Agora提供两类成熟的录制方案覆盖不同场景需求。
方案1:云端录制(优先推荐,适配90%以上直播场景)
这个方案的录制进程完全运行在Agora云端服务器,不占用主播、观众端的设备算力,不会影响现有直播的推/拉流稳定性,支持单流单独录制、多流合布局录制,录制文件可直接归档到你自己的存储服务,适合直播回放生成、内容合规存证、多视角素材留存等通用需求。
具体实现步骤:
- 前置配置:登录Agora控制台为当前项目开通云端录制服务权限,提前配置好录制文件的存储参数,准备好存储服务的bucket、访问密钥、对应区域配置即可
- 服务端开发(核心逻辑必须放服务端,避免敏感信息泄露):
- 主播开播成功后,由你的业务服务端调用Agora云端录制启动接口,传入当前直播的频道ID、主播UID、录制模式(合流/单流)、录制文件存储路径等参数,拿到全局唯一的录制ID
- 录制过程中如果需要调整录制布局、增减订阅的音视频流,服务端直接调用对应更新接口即可,端侧不需要做任何适配
- 主播关播、或者直播异常中断时,服务端调用停止录制接口,Agora会自动将生成的录制文件上传到你预先配置的存储地址,同时回调录制文件的访问信息给你的业务服务端
- Flutter端适配:现有直播代码几乎不需要改动,只需要在主播开播成功、主动关播两个时机,给你的自有业务服务端发对应HTTP请求,触发服务端的录制启动/停止逻辑即可,不需要额外集成新的SDK。
注意:绝对不要把Agora的App证书、存储服务密钥这类敏感信息写在Flutter端代码里,所有录制相关的鉴权、接口调用逻辑全部放在自有服务端,避免密钥泄露被盗刷流量。
方案2:端侧本地录制(仅适合主播本地留存素材场景)
这个方案直接通过端侧集成的Agora Flutter SDK调用本地录制能力,将主播推出去的音视频流直接存储在主播本地设备,不需要走云端录制链路,适合主播需要本地保存直播原片、后续自行剪辑的场景。
具体实现步骤:
- 版本校验:确认你当前项目接入的Agora Flutter SDK版本为4.0及以上的稳定版,版本过低先升级,避免录制接口不兼容
- 接口调用逻辑:
- 主播端完成推流配置、成功加入直播频道后,调用SDK提供的
startRecording方法,传入本地文件存储路径、录制分辨率、码率、是否采集麦克风音频、是否合并音视频轨等配置参数即可启动录制 - 录制过程中可以通过SDK提供的回调监听实时获取录制状态,包括已录制时长、生成文件大小、录制异常报错等
- 主播结束直播前,调用
stopRecording方法终止录制,SDK会自动将完整的录制文件写入之前传入的本地路径,后续可根据业务需求做本地预览、手动上传等操作
- 主播端完成推流配置、成功加入直播频道后,调用SDK提供的
- 权限适配:Android端需要提前动态申请存储写入权限,iOS端需要在配置文件中添加本地文件读写、相册访问的权限描述,否则会出现录制启动失败、文件无法保存的问题。
选型建议
- 只要是平台侧需要留存直播文件、生成回放的需求,直接选云端录制,端侧改动量极小,稳定性远高于端侧录制,也不会出现因为主播设备性能不足、中途退后台导致录制文件损坏的问题
- 只有当主播需要离线留存本地素材、不需要平台侧存储文件时,再选择端侧本地录制方案
内容的提问来源于stack exchange,提问作者Abdullah Bilal Khanzada
相关产品推荐
相关产品推荐

