跳转至

媒体流

Stream 模块可通过 RongRTC 实例 获取

new Stream(option)

option 对象说明:

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

事件返回参数 user 说明:

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

事件返回参数 user.stream 说明

属性 类型 说明 最低版本
tag string 资源唯一标识 3.0.4
type number 发布资源类型 3.0.4

示例:

var stream = new Stream({
  /* 成员已发布资源,此时可按需订阅 */
  published: function(user){
    stream.subscribe(user).then(function(user) {
      // 订阅成功, 界面已展示此用户音视频
    });
  },
  /* 成员已取消发布资源,此时需关闭流 */
  unpublished: function(user){
    stream.unsubscribe(user).then(function(user) {
       // 取消订阅成功, 界面已移除此用户音视频
    });
  },
  /* 成员禁用摄像头时触发 */
  disabled: function(user){
  },
  /* 成员启用摄像头时触发 */
  enabled: function(user){
  },
  /* 成员禁用麦克风时触发 */
  muted: function(user){
  },
  /* 成员禁用麦克风时触发 */
  unmuted: function(user){
  },
  /* 窗口大小改变 */
  resized: function(user){
    /* 
      user => {
        id: '被切换窗口的用户 id',
        stream: {
          tag: '流标签',
          size: '切换后的大小流'
        }
      } 
    */
    var isSelf = user.id === 'selfId'; // 不切换自己推送的流
    !isSelf && stream.resize(user).then(function() {
      // 切换大小流成功
    });
  }
});
stream.publish(user)

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

user 参数说明:

参数 类型 必填 说明 最低版本
id string 成员 ID 3.0.4
name string 成员名称 3.0.4
isZoomIn boolean 是否大屏显示 3.0.4
stream object 资源对象 3.0.4

user.stream 参数说明:

参数 类型 必填 说明 最低版本
tag string 发布资源标识 3.0.4
type number 发布资源类型 3.0.4
resolution number 发布资源分辨率, 默认 640 * 480 3.0.4
rate number 发布资源码率, 默认 15 3.0.4
rotate number 发布资源旋转 3.0.4

示例:

// 示例中以添加 video 节点流为例,可添加其他 MediaStream 对象,如: 屏幕共享、多摄像头等

var user = {
  id: 'dadklyeu78',
  stream: {    
    tag: '流标签',
    type: StreamType.AUDIO_AND_VIDEO,
  }
};
stream.publish(user).then(function() {
  console.log('发布成功');
}, function(error) {
  console.log(error);
});
stream.unpublish(user)

取消发布

user 参数说明:

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

user.stream 参数说明:

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

示例:

var user = {
  id: 'dadklyeu78',
  stream: {
    tag: '流标签',
    type: StreamType.AUDIO_AND_VIDEO
  } 
};
stream.unpublish(user).then(function(result) {
  console.log('取消推送成功');
}, function(error) {
  console.log(error);
});
stream.subscribe(user)

订阅房间内成员发布资源

user 参数说明:

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

user.stream 参数说明:

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

示例:

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

取消订阅成员资源

user 参数说明:

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

user.stream 参数说明:

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

示例:

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

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

user 参数说明:

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

user.stream 参数说明:

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

示例:

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

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

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

Audio 实例可通过 Stream 实例 获取

user 参数说明:

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

示例:

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

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

user 参数说明:

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

示例:

var {audio: audioStream} = stream;
var 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.4

示例:

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

video 实例可通过 Stream 实例 获取

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

user 参数说明:

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

示例:

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