清除内存中的录制的音视频数据
删除房间推流任务。
推流任务 ID。
销毁客户端对象。
关闭双流模式
双流模式默认为关闭状态。如如开启双流模式后需关闭,请在 Client.unpublish 后、再次 Client.publish 之前调用该方法。
下载录制的音视频数据,生成录制文件
启用自定义加密
需要在加入频道前调用client.enableCustomTransform()
方法。调用后,可收到两个事件:sender-transform
和receiver-transform
,应在这两个方法中实现加密和解密操作。
自定义加密功能依赖 encodedInsertableStreams 接口。目前仅支持桌面端Chrome 94及以上版本。
H264加密注意事项:
0,0,0,1
,0,0,1
,也可能两种定位符交替出现。开启双流模式
双流为视频大流和视频小流,其中视频大流指高分辨率、高码率的视频流,视频小流指低分辨率、低码率的视频流。
获取当前通话信息。
用户输入的频道名。
频道ID,可用于服务端API调用。
用户输入的token。
用户输入的id。当用户输入的uid为0时,则可获取服务端随机分配的uid。
主动获取网络连接状态。
获取本地发布流的音频统计数据。
获取本地发布流的视频统计数据。
媒体流类型。"video"为视频流,"screen"为屏幕共享流。如不填,则一起返回
获取远端订阅流的音频统计数据。
获取远端订阅流的视频统计数据。
媒体流类型。"video"为视频流,"screen"为屏幕共享流。默认为"video"。
获取与会话的连接状况统计数据。
获取系统电量信息。
获取与网关的连接状况统计数据。
获取本地用户 ID。
如果在 join 方法中指定了 uid,此处会返回指定的 ID; 如果未指定 uid,此处将返回云信服务器自动分配的 ID。
加入房间。
加入房间时,如果指定房间尚未创建,云信服务器内部会自动创建一个同名房间。
调用该方法加入房间时,本地会触发 Client.on("connection-state-change") 回调;通信场景下的用户和直播场景下的主播角色加入房间后,远端会触发 Client.on("peer-online") 回调。
房间相关设置。
错误码包括:
错误码(code) | 错误原因(reason) | 说明 |
---|---|---|
403 | netcall.g2 unsafe mode is closed, please contact business! | 安全模式下未设置 Token。请通过服务端 getToken 接口获取 NERTC Token,并在加入房间时传入。如果您仍处于测试阶段,可以在控制台切换应用为调试模式,调试模式下加入房间时无需设置 Token。 |
414 | check checksum error | 鉴权失败。通常原因为加入房间时设置的 Token 错误。 |
离开房间。
调用该方法离开房间时,本地会触发 Client.on("connection-state-change") 回调;通信场景下的用户和直播场景下的主播角色离开房间后,远端会触发 Client.on("peer-leave") 回调。
该回调可以取消监听事件。
client-role-changed
回调表示本地用户的角色已改变。
直播场景下,当用户角色切换时会触发此回调,即主播切换为观众,或观众切换为主播时。
改变后的角色。
stream-added
回调表示远端用户发布了音视频流。
evt.mediaType
标识了具体的媒体类型。stream-subscribed
回调表示应用已接收远端音视频流。
evt.mediaType
标识了具体的媒体类型。stream-removed
回调表示应用已删除远端音视频流。
远端用户调用 Client.unpublish 方法之后,会触发此回调。
注意:
peer-leave
事件。stream-removed
时,如果调用不带参数的evt.stream.stop()
,会同时关闭音视频渲染。这通常不是预期行为。active-speaker
事件会返回当前房间内音量最大的用户的 uid(iOS 微信浏览器暂不支持该事件)。
音量最大的用户的 uid。
volume-indicator
事件会返回当前房间内除自己以外的用户的音量(iOS 微信浏览器暂不支持该事件)。
peer-online
事件表示有远端用户或主播加入房间。
以下场景中会触发该回调:
远端用户或主播角色的用户 ID。
peer-leave
事件表示远端用户或主播角色离开房间。
以下场景中会触发该回调:
远端用户离开房间的原因。
远端用户或主播角色的用户 ID。
mute-audio
事件表示远端用户静音其音频,即关掉自己的声音。
远端用户 ID。
unmute-audio
事件表示远端用户取消静音,即打开自己的声音。
远端用户 ID。
unmute-audio-slave
事件表示远端用户静音其音频辅流,即关掉自己的系统共享的声音。
远端用户 ID。
unmute-audio
事件表示远端用户取消静音音频辅流,即打开自己的系统共享的声音。
远端用户 ID。
mute-video
事件表示远端用户在视频通话中关掉自己的视频。
远端用户 ID。
unmute-video
事件表示远端用户在视频通话中打开自己的视频。
远端用户 ID。
mute-screen
事件表示远端用户暂停屏幕共享。
远端用户 ID。
unmute-screen
事件表示远端用户继续屏幕共享。
远端用户 ID。
uid-duplicate
事件表示当前有人使用相同的uid加入了房间,你被提出了。
client-banned
事件表示本地用户被踢出房间。
远端用户 ID。
channel-closed
事件表示房间已关闭。
stopScreenSharing
表示本地用户停止屏幕共享。这通常是在屏幕共享浮窗上点击关闭触发的。
stopScreenAudio
事件表示本地用户停止屏幕共享音频。这通常是在屏幕共享浮窗上点击关闭触发的。
connection-state-change
事件表示 SDK 与服务器的连接状态发生了变化。
变化后的状态。
变化前的状态。
是否为重连
客户端遇到错误。错误类型包括:
rtc.client.on('error', (type) => {
console.error('===== 发生错误事件:', type)
if (type === 'SOCKET_ERROR') {
addLog('==== 网络异常,已经退出房间')
} else if (type === 'no-publish-audio-permission') {
console.error('permkey控制,没有发布音频的权限')
} else if (type === 'no-publish-audio-slave-permission') {
console.error('permkey控制,没有发布音频辅流的权限')
} else if (type === 'no-publish-video-permission') {
addLog(`permkey控制,没有发布视频的权限`)
} else if (type === 'no-publish-screen-permission') {
console.error('permkey控制,没有发布屏幕共享的权限')
} else if (type === 'no-subscribe-audio-permission') {
console.error('permkey控制,没有订阅音频的权限')
} else if (type === 'no-subscribe-audio-slave-permission') {
console.error('permkey控制,没有订阅音频辅流的权限')
} else if (type === 'no-subscribe-video-permission') {
console.error('permkey控制,没有订阅视频的权限')
} else if (type === 'no-subscribe-screen-permission') {
console.error('permkey控制,没有订阅屏幕共享的权限')
}
})
客户端遇到警告。可能有:
警告码。
原因。
permkey-will-expire
事件表示房间中有人在join()的时候设置了自定义消息。
permkey-will-expire
事件表示高级权限token功能启用后,permkey还有30s就要超时了,需要主动调用updatePermkey()去更新。
permkey-timeout
事件表示高级权限token功能启用后,permkey已经超时,您被提出房间了。
audioTrackEnded
事件表示音频轨道结束。造成的原因可能是设备被拔出。
audioTrackEnded
事件表示音频轨道结束。造成的原因可能是设备被拔出。
videoTrackEnded
事件表示视频频轨道结束。造成的原因可能是设备被拔出。
TrackEnded
事件表示音视频轨道结束。造成的原因可能是设备被拔出。
TrackMuted
事件表示音视频轨道处于Muted状态。造成的原因可能是设备被占用。
当页面从隐藏状态变为显示状态时,会触发此事件。此时track可能处于mute状态,需要重新打开设备。
rtmp-state
事件表示RTMP旁路推流状态发生了变化。
network-quality
事件展示房间中所有成员的上下行网络质量。
exception
事件展示了目前房间内的异常事件。
异常事件不是错误,但是往往会引起通话质量问题。
crypt-error
回调表示本地设置的媒体流加密密钥与房间中其他成员不一致,加入房间失败。
请通过 Client.setEncryptionSecret 重新设置加密密钥。
accessDenied
事件表示获取设备权限被拒绝。
notFound
事件表示获取麦克风或摄像头权限时,无法找到指定设备。
deviceError
事件表示获取麦克风或摄像头权限时,遭遇未知错误错误。
beOccupied
事件表示获取麦克风或摄像头权限时,设备被占用。
audioVideoBanned
事件表示音频或视频被服务器禁言
recording-device-changed
回调通知应用有音频输入设备被添加、更改或移除。
ACTIVE
: 新增设备INACTIVE
: 设备被移除CHANGED
: 设备更改注意:
camera-changed
回调通知应用有视频输入设备被添加、更改或移除。
ACTIVE
: 新增设备INACTIVE
: 设备被移除CHANGED
: 设备更改注:Firefox不支持设备检测
playout-device-change
回调通知应用有音频输出设备被添加、更改或移除。
ACTIVE
: 新增设备INACTIVE
: 设备被移除CHANGED
: 设备更改注意:目前仅Chrome浏览器支持扬声器枚举与选择。
track-low-init-success
回调通知小流创建成功
track-low-init-fail
回调通知小流创建失败
sender-transform
回调用于自定义加密,回调编码后的帧
receiver-transform
回调用于自定义加密,回调解码前的帧
asr-captions
回调实时字幕识别结果
device-open-fail
摄像头打开失败,当触发该事件时,会使用默认参数{video: true}尝试重新打开摄像头。
displaySurfaceError
屏幕共享选择的区域不合法。(加入房间前修改 NERTC.getParameters().forceDisplaySurface 以选择屏幕共享区域。当触发该事件时,会自动关闭屏幕共享)
forceDisplaySurface: 'default' | 'browser' | 'window' | 'monitor', 默认为'default'
displaySurfaceUnknown
屏幕共享选择的区域未知。(加入房间前修改 NERTC.getParameters().forceDisplaySurface 以选择屏幕共享区域.当无法判断用户选择的屏幕共享区域时,会触发该事件,可通过该事件回调主动关闭屏幕共享)
forceDisplaySurface: 'default' | 'browser' | 'window' | 'monitor', 默认为'default'
发布本地音视频流。
发布音视频流之后,远端会触发 Client.on("stream-added") 回调。
需要发布的 Stream。
设置房间场景。
房间场景可设置为通话或直播场景,不同的场景中 QoS 策略不同。
房间场景。
可设置为:
rtc
:(默认)通信场景。该场景下,房间内所有用户都可以发布和接收音、视频流。适用于语音通话、视频群聊等应用场景。live
:直播场景。该场景有主播和观众两种用户角色,可以通过 setClientRole 设置。主播可以发布和接收音视频流,观众直接接收流。适用于语聊房、视频直播、互动大班课等应用场景。设置用户角色。默认情况下用户以主播角色加入房间。
在加入房间前,用户可以调用本接口设置本端模式为观众或主播模式。在加入房间后,用户可以通过本接口切换用户模式。
用户角色支持设置为主播(host
)或观众(audience
),主播和观众的权限不同:
用户角色。可设置为:
host
:直播模式中的主播,可以发布和接收音视频流。如果用户之前已经发布了音频或视频,切换到主播时会自动恢复发布音频或视频流。audience
: 直播模式中的观众,只能接收音视频流。主播模式切换到观众模式后,会自动停止发送音视频流。注意:
指定编解码类型
'VP8' | 'H264',可不填,不填写时根据房间能力自动选择编解码类型
设置媒体流加密模式。
在金融行业等安全性要求较高的场景下,您可以在加入房间前通过此方法设置媒体流加密模式。
媒体流加密方案。详细信息请参考 encryptionMode。
设置媒体流加密密钥。
媒体流加密密钥。字符串格式,长度为 1~128 字节。推荐设置为英文字符串。
设置本地用户的媒体流优先级。
如果某个用户的优先级为高,那么该用户媒体流的优先级就会高于其他用户,弱网环境下 SDK 会优先保证其他用户收到的、高优先级用户的媒体流的质量。
优先级设置。
设置整个频道的远端用户的播放音量。
active-speaker
以及'volume-indicator'事件回调会受该接口的影响。特别的,当使用setPlaybackVolume将音量设置为0时,active-speaker
及volume-indicator
不再有回调。动态切换视频大小流。
如果发送端开启了双流模式,即大小流模式,订阅端默认接收大流,您也可以在订阅端调用此方法选择接收大流还是小流。
指定音视频流。
指定大小流类型。可以使用NERTC.STREAM_TYPE.HIGH
或 NERTC.STREAM_TYPE.LOW
指定
媒体类型。主流为"video",辅流为"screen"
动态切换视频大小流。可参见Client.setRemoteStreamType方法。
指定音视频流。
指定大小流类型。可以使用NERTC.STREAM_TYPE.HIGH
或 NERTC.STREAM_TYPE.LOW
指定
开启实时字幕
需要在加入频道后调用client.startAsrCaptions()
方法。调用后,可收到asr-captions
事件。
客户端录制功能。
允许用户在浏览器上实现本地录制音视频的功能。
是录制参数。详细信息请参考 ClientMediaRecordingOptions
开启云代理服务。
在内网环境下,如果用户防火墙开启了网络限制,请参考《使用云代理》将指定 IP 地址和端口号加入防火墙白名单,然后调用此方法开启云代理。
错误码包括:
错误码(code) | 错误原因(reason) |
---|---|
INVALID_OPERATION |
非法操作,请在加入房间之前调用该接口。 |
关闭实时字幕
需要在开启实时字幕后调用client.stopAsrCaptions()
方法。调用后,不再收到asr-captions
事件。
结束视频录制
关闭云代理服务。
订阅远端音视频流。
通常在 Client.on("stream-added")
事件回调中处理远端媒体订阅。
订阅远端音视频流之后,本地会触发 Client.on("stream-subscribed")
事件。
注意事项:
Client.subscribe
可以直接指定订阅的媒体类型了需要订阅的源端音视频流。
停止将本地音视频流发布到本房间。
停止发布音视频流之后,远端会触发 Client.on("stream-removed") 回调。
需要取消发布的 Stream。
取消订阅远端音视频流。
取消订阅后,SDK 将不再接收远端音视频流。
注意事项:
需要取消订阅的源端音视频流。
动态更新高级权限token。
启动高级权限token功能之后,用户可以中途动态更新其权限,以及刷新token超时时间
新生成的高级权限token。
Client 接口提供音视频通话的核心功能,例如加入房间、发布和订阅音视频流等。
请使用 NERTC.createClient 创建 Client 对象,Client 对象指通话中的本地或远程用户,提供云信 NERTC SDK 的核心功能。