合流配置
本部分介绍合流时客户端的布局设置,关于合流的参数配置,可以查阅服务端合流。
创建合流任务
创建合流任务不是必需的。合流时,如果未提前创建合流任务,那么,会使用对应的应用的合流参数创建一个默认的合流任务。关于如何设置应用的合流参数,可参考服务端合流。如果需要针对单次合流使用自定义的合流参数,那么可以通过如下接口创建合流任务:
- (void)createMergeStreamJobWithConfiguration:(QNMergeStreamConfiguration *)configuration;
创建合流任务是异步操作,成功后会通过如下回调通知。
- (void)RTCEngine:(QNRTCEngine *)engine didCreateMergeStreamWithJobId:(NSString *)jobId;
关于 QNMergeStreamConfiguration 属性的具体含义,可参考 QNMergeStreamConfiguration。
将 Track 加入合流
通过如下接口:
- (void)setMergeStreamLayouts:(NSArray <QNMergeStreamLayout *> *)layouts
jobId:(NSString *)jobId;
可将一组 Track 加入合流。QNMergeStreamLayout 中的 trackId 属性用于指定需要加入合流的 Track,frame 指定在合流画面中的大小和位置(仅限视频流),zIndex 用于指定在合流画面的层次(仅限视频流)。如果有手动创建合流任务,jobId 则传入所创建的合流任务的 id,否则,传入 nil 即可。
如果需要更新 Track 的 layout 配置,再次调用该接口即可。
将 Track 从合流中移除
将 Track 加入合流后,如果需要移除,只需要调用如下接口,并在 QNMergeStreamLayout 中传入对应的 trackId 即可,frame 及 zIndex 参数可忽略。jobId含义同上。
- (void)removeMergeStreamLayouts:(NSArray <QNMergeStreamLayout *> *)layouts
jobId:(NSString *)jobId;
停止合流
通过调用如下接口:
- (void)stopMergeStreamWithJobId:(NSString *)jobId;
停止对应 jobId 的合流任务,若 jobId 为 nil,则停止默认的合流任务。