跳转至

媒体流

Stream 模块可通过 RongRTC 实例 获取

new Stream(option)

option 对象说明:

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

事件返回参数 user 说明:

属性 类型 说明 最低版本
id string 成员 Id 3.0.0
stream object 成员发布媒体流对象 3.0.0

事件返回参数 user.stream 说明

属性 类型 说明 最低版本
tag string 资源唯一标识 3.0.0
type number 发布资源类型 3.0.0
mediaStream MediaStream MediaStream 对象,可直接渲染至 UI 3.0.0

示例:

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);
  },
  /* 成员禁用摄像头时触发,此时需关闭视频流 */
  disabled: function(user){
    stream.unsubscribe(user);
  },
  /* 成员启用摄像头时触发,此时需要重新打开视频流 */
  enabled: function(user){
    stream.subscribe(user);
  },
  /* 成员禁用麦克风时触发 */
  muted: function(user){
    
  },
  /* 成员禁用麦克风时触发,此时需要重新打开此成员声音 */
  unmuted: function(user){
    stream.subscribe(user);
  }
});
stream.get(constraints)

获取本地资源,支持获取屏幕共享、摄像头资源

constraints 对象说明:

参数 类型 必填 默认值 说明 最低版本
height number 480 视频流高 3.0.0
width number 640 视频流宽 3.0.0
frameRate number 15 帧率 3.0.0
screen boolean false 设置为 true 获取屏幕媒体流 (仅 Chrome 有效) 3.0.0
desktopStreamId string 窗口 Id,通过 Chrome 插件可获取 3.0.0
deviceId string 存在多摄像头设备,可通过此属性指定设备,用 divice.get() 获取 deviceId 3.0.0

示例:

// 获取摄像头
stream.get().then(function ({ mediaStream }) {
  console.log(mediaStream);
}, error => {
  console.error(error);
});
// 获取屏幕共享
stream.get({
  screen: true,
  // 详细示例请参考: http://rongcloud.github.io/websdk-demo/rongrtc/screenshare/screenshare.html
  desktopStreamId: 'desktopStreamId'
}).then(function ({ mediaStream }) {
  console.log(mediaStream);
}, error => {
  console.error(error);
});
stream.publish(user)

SDK 支持发布多路媒体流,发布后 SDK 会向服务器推送多路流,其他平台收到多路流,可按需展示

user 参数说明:

参数 类型 必填 说明 最低版本
id string 成员 ID 3.0.0
stream object 资源对象 3.0.0

user.stream 参数说明:

参数 类型 必填 说明 最低版本
tag string 资源唯一标识 3.0.0
type number 发布资源类型 3.0.0
mediaStream object MediaStream 对象 3.0.0

示例:

// 示例中以添加 video 节点流为例,可添加其他 MediaStream 对象,如: 屏幕共享、多摄像头等
let videoNode = document.querySelector('#target');
let mediaStream = videoNode.captureStream();
let user = {
  id: 'dadklyeu78',
  stream: {    
    tag: '自定义流标签',
    type: StreamType.VIDEO_AND_AUTIO,
    mediaStream: mediaStream
  }
};
stream.publish(user).then(result => {
  let { user, stream } = result;
  /* 
    user => 成员对象
    stream => {
      tag: '自定义流标签',
      kind: 'output',
      type: 当前 stream 类型
      mediaStream: MediaStream
    } 
  */
  console.log(user, stream);
}, error => {
  console.log(error);
});
stream.unpublish(user)

取消发布

user 参数说明:

参数 类型 必填 说明 最低版本
id string 成员 ID 3.0.0
stream object 资源对象 3.0.0

user.stream 参数说明:

参数 类型 必填 说明 最低版本
tag string 资源唯一标识 3.0.0
type number 发布资源类型 3.0.0

示例:

let user = {
  id: 'dadklyeu78',
  stream: {
    tag: '自定义流标签',
    type: StreamType.VIDEO_AND_AUTIO
  } 
};
stream.unpublish(user).then(result => {
  console.log('取消推送成功');
}, error => {
  console.log(error);
});
stream.subscribe(user)

