appKey
WebRTC模块
会议成员对象的集合
集合的key为成员的uri, key为 self
表示自己(即: participantMap['self'] === selfParticipant)
获取录制控制对象
代表自己的会议成员对象
获取client状态
设置client状态
获取视频布局对象
添加事件监听器
要监听的事件类型
事件监听回调
若添加成功则返回一个函数, 用于移除事件监听
对多个事件添加同一个事件监听器
要监听的事件类型
事件监听回调
设置监听器参数
若添加成功则返回一个函数, 用于移除事件监听
清空所有绑定的事件
分发事件
分发的事件对象
事件是否发送成功
简化分发事件接口, 如需要分发的是错误事件, error参数传入具体错误类型
事件类型
消息
错误类型
获取统计信息, 调用成功后, 会根据指定的间隔时间上报 ConferenceEventType.CONF_DELIVERY_STATS
事件, 统计信息保存在事件对象的 message.stats
中.
client.addEventListener(ConferenceEventType.CONF_DELIVERY_STATS, ev => {
console.log(ev.message.stats);
});
如需要停止获取统计信息, 请执行返回的 Promise
的 then
回调给出的 函数.
// 10秒后停止获取统计信息
getStats()
.then((stopGetStats) => {
setTimeout(() => stopGetStats(), 10 * 1000);
});
上报统计信息的时间间隔, 单位: ms. interval最小值为 2000
指定类型的事件是否被监听
参数video选项说明 - true: 视频会议(将会打开摄像头和麦克风), false: 音频会议(仅打开麦克风)
移除事件监听器, 要提供与调用addEventListener或addEventListeners时相同的参数
要移除的事件监听器类型
要移除的事件监听器
返回true表示有该fun监听器并且移除成功
通过sourceId获取RTCStream
<div id="screen-video"></div>
// 监听成员开启屏幕共享事件
client.addEventListener(ConferenceEventType.SCREEN_SHARE_START, ev => {
// 屏幕共享uri
const uri = ev.message.screenUri;
// 发起屏幕共享的成员
const sharer = ev.message.sharer;
// 获取屏幕共享流的RTCStream对象
client.requestStream(uri)
.then(stream => {
screenStream = stream;
// 渲染屏幕共享画面,
screenStream.start('screen-video');
});
});
// 监听成员关闭屏幕共享事件
client.addEventListener(ConferenceEventType.SCREEN_SHARE_STOP, ev => {
// 停止渲染屏幕共享画面
screenStream.stop();
});
渲染画面对应的id, 默认会返回一个将渲染 所有会议成员(初自己外)合并后的画面 的RTCStream.
也可传入一个从ConferenceEventType.SCREEN_SHARE_START时间中获取到的 screenUri
, 将会返回一个会渲染屏幕共享画面的RTCStream.
请求指定成员的视频画面, pictureSize
// 订阅某个成员画面
client.requestVideo('uri or ConferenceParticipant', ConferencePictureSize.MAX)
.then(() => {
alert('请求成员画面成功');
})
.catch(() => {
alert('请求成员画面失败');
});
// 取消订阅成员画面
client.requestVideo('uri or ConferenceParticipant', ConferencePictureSize.NONE);
成员uri或ConferenceParticipant对象
ConferencePictureSize.NONE 表示取消订阅改成员画面, ConferencePictureSize的其他值表示订阅画面
发送在线消息, 与sendMessage的区别是sendOnlineMessage在client登录后即可调用.
在线消息发送的结果会通过两种途径体现:
resolve
/ reject
状态.true
/ false
.通过监听ConferenceEventType.ONLINE_MESSAGE_RECEIVE事件可以接收其他人发送的在线消息, 接收的对象解构如下:
属性名 | 类型 | 描述 |
---|---|---|
fromUserId | string | 发送者的uri |
content | string | 发送的消息内容 |
使用示例如下:
// 获取发送结果方式1
client.sendOnlineMessage('toUserId', 'content')
.then(() => {
alert(`在线消息发送成功`);
})
.catch((reason) => {
alert(`在线消息发送失败`);
});
// 获取发送结果方式2
this.client.addEventListener(ConferenceEventType.ONLINE_MESSAGE_SENT, (ev) => {
alert(`在线消息发送成功${ev.message.result ? '成功' : '失败'`);
});
// 接收在线消息
this.client.addEventListener(ConferenceEventType.ONLINE_MESSAGE_RECEIVE, (ev) => {
alert(`接收到在线消息\n发送者: ${ev.message.fromUserId}\n内容: ${ev.message.content}`);
});
消息发送对象的 userId
, 仅支持 uri
格式, 也可传入{@link _participantMap}的value.
消息内容, 如传入json对象会通过{@link JSON}字符串化
额外选项
发送信令消息, 可指定发送的目的地
信令消息
设置音频输出设备, device
可以从JuphoonRTCConference.getMediaDevices 获取.
音频输出设备
开启摄像头麦克风, 该接口将会去向用户请求媒体设备权限并开启WebRTC连接, WebRTC是否进行连接与设备请求成功与否并无关联.
即无论设备权限请求是否成功, 都会进建立WebRTC连接, 设备请求失败的情况下, 应当只会收到对端的音视频流, 本地音视频不会发送.
该接口返回的 Promise
的 resolve
/ reject
状态仅表示用户允许/拒绝了设备授权. 当用户拒绝时可以在界面上做出对应提示.
调用成功后, then
的回调函数会传入一个 RTCStream 对象, 调用RTCStream.start可以将本地画面通过 <video>
标签渲染到界面上.
client.startCameraVideo(RenderType.CONTAIN)
.then(stream => {
stream.start('local-video');
});
渲染模式
常量 | 描述 |
---|---|
RenderType.CONTAIN | 画面保持宽高比, 并填充整个内容框, 如画面无法填满内容框将被添加黑边 |
RenderType.COVER | 画面保持宽高比,并填充整个内容框, 如画面有溢出部分将被裁剪 |
切换摄像头
该接口同时会影响到渲染的本地视频, 本地渲染的视频也会同步更新.
切换摄像头可通过JuphoonRTCConference.getMediaDevices获取到 deviceId
来选择视频输入设备.
如果只是需要在移动端进行前后置摄像头的切换, 可以通过指定StreamCameraConstraints.facingMode来切换前后置摄像头.
参数名 | 类型 | 描述 |
---|---|---|
deviceId | string | 代表设备的唯一id,可通过JuphoonRTCConference.getMediaDevices获取 |
facingMode | 'user', 'environment' | user: 前置摄像头, environment: 后置摄像头 |
client.switchCamera({
// deviceId: '',
// facingMode: 'user',
facingMode: 'environment',
})
.then(() => console.log('切换摄像头成功')
指定的摄像头约束
切换通过WebRTC传输的本地媒体流, 可用于发送从 <canvas>
<video>
中获取到的 MediaStream
该接口可用于将本地传输的音视频轨道切换为从其他地方(音视频输入设备/<canvas>
/<video>
/<audio>
/屏幕共享)获取到的{@link MediaStream}或{@link MediaStreamTrack}对象.
StreamOptions可用属性说明
参数名 | 类型 | 描述 |
---|---|---|
video | boolean | 使用默认的视频输入设备, 一般为前置摄像头 |
video | StreamCameraConstraints | 可指定StreamCameraConstraints.deviceId, StreamCameraConstraints.facingMode |
audio | boolean | 使用默认的音频输入设备 |
audio | StreamMicrophoneConstraints | 可指定StreamMicrophoneConstraints.deviceId |
videoSource | {@link MediaStreamTrack} | 自行获取的视频轨道, 可以是从<canvas> /<video> 中捕获的{@link MediaStream}的视频轨道 |
audioSource | {@link MediaStreamTrack} | 自行获取的音频轨道, 可以是从<video> /<audio> 中捕获的{@link MediaStream}的音频轨道 |
stream | {@link MediaStream} | {@link MediaStream}对象, 可能包含音频和视频轨道 |
注: 从 canvas
或 video
/<audio>
中捕获音视频流的兼容性要求较高, 谨慎使用.
Generated using TypeDoc
Socket对象