资源管理 ( 最近更新时间:2020-04-28 19:00:00 )

# 实例媒体流

  1. 实例化 Stream 后可获得 stream 实例。
  2. stream 实例化后可对媒体流进行操作,例如:发布与订阅等。
  3. 用户发布视频流、取消视频流将会触发实例化时设置的回掉函数: publishedunpublished

参数说明

输入参数说明

参数 类型 必填 说明 最低版本
published Function 成员发布资源,此时可按需订阅 3.2.0
unpublished Function 成员取消发布资源 3.2.0
disabled Function 成员禁用摄像头 3.2.0
enabled Function 成员启用摄像头 3.2.0
muted Function 成员静音 3.2.0
unmuted Function 成员取消静音 3.2.0

回调参数说明

事件回调 user 说明:

属性 类型 说明 最低版本
id String 成员 ID 3.2.0
stream Object 成员发布媒体流对象 3.2.0

事件回调 user.stream 说明:

属性 类型 说明 最低版本
tag String 资源唯一标识 3.2.0
type Number 发布资源类型,音频:0,视频:1,音视频:2 3.2.0
mediaStream MediaStream MediaStream 对象,可直接渲染至 UI 3.2.0

代码示例

let stream = new Stream({
  // 成员已发布资源,此时可按需订阅 
  published: function(user){
    stream.subscribe(user).then((user) => {
      let {id, stream: {tag, mediaStream}} = user;
      // 订阅成功后会获取到对方媒体流,将媒体流添加到页面上的 video 节点即可展示对方音视频画面
      let node = document.createElement('video');
      node.autoplay = true;
      node.srcObject = mediaStream;
      node.id = id;
      document.body.appendChild(node);
    });
  },
  // 成员已取消发布资源,此时需关闭流 
  unpublished: function(user){
    // 当对方成员取消订阅后,会自动触发此函数,此时己方取消订阅对方音视频流,然后做页面移除对方 video 节点即可
    stream.unsubscribe(user).then(function() {
      let node = document.getElementById(user.id);
      node.remove();
    });
  }
});
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# 获取资源

  1. 获取本地资源,支持获取屏幕共享资源和摄像头资源。
  2. 获取屏幕共享资源在调用 stream.get 时 screen 参数需要传递为 true,默认为 false。

参数说明

参数 类型 必填 默认值 说明 最低版本
height Number 480 视频流高 3.2.0
width Number 640 视频流宽 3.2.0
frameRate Number 15 帧率 3.2.0
screen Boolean false 设置为 true 获取屏幕媒体流 (仅 Chrome 有效) 3.2.0
desktopStreamId String -- 窗口 ID,通过 Chrome 插件可获取 3.2.0
audioDeviceId String -- 存在多麦克风设备,可通过此属性指定设备,用 device.get() 获取 deviceId 3.2.0
videoDeviceId String -- 存在多摄像头设备,可通过此属性指定设备,用 device.get() 获取 deviceId 3.2.0

代码示例

// audioDeviceId videoDeviceId , 均可从 device.get() 方法获取
let audioDeviceId = '';
let videoDeviceId = '';
// 获取摄像头
stream.get().then(function ({ mediaStream }) {
  console.log(mediaStream);
}, error => {
  console.error(error);
});
// 获取屏幕共享
stream.get({
  screen: true,
  desktopStreamId: 'desktopStreamId',
  audio: {
    //指定麦克风设备 ID
    deviceId: { exact: audioDeviceId }
  },
  video: {
    //指定摄像头设备 ID
    deviceId: { exact: videoDeviceId }
  },

}).then(function ({ mediaStream }) {
  console.log(mediaStream);
}, error => {
  console.error(error);
});
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

# 发布资源

  1. SDK 支持发布多路媒体流,发布后 SDK 会向服务器推送多路流,其他平台收到多路流,可按需展示。
  2. 通过调用 stream.get 获取本地视频流,在调用 stream.publish 进行发布本地音视频流。 参数说明

