音视频直播场景下不同的观众如何获取合流布局中各主播的位置

如何给合流的不同主播位置上添加 UI 控件
发布时间: 2022-04-19 15:31

回答:

主要思路步骤:

1、设置合流布局的操作由主播完成,当主播合流布局设置成功后,可以将各个主播在合流布局中的位置尺寸存放在房间的 KV 属性中;

2、主播每次设置合流都去更新这个 KV 并通知给房间内的其他人,观众获取到 KV 后,根据 KV 中的尺寸数据与观众手机上渲染视图的大小计算主播的实际占位区域。

需要注意的细节:

1、如果使用了融云的 IM 聊天室的话,建议使用聊天室的 KV 属性设置( https://doc.rongcloud.cn/im/IOS/5.X/noui/chatroom/chatroomExtension  ):

[[RCIMClient sharedRCIMClient] setChatRoomEntry:chatroomId
                                            key:key
                                          value:value
                               sendNotification:isNotice
                                     autoDelete:isDelete
                              notificationExtra:extra
                                        success:^{
                                          
                                        } error:^(RCErrorCode nErrorCode) {
                                          
                                        }];

如果只是使用音视频房间,没有绑定对应的聊天室聊天的话,可以使用音视频房间的 KV 属性设置( https://doc.rongcloud.cn/live/IOS/5.X/room/attribute  ):

[[RCRTCEngine sharedInstance].room setAttribute:[info toJsonString]
                 forKey:@"属性 Key 值"
                message:message
             completion:^(BOOL isSuccess, RCRTCCode code) {}];

2、KV 内存放的数据是客户根据业务自主决定的,可以存放一个 mode,mode 内绑定主播id,对应的位置以及其他信息。设置时机可以在设置合流布局成功后( https://doc.rongcloud.cn/live/IOS/5.X/stream/mcu  ):

[self.liveInfo setMixConfig:config completion:^(BOOL isSuccess, RCRTCCode code) {
    if (isSuccess) {
       //设置 kv
    } else {
       NSLog(@"%ld",(long)code);
    }
}];