客户端对象(Client)
本章节介绍了Web SDK的Client接口详情。
接口 |
描述 |
---|---|
加入房间。调用该接口让用户加入指定房间,进行音频/视频通话。 |
|
离开房间。用户结束通话后须调用该接口离开房间。 |
|
加入房间后,发布本地流。 |
|
取消发布本地流。 |
|
订阅远端音视频媒体流。 |
|
取消订阅远端音视频媒体。 |
|
批量订阅远端用户的视频媒体流。 |
|
切换用户角色。 |
|
注册客户端对象事件回调接口。 |
|
取消注册客户端对象事件回调接口。 |
|
获取客户端连接状态。 |
|
获取当前网络传输状况统计数据。 |
|
获取本地音频统计数据。 |
|
获取本地视频统计数据。 |
|
获取远端音频统计数据。 |
|
获取远端视频统计数据。 |
|
设置是否开启音频TopN模式。 |
|
设置音频TopN模式的音量值。该接口为1.4.0版本新增。 |
|
开启/禁用音频TopN模式的所有音轨。该接口为1.4.0版本新增。 |
|
开启/关闭视频码流状态探测功能。该接口为1.4.0版本新增。 |
|
修改用户昵称。该接口为1.5.0版本新增。 |
|
启动直播流旁推到CDN。 |
|
更新旁路推流的合流参数。 |
|
停止直播流旁推到CDN。 |
|
设置企业内部部署代理反向服务器。该接口为2.0.3版本新增。 |
|
设置代理服务器配置信息。该接口为2.0.3版本新增。 |
|
设置是否开启RTC音视频流统计信息事件。该接口为2.0.3版本新增。 |
|
设置媒体最大带宽。该接口为2.0.5版本新增。 |
|
更新签名。该接口为2.0.8版本新增。 |
join
async join(roomId: string, options: JoinConfig): Promise<void>
【功能说明】
加入房间。该接口让用户加入一个房间,进行音频或视频通话。
【请求参数】
- roomId:房间ID,房间唯一标识符。必选,string[64]类型。
- options:加入房间配置。必选,JoinConfig类型。
JoinConfig 定义为:{
- userId:用户标识,userId需要保证应用内唯一。必选,string[64]类型。
- userName:用户昵称。可选,string[256]类型。
- signature:签名,签名的具体生成方法请参见接入鉴权。必选,string[512]类型。
- ctime:必选,鉴权签名时间戳。string类型,UTC时间戳,单位秒。
- role:必选,number类型,用户角色,可以标识媒体方向。role的枚举值包括:
- 0: 表示joiner,能够发送音视频和接收音视频。
- 2: 表示player,只接收别人的音视频,不发送自己的音视频媒体。
【返回参数】
Promise<void>:返回一个Promise对象。
- roomId支持的字符包括:a-z、A-Z、0-9、连接符 '-'、下划线 '_'。
- userId支持的字符包括:a-z、A-Z、0-9、连接符 '-'、下划线 '_'。
leave
async leave(): Promise<void>
【功能说明】
离开房间,用户结束通话后须调用该接口离开房间。
【请求参数】
无
【返回参数】
Promise<void>:返回一个Promise对象。
publish
async publish(stream: Stream, option?: PublishOption): Promise<void>
【功能说明】
加入房间并创建本地流后,可以调用该接口发布本地流。只有角色为“joiner”才能发布本地流。
【请求参数】
- stream:必选,Stream类型,本地流对象。
- option:可选,PublishOption类型,表示是否主动发布视频流,如果不传,则默认不主动发布视频流。
PublishOption类型定义如下:
{
autoPushVideo:可选,boolean类型,表示是否主动发布视频流,默认为false。
}
【返回参数】
Promise<void>:返回一个Promise对象。
unpublish
async unpublish(stream: Stream): Promise<void>
【功能说明】
取消发布本地流。
【请求参数】
stream:必选,Stream类型,本地流对象。
【返回参数】
Promise<void>:返回一个Promise对象。
subscribe
async subscribe(stream: RemoteStream, option?: SubscribeOption): Promise<void>
【功能说明】
订阅远端音视频媒体流。订阅远端媒体流成功后,会收到Client.on('stream-subscribed') 事件通知。然后可以对流进行播放。
- stream:必选,RemoteStream类型,远端流对象,通过stream-added事件获得。
- option:可选,SubscribeOption类型,表示订阅视频或音频的选项,如果不传,则订阅音频和分辨率最高的视频。
SubscribeOption 类型定义如下:
{
- video:可选,boolean 类型,表示是否订阅视频,默认为 false。
- audio:可选,boolean 类型,表示是否订阅音频,默认为 false。
- resolutionIds:可选。string[]类型,video为true的时候有效。表示要订阅的分辨率Id的视频。resolutionId可通过接口getStreamInfo 获取。如果不传resolutionIds,则默认订阅分辨率最高的一个视频。该参数为1.8.0 版本新增。
}
【返回参数】
Promise<void>:返回一个Promise对象。
SubscribeOption中“video”和“audio”不能同时为“false”。
unsubscribe
async unsubscribe(stream: Stream,option?: SubscribeOption): Promise<void>
【功能说明】
取消订阅远端音视频媒体流。
【请求参数】
- stream:必选,RemoteStream类型,远端流对象,通过stream-added事件获得。
- option:可选。表示取消订阅的选项,如果不传,则取消订阅音频和所有分辨率的视频,为SubscribeOption类型。
- video:可选,boolean类型,表示是否取消订阅视频,默认为false。
- audio:可选,boolean类型,表示是否取消订阅音频,默认为false。
- resolutionIds:可选,string[]类型,在video为true的时候有效,表示取消订阅的分辨率Id的视频。resolutionId通过接口getStreamInfo 获取。如果resolutionIds不传,则取消订阅所有分辨率的视频。
}
【返回参数】
Promise<void>:返回一个Promise对象。
batchSubscribe
async batchSubscribe(subscribeInfos: SubscribeParam[]): Promise<void>
【功能说明】
批量订阅多个用户的视频。订阅远端媒体流成功后,对每个远端用户都会收到Client.on('stream-subscribed')事件通知。然后可以对订阅成功的流进行播放。
【请求参数】
subscribeInfos:必选,SubscribeParam[]类型,表示要订阅的全量远端用户的视频信息。
SubscribeParam类型定义如下:{
- userId:必选,string类型,表示要订阅的用户ID。
- resolutionIds:可选。string[]类型,表示要订阅的用户的视频的分辨率。如果不传resolutionIds,则默认订阅分辨率最高的一个视频。
- minResolution:可选,ResolutionType类型,表示如果开启视频分辨率自适应升降档后,最小的分辨率档位。ResolutionType包括的字符串枚举值包括FHD,HD,SD,LD。
}
【返回参数】
Promise<void>:返回一个Promise对象。
- 该接口订阅远端用户的视频,不订阅远端用户的音频。
- 不同于subscribe 接口的增量订阅方式,该接口订阅的入参是要订阅的全量用户列表。
switchRole
async switchRole(role: number,authorization: Authorization): Promise<void>
【功能说明】
切换用户角色,本方法用于加入房间成功之后修改角色。
- role:必选,number类型。
- 0:表示joiner,能够发送音视频和接受音视频。
- 2:表示player,只接受别人的音视频,不发送自己的音视频媒体。
- authorization:必选,类型为Authorization,表示鉴权信息。该字段为2.0.0版本新增。Authorization的属性包括:
- signature:必选,string[512]类型,鉴权签名字串,具体生成方法请参见接入鉴权。
- ctime:必选,鉴权签名时间戳。string类型,UTC时间戳,单位秒。
【返回参数】
Promise<void>:返回一个Promise对象。
on
on(event: string, handler: function): void
【功能说明】
注册客户端对象事件回调接口。
- event:必选,string类型,事件名称。具体请参见ClientEvent。
- handler:必选,function类型,事件处理方法。
【返回参数】
无
off
off(event: string, handler: function): void
【功能说明】
取消注册客户端对象事件回调接口。
- event:必选,string类型,事件名称。具体请参见ClientEvent。
- handler:必选,function类型,事件处理方法。
【返回参数】
无
getConnectionState
getConnectionState(): ConnectionState
【功能说明】
获取客户端连接状态。
【请求参数】
无
【返回参数】
- CONNECTING:连接建立中。
- CONNECTED:连接已建立。
- RECONNECTING:重新连接中。
- DISCONNECTED:连接已断开。
getTransportStats
getTransportStats(): Promise<TransportStats>
【功能说明】
获取当前网络传输状况统计数据,该方法需要publish后调用。双流场景,默认获取主流最高分辨率视频的统计值。
【请求参数】
无
【返回参数】
返回参数为TransportStats类型,TransportStats当前支持的属性包括:{
getLocalAudioStats
getLocalAudioStats(): Promise<Map<string, LocalAudioStats>>
【功能说明】
获取本地已发送的音频统计数据。
【请求参数】
无
【返回参数】
getLocalVideoStats
getLocalVideoStats(): Promise<Map<string, AllLocalVideoStats>>
【功能说明】
获取本地已发送的视频统计数据。
【请求参数】
无
【返回参数】
getLocalVideoStats和getLocalAudioStats接口仅在本地流发布且被远端订阅后才可调用。
getRemoteAudioStats
getRemoteAudioStats(): Promise<Map<string, RemoteAudioStats>>
【功能说明】
获取远端音频统计数据。
【请求参数】
无
【返回参数】
- string:表示userId。
- RemoteAudioStats:远端音频统计指标。包含如下属性:
- bytesReceived:number类型,已接收字节数。
- packetsReceived:number类型,已接收包数。
- packetsLost:number类型,丢包数。
getRemoteVideoStats
getRemoteVideoStats(): Promise<Map<string, AllRemoteVideoStats>>
【功能说明】
获取远端视频统计数据。
【请求参数】
无
【返回参数】
- string:表示userId。
- AllRemoteVideoStats:远端视频统计指标。包含如下属性:{
RemoteVideoStats 包含如下属性:{
Firefox浏览器上,无法获取到远端视频的分辨率数据。
enableTopThreeAudioMode
enableTopThreeAudioMode(enable: boolean): boolean
【功能说明】
设置入会前是否开启音频TopN 模式(最大三方模式)。
【请求参数】
enable:必选,boolean类型,true表示开启音频TopN 模式,false表示不开启。默认为false。
【返回参数】
boolean类型,true表示开启成功,false表示开启失败。
该接口需在加入房间前设置,1.2.0版本新增。
setVolume4TopThree
setVolume4TopThree(volume: number): void
【功能说明】
开启音频TopN模式(最大三方模式)后,设置音频的音量值。
【请求参数】
volume:必选,number类型,取值范围为[0,100],音频的音量值。
【返回参数】
无
该接口需要在enableTopThreeAudioMode后设置,1.4.0版本新增。
muteAudio4TopThree
muteAudio4TopThree(enable: boolean): void
【功能说明】
开启音频TopN模式(最大三方模式)后,开启/禁用音频TopN模式的音轨。
【请求参数】
enable:必选,boolean类型,true表示禁用音频TopN模式的音轨,false表示开启音频TopN模式的音轨。默认为false。
【返回参数】
无
该接口需要在enableTopThreeAudioMode后设置,1.4.0版本新增。
enableStreamStateDetection
async enableStreamStateDetection(enable: boolean, interval: number): Promise<void>
【功能说明】
开启/关闭视频码流状态探测功能,开启后可探测房间内任意其他已订阅用户是否处于视频无码流的状态,若有用户处于视频无码流状态,可收到stream-interrupted事件,若有用户视频码流恢复,可收到stream-recovered事件。
【请求参数】
- enable:必选,boolean类型,true表示开启视频码流状态探测,false表示关闭视频码流状态探测。默认为false。
- interval:必选,number类型,单位:秒 ,取值范围为[1,60]。视频无码流状态的判断时间。推荐设置为3秒。
【返回参数】
Promise<void>:返回一个Promise对象。
该接口需在加入房间后设置,1.4.0版本新增。
changeUserName
async changeUserName(userName: string): Promise<boolean>
【功能说明】
Joiner角色的用户修改用户昵称,修改成功后,房间内其他用户会收到remote-user-name-changed事件,而Player角色的用户修改后不会通知房间内的其他用户。
【请求参数】
userName:必选,string[256]类型,新的用户昵称。
【返回参数】
Promise<boolean>:返回一个Promise对象,true表示修改成功,false表示修改失败。
该接口需在加入房间后设置,1.5.0版本新增。
startLiveStreaming
async startLiveStreaming(taskId: string, urls: string[], publishConfig: PublishConfig, userConfigs: UserConfig[]): Promise<void>
【功能说明】
启动直播流旁推到CDN。
【请求参数】
- urls:必选,string[]类型,旁推的CDN Urls。
- taskId:必选, string类型,表示旁推任务Id。由APP生成和管理。
- publishConfig:必选,PublishConfig类型,表示旁推音视频配置。PublishConfig定义如下:{
- width:必选,number类型,表示推流视频的总宽度,默认值360,单位为像素。
- height:必选,number类型,表示推流视频的总高度,默认值640,单位为像素。
- videoBitrate:必选,number类型,表示推流视频的码率,单位为Kbps,默认值为400 Kbps。
- videoFramerate:必选,number类型,表示推流视频的帧率,单位为fps,取值范围为[0, 60],默认值为15 fps。
- videoGop:必选,number类型,表示旁路直播的输出视频的GOP,单位为帧。默认值为30帧。
- audioSampleRate:必选,number类型,表示旁路直播的输出音频的采样率16000/32000/48000,默认值为32000。
- audioBitrate:必选,number类型,用于旁路直播的输出音频的码率。单位为Kbps,默认值为48。
- audioChannels:必选,number类型,用于旁路直播的输出音频的声道数,取值范围为[1, 5],默认值为2。
- template:可选,number类型,0表示悬浮,1表示九宫格,2表示屏幕分享,99表示自定义模板,默认值为0。
- userConfigs:必选,UserConfig[]类型。 表示需要旁推的每个用户的配置。 UserConfig定义如下:{
- userId:必选,string类型,表示流用户Id。
- audio:必选,boolean类型,表示是否旁推音频。
- resolutionIds:必选,string[]类型,表示要旁推的主流或者辅流的视频分辨率ID。
- layouts:可选,ResolutionLayout[]类型 ,在template为自定义模板有效,表示自定义用户流画面布局。ResolutionLayout定义如下:{
- resolutionId:必选,string类型,表示主流或者辅流的视频分辨率ID。
- subWidth:可选,number类型,表示画面在输出时的宽度,单位为像素值,默认值为36。
- subHeight:可选,number类型,表示画面在输出时的高度,单位为像素值,默认值为64。
- localX:可选,number类型,表示该画面在输出时的X偏移,单位为像素值,localX与subWidth之和不能超过混流输出的总宽度,默认值为0。
- localY:可选,number类型,表示该画面在输出时的Y偏移,单位为像素值,localY与subHeight之和不能超过混流输出的总高度,默认值为0。
- renderMode:可选,number类型,表示该画面在输出时的显示模式,0表示裁剪,1表示缩放。默认值为0。
- alpha:可选,number类型,表示该用户视频图像在输出视频图像中的透明度,取值范围为0~100。0表示该用户视频图像完全透明,100表示该用户视频图像完全不透明。默认值为100。
- subBackGroundColor:可选,number类型,表示混流-输出流背景色,取值是十进制整数。默认为黑色。
- zorder:可选,number类型,标志图层。
}
【返回参数】
Promise<void>:返回一个Promise对象。
- 该方法只有角色为joiner的用户才能使用该功能,2.0.1版本新增。
- 请确保在publish流成功之后调用本方法。
updateLiveStreaming
async updateLiveStreaming(taskId: string, urls: string[], publishConfig: PublishConfig, userConfigs: UserConfig[]): Promise<void>
【功能说明】
更新旁路推流。
在推流状态变更时,本地会触发Client.on(“live-streaming-updated”) 回调。
【请求参数】
【返回参数】
Promise<void>:返回一个Promise对象。
该方法需在启动直播流旁推成功后调用,2.0.1版本新增。
stopLiveStreaming
async stopLiveStreaming(taskId: string): Promise<void>
【功能说明】
停止直播流旁推到CDN。该方法在2.0.1版本新增。
【请求参数】
taskId:必选,string类型,旁路推流的任务Id。
【返回参数】
Promise<void>:返回一个Promise对象。
enableRtcStats
async enableRtcStats(enable: boolean, interval: number): Promise<void>
【功能说明】
设置是否开启RTC音视频流统计信息事件。该接口为2.0.3版本新增。
【请求参数】
enable:必选,boolean类型,表示是否开启RTC音视频流统计信息事件,true表示开启,false表示不开启。
interval:必选,number类型,设置RTC音视频流统计信息事件间隔时间,单位毫秒。当enable为true时有效。
【返回参数】
Promise<void>:返回一个Promise对象。
setProxyServer
setProxyServer(server: string): void
【功能说明】
设置信令代理服务器。用于企业内部部署反向代理服务器(如 nginx )的场景。该方法为2.0.3版本新增。
【请求参数】
server:必选,string类型,反向代理服务器的列表。一个代理服务器的格式,比如:http://ip:port / https://domain:port。
【返回参数】
无
setProxyServer和setTurnServer方法需在join之前调用。
setTurnServer
setTurnServer(turnServerConfig: TurnServerConfig): void
【功能说明】
设置代理服务器配置信息。用于企业内部部署反向代理服务器(如nginx)的场景。该方法为2.0.3版本新增。
【请求参数】
turnServerConfig:代理服务器配置信息。必选,TurnServerConfig类型。
TurnServerConfig 类型定义如下:{
- turnServers:反向代理服务器地址。必选,string[]类型。
- udpPort:UDP端口。可选,number类型。
- userName:反向代理服务器用户名。可选,string类型。
- credential:反向代理服务器密码。可选,string类型。
【返回参数】
无
setNetworkBandwidth
setNetworkBandwidth(bandwidthParam: NetworkBandwidth): void
【功能说明】
设置媒体最大带宽。该方法为2.0.5版本新增。
【请求参数】
NetworkBandwidth类型定义如下:{
maxBandwidth:必选,number类型,媒体最大总带宽,取值范围为[3072, 51200],单位为kbps。
}
【返回参数】
无
renewSignature
renewSignature(ctime: string, signature: string): boolean
【功能说明】
更新签名。
【请求参数】
- ctime:签名鉴权的过期时间,是系统当前UTC时间(unix时间戳)加上鉴权过期时间(推荐2小时,最长需要小于12小时)。单位:秒。必选,string类型。
- signature:签名,签名的具体生成方法请参见接入鉴权。必选,string类型,string[512]类型。
【返回参数】
boolean:返回一个boolean值,说明更新签名是否成功。
该接口2.0.8版本新增。