跨直播间连麦

最近更新时间:2022-09-20 05:17:40

跨频道媒体流转发

功能描述

跨频道媒体流转发,指将源频道内主播的媒体流转发到(一个或多个)目标频道中,实现主播跨频道进行实时音视频互动。常见场景:主播 PK、在线 KTV 合唱。

跨频道媒体流转发是单向的,要实现跨频道连麦,需要源频道和目标频道同时执行跨频道操作。

实现方法

跨频道连麦,指多个主播相互将源(自己)频道中主播的媒体流转发到目标(对方)频道中,从而实现实时音视频互动功能。

宽频道连麦 跨频道媒体流转发

操作步骤

创建配置对象

通过 ArRTC 全局对象的 ChannelMediaRelayConfiguration 方法创建跨频道媒体流转发配置的对象:

const channelMediaConfig = new ArRTC.ChannelMediaRelayConfiguration();

配置源频道和目标频道信息

配置对象提供了 setSrcChannelInfoaddDestChannelInforemoveDestChannelInfo方法。

// 设置源频道信息。其中 channelName 使用用户填入的源频道名,uid 需要唯一
// 注意 token 和用户加入源频道时的 Token 不一致
channelMediaConfig.setSrcChannelInfo({
 channelName: "srcChannel",
 uid: 0,
 token: "yourSrcToken",
})
// 设置目标频道信息,可多次调用,最多设置 4 个目标频道。
channelMediaConfig.addDestChannelInfo({
 channelName: "destChannel1",
 uid: 123,
 token: "yourDestToken",
})

开始跨频道媒体流转发

client.startChannelMediaRelay(channelMediaConfig).then(() => {
  console.log(`startChannelMediaRelay success`);
}).catch(e => {
  console.log(`startChannelMediaRelay failed`, e);
})

更新跨频道媒体流转发频道

// 删除一个目标频道。
channelMediaConfig.removeDestChannelInfo("destChannel1")
// 更新跨频道媒体流转发设置。
client.updateChannelMediaRelay(channelMediaConfig).then(() => {
  console.log("updateChannelMediaRelay success");
}).catch(e => {
  console.log("updateChannelMediaRelay failed", e);
})

停止跨频道媒体流转发频道

client.stopChannelMediaRelay().then(() => {
  console.log("stop media relay success");
}).catch(e => {
  console.log("stop media relay failed", e);
})

API 参考

API描述
ArRTC.ChannelMediaRelayConfiguration创建跨频道媒体流转发的配置对象。
channelMediaConfig.setSrcChannelInfo添加源频道信息。
channelMediaConfig.addDestChannelInfo添加目标频道信息。
channelMediaConfig.removeDestChannelInfo删除目标频道信息。
ArRTCClient.startChannelMediaRelay开始跨频道媒体流转发。
ArRTCClient.updateChannelMediaRelay更新媒体流转发的目标频道。
ArRTCClient.stopChannelMediaRelay停止跨频道媒体流转发。

开发注意事项

  • 最多设置 4 个目标频道,即最多支持将媒体流转发至 4 个目标频道。
  • startChannelMediaRelay 方法必须在调用 ArRTCClient.publish 发布之后调用。
  • updateChannelMediaRelay 方法必须在 startChannelMediaRelay 后调用。
  • 调用 startChannelMediaRelayupdateChannelMediaRelay 成功跨频道连麦后,目标频道的用户会收到 ArRTCClient.on("user-published") 回调。
  • 跨频道连麦中,如果目标频道的主播掉线或离开频道,源频道的主播会收到 ArRTCClient.on("user-left") 回调。