user 参数说明

参数 类型 必填 说明 最低版本
id String 成员 ID 3.2.0
stream Object 资源对象 3.2.0

user.stream 参数说明

参数 类型 必填 说明 最低版本
tag String 资源唯一标识, tag 不允许重复, 不能包含 _ 和 RongCloudRTC 字符 3.2.0
type Number 发布资源类型,音频:0,视频:1,音视频:2 3.2.0
mediaStream Object MediaStream 对象 3.2.0

代码示例

// 示例中以添加 video 节点流为例,可添加其他 MediaStream 对象,如: 屏幕共享、多摄像头等
let videoNode = document.querySelector('#target');
let mediaStream = videoNode.captureStream();
let user = {
  id: '请填写用户 ID',
  stream: {    
    tag: 'RongCloudRTC',
    type: StreamType.AUDIO_AND_VIDEO,
    mediaStream: mediaStream
  }
};
stream.publish(user).then(() => {
  console.log('发布成功');
}, error => {
  console.log(error);
});
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 取消发布

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

参数说明

user 参数说明

参数 类型 必填 说明 最低版本
id String 成员 ID 3.2.0
stream Object 资源对象 3.2.0

user.stream 参数说明

参数 类型 必填 说明 最低版本
tag String 资源唯一标识 3.2.0
type Number 发布资源类型:
音频 (AUDIO): 0
视频(VIDEO): 1
音视频(AUDIO_AND_VIDEO): 2
3.2.0

代码示例

