腾讯云实时音视频Android&IOS/MAC&Windows_音视频解决方案_同尘科技

实时音视频 2年前 (2023-11-08) 浏览 119

前言

默认情况下,只有同一房间内的用户才能进行音视频通话,不同房间的音视频流是互相独立的。但是,您可以通过调用 请求跨房通话(Android 为例)接口,将其他房间内某主播的音视频流发布到您所在的房间。同时,此接口也会将您的音视频流发布到目标主播的房间。换句话说,您可以使用此接口让两个在不同房间的主播进行音视频流的分享,使每个房间的观众都能观看到这两位主播的音视频。这个功能可以用于实现主播间的 PK 功能。
根据以下文档,您可以实现在两个或更多房间内的主播进行跨房连麦 PK 的场景,并支持不同端的主播进行跨房连麦。

实现方式

在实现跨房连麦之前,需要确认以下实时音视频的一些基础信息:userId:用户的唯一标识 ID。roomId:数字类型房间 ID。strRoomId:字符串类型房间 ID。注意:混流双方的房间类型需要相同,不可以混用。

跨房连麦

当房间“101”中的主播 A 通过“connectOtherRoom()”跟房间“102”中的主播 B 建立跨房通话后: 房间“101”中的用户都会收到主播 B 的onRemoteUserEnterRoom(B)onUserVideoAvailable(B,true)这两个事件回调,即房间“101”中的用户都可以订阅主播 B 的音视频。 房间“102”中的用户都会收到主播 A 的onRemoteUserEnterRoom(A)onUserVideoAvailable(A,true)这两个事件回调,即房间“102”中的用户都可以订阅主播 A 的音视频。说明:跨房通话的请求结果会通过 TRTCCloudListener 中的 onConnectOtherRoom 回调通知给您。
跨房通话的参数考虑到后续扩展字段的兼容性问题,暂时采用了 JSON 格式的参数:情况一:数字房间号如果房间“101”中的主播 A 要跟房间“102”中的主播 B 连麦,那么主播 A 调用该接口时需要传入:{"roomId": 102, "userId": "userB"}示例代码如下:

  JSONObject jsonObj = new JSONObject();  jsonObj.put("roomId", 102);  jsonObj.put("userId", "userB");  trtc.ConnectOtherRoom(jsonObj.toString());

情况二:字符串房间号如果您使用的是字符串房间号,务必请将 json 中的roomId替换成"strRoomId": {"strRoomId": "102", "userId": "userB"}示例代码如下:

  JSONObject jsonObj = new JSONObject();  jsonObj.put("strRoomId", "102");  jsonObj.put("userId", "userB");  trtc.ConnectOtherRoom(jsonObj.toString());

发布跨房音视频到 CDN

对于标准直播拉流(CDN 拉流)的场景来说,主播跨房间连麦之后需要将双方主播连麦的音视频混流后发布到 CDN。如果您有此类需求,参见 发布音视频流到直播 CDN 将多个房间内的主播画面混合后转推至直播 CDN,以实现更多场景的播放观看需求。

对音视频的解决方案有疑惑?想了解解决方案收费? 联系解决方案专家

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心,购买腾讯云享受折上折,更有现金返利:同意关联,立享优惠

阿里云解决方案也看看?: 点击对比阿里云的解决方案

- 0人点赞 -

发表点评 (0条)

not found

暂无评论,你要说点什么吗?