加入多频道(跨房)
功能描述
跨房间连麦,指主播的媒体流可以同时转发进多个(目前最多支持四个)房间频道,实现主播跨频道与其他主播实时互动的场景。房间中的所有主播可以看见彼此,房间中的观众可以看到所有主播。
注意事项
- 同一时间最多只能创建4个连接对象,每个连接对象对应的房间ID必须互不相同。
- 如果使用connection对象加入房间,则加入房间的房间ID不能和已创建连接对象对应的房间ID相同。
- 同一时间只能以一个JOINER角色加入某一个房间。如果本端在其他房间里的角色是HWRtcRoleJoiner,则需要调用该房间的setUserRole方法将本端在该房间的角色切换为HWRtcRolePlayer后才能以HWRtcRoleJoiner跨入其他房间。如果本端用户是以HWRtcRolePlayer角色加入此跨房房间,则需要调用跨房连接的setUserRole方法将本端的角色切换为HWRtcRoleJoiner后才能发送音频流和视频流。
实现加入多频道(跨房)
- 加入主房间
参考接口调用流程中加入房间的时序图步骤加入主房间。
- 创建跨房连接
加入主房间后调用createConnection创建跨房对象,并进行相关参数配置。
其中,HRTCEncryptionConfig需要进行一些参数配置,主要包括:cryptionMode、cryptionSec、suiteType
public void setting() { mHwRtcConnection = mHwRtcEngine.createConnection(roomid, ((RtcApplication) getApplication()).getConnectionHandler()); mHwRtcConnection.setEncryption(new HRTCEncryptionConfig()); }
- 调用跨房连接
创建跨房对象后,调用joinRoom接口加入房间。
其中,HRTCJoinParam需要进行一些参数配置,主要包括:userId、username、 roomId
public void joinRoom() { mHwRtcConnection.joinRoom(new HRTCJoinParam()); }
加入房间成功后,会收到跨房成功回调onJoinRoomSuccess
加入房间失败后,会收到跨房失败回调onJoinRoomFailure
- 接收远端用户的视频流
当收到远端用户加入房间后,会触发onRemoteUserOnline回调,在回调内,对远端用户调用startRemoteStreamView设置远端窗口并开启收流。
@Override public void onRemoteUserOnline(HRTCConnection conn, String userId, String userName) { mHwRtcConnection.startRemoteStreamView(userId, surface, type, !isRemoteAdaptive); }
- 退出跨房房间
跨房结束后,调用跨房对象的leaveRoom离开房间。
public void leaveRoom() { mHwRtcConnection.leaveRoom(); }