let user = {
  id: '请填写用户 ID',
  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
12

# 配置直播 CDN 地址

当主播发布资源成功之后,主播可选择设置 CDN 推流地址,设置 CDN 地址有以下几点要求:

  1. 必须开通音视频服务和直播服务。
  2. 房间模式必须为直播模式。
  3. 设置的 CDN 地址不能为空。
  4. 最多设置 10 个 CDN 地址。
  5. 如果多次设置相同的地址,会直接返回成功。

参数说明

url 参数说明

参数 类型 必填 说明 最低版本
url String 要设置的 CDN 地址 3.2.3

代码示例

let url = '要设置的 CDN 推流地址';
stream.addPublishStreamUrl(url).then(() => {
  console.log('设置直播 CDN 地址成功');
}, error => {
  console.log(error);
});
已复制
1
2
3
4
5
6

# 移除配置过的直播 CDN 地址

  1. 必须开通音视频服务和直播服务。
  2. 房间模式必须为直播模式。
  3. 移除的 CDN 地址不能为空。
  4. 如果移除的地址,之前没有设置过,会直接返回成功。

参数说明

url 参数说明

参数 类型 必填 说明 最低版本
url String 要移除的 CDN 地址 3.2.3

代码示例

let url = '要取消设置的 CDN 推流地址';
stream.removePublishStreamUrl(url).then(() => {
  console.log('取消设置直播 CDN 地址成功');
}, error => {
  console.log(error);
});
已复制
1
2
3
4
5
6

# 订阅资源

订阅房间内用户发布资源。需要配置 Stream 实例化回调中的 published 使用。

参数说明

user 参数说明

参数 类型 必填 说明 最低版本
id String 成员 ID 3.2.0
stream Object 资源对象 3.2.0

user.stream 参数说明

参数 类型 必填 说明 最低版本
tag String 资源唯一标识 3.2.0
type Number 发布资源类型:
音频 (AUDIO): 0
视频(VIDEO): 1
音视频(AUDIO_AND_VIDEO): 2
3.2.0

代码示例

let user = {
  id: '请填写用户 ID',
  stream: {
    tag: 'RongCloudRTC',
    type: StreamType.AUDIO_AND_VIDEO
  } 
};
stream.subscribe(user).then(user => {
  let {id, stream: {tag, mediaStream}} = user;
  let node = document.createElement('video');
  node.srcObject = mediaStream;
  // 添加 node 至页面或容器
}, error => {
  console.log(error);
});
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 取消订阅

取消订阅远端用户发布的音视频流,在退出房间时,不需要取消订阅资源。

参数说明

user 参数说明

参数 类型 必填 说明 最低版本
id String 成员 ID 3.2.0
stream Object 资源对象 3.2.0

user.stream 参数说明

参数 类型 必填 说明 最低版本
tag String 资源唯一标识 3.2.0
type Number 发布资源类型:
音频 (AUDIO): 0
视频(VIDEO): 1
音视频(AUDIO_AND_VIDEO): 2
3.2.0

代码示例

let user = {
  id: '请填写用户 ID',
  stream: {
    tag: 'RongCloudRTC',
    type: StreamType.AUDIO_AND_VIDEO
  } 
};
stream.unsubscribe(user).then(() => {
  console.log(`取消订阅 ${user.id} 媒体流成功`);
}, error => {
  console.log(error);
});
已复制
1
2
3
4
5
6
7
8
9
10
11
12

# 摄像头控制

# 禁用成员摄像头

功能描述

禁用指定成员摄像头,禁用后将无法看到指定成员视频

  1. 例如: A、B、C 三人进行音视频通话,A 将 B 视频流禁用后,A 无法看到 B 的视频流, C 不受影响,依然可看到 B 的视频流。
  2. video 实例可通过 Stream 实例 获取。

参数说明

参数 类型 必填 说明 最低版本
id String 成员 ID 3.2.0
stream Object 媒体流信息 3.2.0
stream.tag String 资源唯一标识 3.2.0

代码示例

let {video: videoStream} = stream;
let user = {
  id: '请填写用户 ID',
  stream: {
    tag: 'RongCloudRTC'
  }
};
videoStream.disable(user);
已复制
1
2
3
4
5
6
7
8
# 取消禁用摄像头

启用指定成员摄像头, 启用后将看到指定成员视频。

参数说明

参数 类型 必填 说明 最低版本
id String 成员 ID 3.2.0
stream Object 媒体流信息 3.2.0
stream.tag String 资源唯一标识 3.2.0

代码示例

let {video: videoStream} = stream;
let user = {
  id: '请填写用户 ID',
  stream: {
    tag: 'RongCloudRTC'
  }
};
videoStream.enable(user);
已复制
1
2
3
4
5
6
7
8

# 麦克风控制

# 成员静音

静音指定成员,静音后当前成员将无法听到指定成员声音。

  1. 例如: A、B、C 三人进行音视频通话,A 将 B 静音后,A 无法听到 B 的声音, C 不受影响,依然可听到 B 的声音
  2. Audio 实例可通过 Stream 实例 获取

参数说明

参数 类型 必填 说明 最低版本
id String 成员 ID 3.2.0
stream Object 媒体流信息 3.2.0
stream.tag String 资源唯一标识 3.2.0

代码示例

let {audio: audioStream} = stream;
let user = {
  id: 'diajle91',
  stream: {
    tag: 'RongCloudRTC'
  }
};
audioStream.mute(user);
已复制
1
2
3
4
5
6
7
8
# 取消静音

取消静音, audio 实例可通过 stream 实例 获取

参数说明

参数 类型 必填 说明 最低版本
id String 成员 ID 3.2.0
stream Object 媒体流信息 3.2.0
stream.tag String 资源唯一标识 3.2.0

代码示例

let {audio: audioStream} = stream;
let user = {
  id: 'diajle91',
  stream: {
    tag: 'RongCloudRTC'
  }
};
audioStream.unmute(user);
已复制
1
2
3
4
5
6
7
8

# 实例化 Device

Device 模块可通过 RongRTC 获取

代码示例

let device = new Device();
已复制
1

# 获取设备列表

  1. 获取当前机器可用的输入、输出设备列表,存在多个设备时可通过此接口获取设备 ID 并通过 stream.get(constraints) 设置获取媒体流的设备。

代码示例

device.get().then((devices) => {
  console.log(devices);
});
已复制
1
2
3

文档是否解决您的问题 ?

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