订阅房间内成员发布资源

user 参数说明:

参数 类型 必填 说明 最低版本
id string 成员 ID 3.0.0
stream object 资源对象 3.0.0

user.stream 参数说明:

参数 类型 必填 说明 最低版本
tag string 资源唯一标识 3.0.0
type number 发布资源类型 3.0.0

示例:

let user = {
  id: 'dadklyeu78',
  stream: {
    tag: '自定义流标签',
    type: StreamType.VIDEO_AND_AUTIO
  } 
};
stream.subscribe(user).then(user => {
  let {id, stream: {tag, mediaStream}} = user;
  let node = document.createElement('video');
  node.srcObject = mediaStream;
  // 添加 node 至页面或容器
}, error => {
  console.log(error);
});
stream.unsubscribe(user)

取消订阅成员资源

user 参数说明:

参数 类型 必填 说明 最低版本
id string 成员 ID 3.0.0
stream object 资源对象 3.0.0

user.stream 参数说明:

参数 类型 必填 说明 最低版本
tag string 资源唯一标识 3.0.0
type number 发布资源类型 3.0.0

示例:

let user = {
  id: 'dadklyeu78',
  stream: {
    tag: '自定义流标签',
    type: StreamType.VIDEO_AND_AUTIO
  } 
};
stream.unsubscribe(user).then(() => {
  console.log(`取消订阅 ${user.id} 媒体流成功`);
}, error => {
  console.log(error);
});
stream.resize(user)

切换房间内成员媒体流分辨率大小的方法,在大小窗口切换时可将小窗口设置为小分辨率媒体流流,用来节省带宽,详细请参考 StreamSize

user 参数说明:

参数 类型 必填 说明 最低版本
id string 成员 ID 3.0.0
stream object 资源对象 3.0.0

user.stream 参数说明:

参数 类型 必填 说明 最低版本
tag string 资源唯一标识 3.0.0
type number 发布资源类型 3.0.0
size number 大小流枚举值 3.0.0

示例:

let user = {
  // 房间内成员 Id
  id: 'kdad18dka',
  stream: {
    tag: '自定义流标签',
    type: StreamType.VIDEO_AND_AUTIO,
    size: StreamSize.MAX
  }
};
Stream.resize(user);
audio.mute(user)

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

例如: ABC 三人进行音视频通话,AB 静音后,A 无法听到 B 的声音, C 不受影响,依然可听到 B 的声音

Audio 实例可通过 Stream 实例 获取

user 参数说明:

参数 类型 必填 说明 最低版本
id string 当前成员 ID 3.0.0

示例:

let {audio: audioStream} = stream;
let user = {
  id: 'diajle91',
  stream: {
    tag: '自定义流标签'
  }
};
audioStream.mute(user);
audio.unmute(user)

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

user 参数说明:

参数 类型 必填 说明 最低版本
id string 当前成员 Id 3.0.0

示例:

let {audio: audioStream} = stream;
let user = {
  id: 'diajle91',
  stream: {
    tag: '自定义流标签'
  }
};
audioStream.unmute(user);
video.disable(user)

video 实例可通过 Stream 实例 获取

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

例如: ABC 三人进行音视频通话,AB 视频流禁用后,A 无法看到 B 的视频流, C 不受影响,依然可看到 B 的视频流

user 参数说明:

参数 类型 必填 说明 最低版本
id string 当前成员 Id 3.0.0

示例:

let {video: videoStream} = stream;
let user = {
  id: 'dadklyeu78',
  stream: {
    tag: '自定义流标签'
  }
};
videoStream.disable(user);
video.enable(user)

video 实例可通过 Stream 实例 获取

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

user 参数说明:

参数 类型 必填 说明 最低版本
id string 当前成员 ID 3.0.0

示例:

let {video: videoStream} = stream;
let user = {
  id: 'dadklyeu78',
  stream: {
    tag: '自定义流标签'
  }
};
videoStream.enable(user);