云服务器内容精选

  • 实现过程 加入房间 参考接口调用流程中加入房间的时序图步骤加入主房间。 创建跨房连接 当收到远端用户加入房间后会触发connection:onRemoteUserOnline跨房回调,在该回调内用对应远端用户的跨房连接调用startRemoteStreamView方法设置远端窗口并开启收流。 示例代码如下: //创建跨房引擎,room id具有唯一性,不可重复,设置引擎代理 HWRtcConnection *connection = [rtcEngine createConnection:@”room id”]; connection.delegate = self; 调用跨房连接的joinRoom加入跨房房间 调用跨房连接的joinRoom接口加入房间,其中HWRtcUserInfo的signature鉴权签名字符串需要填入正确的计算值,计算方法请参考接入鉴权。 如果本端需要发送音频或者视频流给跨房房间里的远端用户,则用户的role参数需要设为HWRtcRoleJoiner,否则可以设为HWRtcRolePlayer,只收流不发流。 注意:不能同时以JOINER角色加入多个房间。 加入跨房房间成功后会收到跨房回调指针的onJoinRoomSuccess通知,加入房间失败会收到跨房回调指针的onJoinRoomFailure通知。 示例代码如下: //创建HWRtcJoinParam对象 HWRtcJoinParam *joinRoomParam = [[HWRtcJoinParam alloc] init]; joinRoomParam.autoSubscribeAudio = YES; joinRoomParam.autoSubscribeVideo = YES; joinRoomParam.userId = "userId"; joinRoomParam.userName = "userName"; joinRoomParam.authorization = authorization; //authorization:鉴权信息,具体生成方法请参见接入鉴权。与加入房间的authorization相同 joinRoomParam.ctime = time;//与加入房间的time相同 joinRoomParam.roomId = "roomId"; joinRoomParam.userRole = HWRtcRolePlayer; joinRoomParam.sfuType = 0; joinRoomParam.scenario = 0; //通过跨房引擎进入房间 [connection joinRoom:joinRoomParam]; 收远端用户的视频流 收到远端用户加入房间后会收到跨房回调connection:onRemoteUserOnline,可以调用该远端用户对应的跨房连接的startRemoteStreamView设置远端窗口并开启收流。 示例代码如下: //远端用户加入房间后会收到跨房回调 - (void)connection:(HWRtcConnection *)connection onRemoteUserOnline:(NSString * _Nonnull)userId userName:(NSString * _Nonnull)userName { //创建视频画布对象 HWRtcVideoCanvas *canvas = [[HWRtcVideoCanvas alloc] init]; canvas.uid = @”remote userId”; canvas.view = [[HWRtcView alloc] initWitFrame:(0,0,100,100)]; //设置远端窗口并开启收流 [connection startRemoteStreamView:canvas streamType:HWRtcStreamTypeHD disableAdjustRes:YES]; } 退出跨房房间 跨房结束后,调用跨房连接的leaveRoom接口跨房房间。 示例代码如下: //退出跨房房间 [connection leaveRoom];
  • 注意事项 同一时间最多只能创建4个连接对象,每个连接对象对应的房间ID必须互不相同。 如果使用connection对象加入房间,则加入房间的房间ID不能和已创建连接对象对应的房间ID相同。 同一时间只能以一个JOINER角色加入某一个房间。如果本端在其他房间里的角色是HWRtcRoleJoiner,则需要调用该房间的setUserRole方法将本端在该房间的角色切换为HWRtcRolePlayer后才能以HWRtcRoleJoiner跨入其他房间。如果本端用户是以HWRtcRolePlayer角色加入此跨房房间,则需要调用跨房连接的setUserRole方法将本端的角色切换为HWRtcRoleJoiner后才能发送音频流和视频流。