跨频道媒体流转发
功能描述
跨频道媒体流转发,指将源频道内主播的媒体流转发到(一个或多个)目标频道中,实现主播跨频道进行实时音视频互动。常见场景:主播 PK、在线 KTV 合唱。
跨频道媒体流转发是单向的,要实现跨频道连麦,需要源频道和目标频道同时执行跨频道操作。
实现方法
跨频道连麦,指多个主播相互将源(自己)频道中主播的媒体流转发到目标(对方)频道中,从而实现实时音视频互动功能。
操作步骤
创建配置对象
通过 ArRTC
全局对象的 ChannelMediaRelayConfiguration
方法创建跨频道媒体流转发配置的对象:
const channelMediaConfig = new ArRTC.ChannelMediaRelayConfiguration();
配置源频道和目标频道信息
配置对象提供了 setSrcChannelInfo
、addDestChannelInfo
、removeDestChannelInfo
方法。
// 设置源频道信息。其中 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
后调用。- 调用
startChannelMediaRelay
或updateChannelMediaRelay
成功跨频道连麦后,目标频道的用户会收到ArRTCClient.on("user-published")
回调。 - 跨频道连麦中,如果目标频道的主播掉线或离开频道,源频道的主播会收到
ArRTCClient.on("user-left")
回调。