更新时间: 2021-05-26

由于谷歌官方决定自 Chrome 93 版本开始不再支持 plan-b 协议,因此 RTCLib v3 即将停止维护,请所有 RTCLib v3 及 CallLib 用户尽快迁移至 RCRTCAdapter 桥接版本,迁移方案请查看【产品概述 - 升级说明】章节。
目前所有 RTCLib v3 相关集成文档内容已更新为 RCRTCAdapter 集成文档,新集成用户请优先使用 RTCLib v5.0 并查看相应版本文档。

# 加入房间

  1. 创建直播间前需要先实例化 Room 实例。
  2. 加入房间, 每个 RongRTC 实例只允许加入 一个房间。
  3. 主播端首先调用 room.join 接口创建一个直播类型房间。

代码示例

实例化

const room = new Room({
  id: 'roomId',
  joined: function(user){
    // user.id 加入房间
  },
  left: function(user){
    // user.id 离开房间
  }
});
已复制
1
2
3
4
5
6
7
8
9

加入房间

room.join().then(() => {
  console.log('join successfully');
}, error => {
  console.log(error);
});
已复制
1
2
3
4
5

# 发布资源

  1. 发布资源需要先实例化 Stream 实例,实例化 Stream 后可获得 stream 实例。stream 实例下有对媒体流进行操作的方法,例如发布与订阅等
  2. 加入房间成功后您可以通过 stream.get() 获取本地视频,在通过 stream.publish() 发布本地音视频流。
  3. 用户发布视频流、取消视频流将会触发实例化时设置的回掉函数: publishedunpublished
  4. 直播模式,调用 stream.publish() 接口发布资源,发布成功之后会返回 liveUrlliveUrl 提供当前直播的直播地址,可以存储到应用的 App Server , 观众端拿着这个地址就可以观看该主播的直播。

代码示例

实例化 Stream

let stream = new Stream({
  /* 成员已发布资源,此时可按需订阅 */
  published: function(user){
    stream.subscribe(user).then((user) => {
      let {id, stream: {tag, mediaStream}} = user;
      let node = document.createElement('video');
      node.srcObject = mediaStream;
      // 将 node 添加至页面或指定容器
    });
  },
  /* 成员已取消发布资源,此时需关闭流 */
  unpublished: function(user){
    stream.unsubscribe(user);
  },
});
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

发布直播资源

stream.get().then(function ({ mediaStream }) {
  let user = {
    id: '请填写用户 ID',
    stream: {    
      tag: 'RongCloudRTC',
      type: StreamType.AUDIO_AND_VIDEO,
      mediaStream: mediaStream
    }
  }
  stream.publish(user).then((result) => {
    //result 数据格式:{"configUrl":"XXX","liveUrl":"XXXX"} 此处可获得到 liveUrl
    console.log('发布成功',result);
  }, error => {
    console.log(error);
  });
}, error => {
  console.error(error);
});
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 取消发布

取消发布资源,其他用户会在 Stream 实例化的 unpublished 回调中收到用户取消发布的信息,需要按需调用取消发布。

代码示例

const user = {
  stream: {
    tag: 'RongCloudRTC',
    type: StreamType.AUDIO_AND_VIDEO
  } 
};
stream.unpublish(user).then(result => {
  console.log('取消发布成功');
}, error => {
  console.log(error);
});
已复制
1
2
3
4
5
6
7
8
9
10
11

# 离开房间

  1. 必须在成功或失败回调完成之后再开始下一次加入房间逻辑。
  2. 离开 RTC 房间,退出后将不能再与其他成员进行音视频通话。

代码示例

room.leave().then(() => {
  console.log('leave successfully');
}, error => {
  console.log(error);
});
已复制
1
2
3
4
5

文档是否解决您的问题 ?

如果遇到产品相关问题,您可 提交工单 寻求帮助