更新时间:2023-10-26 GMT+08:00
分享

加入多频道(跨房)

功能描述

跨房间连麦,指主播的媒体流可以同时转发进多个(目前最多支持四个)房间频道,实现主播跨频道与其他主播实时互动的场景。房间中的所有主播可以看见彼此,房间中的观众可以看到所有主播。

注意事项

  • 同一时间最多只能创建4个连接对象,每个连接对象对应的房间ID必须互不相同。
  • 如果使用connection对象加入房间,则加入房间的房间ID不能和已创建连接对象对应的房间ID相同。
  • 同一时间只能以一个JOINER角色加入某一个房间。如果本端在其他房间里的角色是HWRtcRoleJoiner,则需要调用该房间的setUserRole方法将本端在该房间的角色切换为HWRtcRolePlayer后才能以HWRtcRoleJoiner跨入其他房间。如果本端用户是以HWRtcRolePlayer角色加入此跨房房间,则需要调用跨房连接的setUserRole方法将本端的角色切换为HWRtcRoleJoiner后才能发送音频流和视频流。

接口调用流程

实现加入多频道(跨房)

  1. 加入主房间

    参考接口调用流程中加入房间的时序图步骤加入主房间。

  2. 创建跨房连接

    加入主房间后调用createConnection创建跨房对象,并进行相关参数配置。

    其中,HRTCEncryptionConfig需要进行一些参数配置,主要包括:cryptionMode、cryptionSec、suiteType

    public void setting() {
        mHwRtcConnection = mHwRtcEngine.createConnection(roomid, ((RtcApplication) getApplication()).getConnectionHandler());
    	mHwRtcConnection.setEncryption(new HRTCEncryptionConfig());
    }
  3. 调用跨房连接

    创建跨房对象后,调用joinRoom接口加入房间。

    其中,HRTCJoinParam需要进行一些参数配置,主要包括:userId、username、 roomId

    public void joinRoom() {
        mHwRtcConnection.joinRoom(new HRTCJoinParam());
    }

    加入房间成功后,会收到跨房成功回调onJoinRoomSuccess

    加入房间失败后,会收到跨房失败回调onJoinRoomFailure

  4. 接收远端用户的视频流

    当收到远端用户加入房间后,会触发onRemoteUserOnline回调,在回调内,对远端用户调用startRemoteStreamView设置远端窗口并开启收流。

    @Override
    public void onRemoteUserOnline(HRTCConnection conn, String userId, String userName) {
        mHwRtcConnection.startRemoteStreamView(userId, surface, type, !isRemoteAdaptive);
    }
  5. 退出跨房房间

    跨房结束后,调用跨房对象的leaveRoom离开房间。

    public void leaveRoom() {
        mHwRtcConnection.leaveRoom();
    }

相关文档