DingRTCClient

DingRTCClient 提供音视频通话的核心功能,比如加入频道、发布和订阅音视频轨道等。您可以通过 createClient 创建一个 Client 对象。一个 Client 对象代表一个本地客户端。

属性列表

属性

类型

描述

支持的最低版本

channelName

string

频道名称。

如果本地用户没有加入频道,该属性值为 undefined。

3.0.0

connectionState

ConnectionState

sdk 实例与服务器连接状态。

3.0.0

localTracks

LocalTrack[]

保存当前正在发布的本地轨道对象列表。 调用 publish 成功后,发布的轨道对象会自动添加到这个列表中。 调用 unpublish 成功后,取消发布的轨道对象会自动从这个列表中移除。

3.0.0

remoteUsers

readonly

RemoteUser[]

远端用户信息列表,包含频道中各个远端用户的用户 ID 和轨道信息。

如果本地用户没有加入频道,则该列表为空。

3.0.0

userIdreadonly

string

本地用户的用户 ID。

如果本地用户没有加入频道,该属性值为 undefined。

3.0.0

groups

Group[]

当前频道存在的音频分组信息列表。

3.4.0

接口列表

接口

描述

支持的最低版本

getLocalAudioStats()

获取本地音频相关信息。

3.0.0

getLocalVideoStats()

获取本地视频相关信息。

3.0.0

getRemoteVideoStats()

获取远端用户的视频统计信息。

3.3.0

getRemoteNetworkQuality()

获取远端用户的网络评分信息。

join()

加入频道,在同一个频道内的用户可以互相通话。

调用该方法加入频道时,本地会触发 "connection-state-change" 回调。

本端加入频道成功后,远端会触发 "user-joined" 回调。

3.0.0

leave()

离开频道,即挂断或退出通话。

调用该方法离开频道时,本地会触发 "connection-state-change" 回调。

远端会触发 "user-left" 回调。

3.0.0

publish()

发布本地音视频轨道至频道中。

发布音视频轨道之后,远端会触发 "user-published" 回调。

3.0.0

unpublish()

取消发布本地音视频轨道。

取消发布音视频轨道之后,远端会触发 "user-unpublished" 回调。

3.0.0

setRemoteDefaultVideoStreamType()

设置订阅所有远端用户的视频类型。

如果远端用户开启了双流模式,本地用户调用 subscribe 后会直接订阅本方法中 streamType 参数所指定的流类型。如不设置,默认订阅大流

3.0.0

setRemoteVideoStreamType()

设置订阅特定远端用户的视频类型。

3.0.0

subscribe()

订阅远端用户的音视频轨道。

3.0.0

unsubscribe()

取消订阅远端用户的音视频轨道。

3.0.0

batchSubscribe()

批量订阅远端用户的音视频轨道。

3.1.0

batchUnsubscribe()

批量取消订阅远端用户的音视频轨道。

3.1.0

off()

取消一个指定事件的监听回调函数。

3.0.0

on()

监听一个指定事件并设置回调函数。

3.0.0

once()

监听一个指定事件一次,回调函数触发后移除。

3.0.0

removeAllListeners()

取消该对象指定事件或所有事件上的监听回调。

3.0.0

joinGroup()

加入指定音频分组

3.4.0

leaveGroup()

离开指定音频分组

3.4.0

dismissGroup()

解散指定音频分组

3.4.0

subscribeGroup()

订阅指定音频分组

3.4.0

unsubscribeGroup()

取消订阅指定音频分组

3.4.0

mixAudioToGroup()

将指定音频轨道混音/取消混音到对应分组或频道

3.4.0

事件列表

事件

事件参数

描述

支持的最低版本

"connection-state-change"

(curState:ConnectionState, revState:ConnectionState, reason?:DisconnectedReason) => void

SDK 与服务器的连接状态发生改变回调。

3.0.0

"media-reconnect-end"

(uid: string) => void

SDK 重新建立媒体连接(用于发布和订阅)结束的回调。

3.0.0

"media-reconnect-start"

(uid: string) => void

SDK 开始尝试重新建立媒体连接(用于发布和订阅)的回调。

3.0.0

"stream-type-changed"

(uid: string, streamType:RemoteStreamType) => void

订阅的视频流类型发生改变回调。 视频流类型改变指视频大流(高码率、高分辨率)变为视频小流(低码率、低分辨率),或视频小流变为视频大流。

3.0.0

"user-info-updated"

(uid: string, msg: 'mute-audio' | 'mute-video' | 'unmute-audio' | 'unmute-video') => void

该回调用于提示用户状态变化。

在大部分情况下,你只需要监听 user-published 和 user-unpublished 就可以完成订阅、取消订阅、展示远端用户是否打开了摄像头和麦克风等工作,无需特别关注实际用户状态的变化,SDK 会自动处理用户状态变化。

3.0.0

"user-joined"

(user:RemoteUser) => void

远端用户或主播加入频道回调。

3.0.0

"user-left"

(user:RemoteUser) => void

远端用户或主播离开频道回调。

3.0.0

"user-published"

(user:RemoteUser, mediaType:TrackMediaType, auxiliary?: boolean) => void

该回调通知远端用户发布了新的音频轨道或者视频轨道。

你可以在该回调中订阅并播放远端用户的音视频轨道。

3.0.0

"user-unpublished"

(user:RemoteUser, mediaType:TrackMediaType, auxiliary?: boolean) => void

该回调通知远端用户取消发布音频轨道或者视频轨道。

3.0.0

"volume-indicator"

(uids: string[]) => void

提示频道内正在说话的远端用户列表,三人及以上时自动开启。

uids 正在说话人的uid,第一个为音量最高的人,列表为空时代表无人在说话。

3.0.0

"network-quality"

(uplinkNetworkQuality:NetworkQuality, downlinkNetworkQuality:NetworkQuality) => void

客户端侧网络质量报告回调,加入频道后每2秒触发一次,仅用来当参考值。

3.0.0

"group-add"

(group: Group) => void;

分组添加事件

3.4.0

"group-remove"

(group: Group) => void;

分组移除事件

3.4.0

"group-user-join"

(groupId: string, groupUser: GroupUser) => void;

分组成员加入事件

3.4.0

"group-user-leave"

(groupId: string, groupUser: GroupUser) => void;

分组成员离开事件

3.4.0

接口详情

getLocalAudioStats()

获取本地音频相关信息。

类型签名

getLocalAudioStats(): LocalAudioStates;

返回

LocalAudioStates

getLocalVideoStats()

获取本地视频相关信息。

类型签名

getLocalVideoStats(): LocalVideoStatesMap;

返回

LocalVideoStatesMap

getRemoteVideoStats()

获取远端用户的视频统计信息。

类型签名

getRemoteVideoStats(): RemoteVideoStatesMap;

返回

RemoteVideoStatesMap

getRemoteNetworkQuality()

获取远端用户的网络统计信息,远端用户也需要在3.3.0版本及以上时才能获取到信息。

类型签名

getRemoteNetworkQuality(): {
  [uid: string]: {
    downlinkNetworkQuality: NetworkQuality,
    uplinkNetworkQuality: NetworkQuality,
  }
};

返回

{

[uid: string]: {

downlinkNetworkQuality: NetworkQuality,

uplinkNetworkQuality: NetworkQuality,

}

};

join()

加入频道,在同一个频道内的用户可以互相通话。

调用该方法加入频道时,本地会触发 "connection-state-change" 回调。

本端加入频道成功后,远端会触发 "user-joined" 回调。

类型签名

join(joinInfo: JoinParam): Promise<{
  remoteUsers: RemoteUser[];
  timeLeft: number;
}>;

入参:

参数

类型

描述

joinInfo

JoinParam

加入频道所需参数

返回:

参数

类型

描述

版本

remoteUsers

RemoteUser[];

远端用户列表

3.0.0

timeLeft

number

频道剩余时长

3.1.0

返回

Promise<{ remoteUsers: RemoteUser[]; timeLeft: number }>

leave()

离开频道,即挂断或退出通话。

调用该方法离开频道时,本地会触发 "connection-state-change" 回调。

远端会触发 "user-left" 回调。

类型签名

leave(): void;

返回

void

publish()

发布本地音视频轨道至频道中。

发布音视频轨道之后,远端会触发 "user-published" 回调。

类型签名

publish(tracks: LocalTrack | LocalTrack[]): Promise<void>;

参数

类型

描述

tracks

LocalTrack|LocalTrack[]

通过 DingRTC.createMicrophoneAudioTrack / DingRTC.createCameraTrack 或其他方法创建的本地 Track 对象。

返回

Promise<void>

setRemoteDefaultVideoStreamType()

设置订阅所有远端用户的视频类型。

如果远端用户开启了双流模式,本地用户调用 subscribe 后会直接订阅本方法中 streamType 参数所指定的流类型。如不设置,默认订阅大流

类型签名

setRemoteDefaultVideoStreamType(streamType: RemoteStreamType): void;

参数

类型

描述

streamType

RemoteStreamType

订阅的视频流类型,high 代表大流,low 代表小流

返回

void

setRemoteVideoStreamType()

设置订阅特定远端用户的视频类型。

类型签名

setRemoteVideoStreamType(uid: string, streamType: RemoteStreamType): Promise<void>;

参数

类型

描述

uid

string

远端用户的 ID。

streamType

RemoteStreamType

订阅的视频流类型,high 代表大流,low 代表小流

返回

Promise<void>

subscribe()

订阅远端用户的音视频轨道。

类型签名

subscribe(uid: string, mediaType: TrackMediaType, auxiliary?: boolean): Promise<RemoteAudioTrack | RemoteVideoTrack>;

参数

类型

描述

uid

string

远端用户id

mediaType

TrackMediaType

订阅的轨道媒体类型

auxiliary

boolean

(Optional)如果订阅视频轨道,是否是订阅桌面共享视频流

返回

Promise<RemoteAudioTrack|RemoteVideoTrack>

batchSubscribe()

批量订阅远端用户的音视频轨道。

类型签名

batchSubscribe(batchSubscribeParam: SubscribeParam[]): Promise<SubscribeResult[]>;

参数

类型

描述

batchSubscribeParam

SubscribeParam[]

订阅远端音视频轨道参数

返回

Promise<SubscribeResult[]>

说明

当前还未支持指定到个人的音频订阅,请需要订阅音频时将userId 置为字符串'mcu',代表订阅的是频道内远端用户合流后的音频,音频合流全局只需订阅一次,当远端有新用户发布音频流时会自动合入已订阅的mc音频流内。

unpublish()

取消发布本地音视频轨道。

取消发布音视频轨道之后,远端会触发 "user-unpublished" 回调。

类型签名

unpublish(tracks?: LocalTrack | LocalTrack[]): Promise<void>;

参数

类型

描述

tracks

LocalTrack|LocalTrack[]

(Optional)要取消发布的轨道。如果留空,会将所有发布过的音视频轨道取消发布。

返回

Promise<void>

unsubscribe()

取消订阅远端用户的音视频轨道。

类型签名

unsubscribe(uid: string, mediaType?: TrackMediaType, auxiliary?: boolean): Promise<void>;

参数

类型

描述

uid

string

远端用户id。

mediaType

TrackMediaType

(Optional)取消订阅的轨道媒体类型。

auxiliary

boolean

(Optional)如果是订阅视频轨道,是否是订阅桌面共享视频流

返回

Promise<void>

batchUnsubscribe()

批量订阅远端用户的音视频轨道。

类型签名

batchSubscribe(batchUnsubscribeParam: UnsubscribeParam[]): Promise<void>;

参数

类型

描述

batchUnsubscribeParam

UnsubscribeParam[]

取消订阅远端音视频轨道参数

返回

Promise<void>

说明

当前还未支持指定到个人的音频订阅,请需要取消订阅音频时将userId 置为字符串'mcu',代表取消订阅的是频道内远端用户合流后的音频,音频合流全局亦只需取消订阅一次。指定到个人的音频取消订阅将在近期支持。

on()

监听一个指定事件并设置回调函数

类型签名

on(event: string, fn: Function): void;

参数

参数

类型

描述

event

string

监听的指定事件

fn

Function

监听事件触发时的回调函数

返回

void

off()

取消一个指定事件的监听回调函数

类型签名

off(event: string, fn: Function): void;

参数

参数

类型

描述

event

string

监听的指定事件

fn

Function

监听事件触发时的回调函数

返回

void

once()

监听一个指定事件一次,回调函数触发后移除

类型签名

once(event: string, fn: Function): void;

参数

参数

类型

描述

event

string

监听的指定事件

fn

Function

监听事件触发时的回调函数

返回

void

removeAllListeners()

取消该对象指定事件或所有事件上的监听回调

类型签名

removeAllListeners(event?: string): void;

参数

参数

类型

描述

event

string

(Optional)设置了指定事件时,对应监听回调函数将会清空。当参数未填写时,对象的所有事件的监听函数都将清空

返回

void

joinGroup()

加入指定音频分组

类型签名

joinGroup(config?: JoinGroupConfig): Promise<void>;

参数

参数

类型

描述

config

JoinGroupConfig

加入音频分组时的配置项

返回

Promise<void>;

leaveGroup()

离开指定音频分组

类型签名

leaveGroup(groupId: string): Promise<void>;

参数

参数

类型

描述

groupId

string

音频分组Id

返回

Promise<void>

dismissGroup()

解散指定音频分组

类型签名

dismissGroup(groupId: string): Promise<void>;

参数

参数

类型

描述

groupId

string

音频分组Id

返回

Promise<void>

subscribeGroup()

订阅指定音频分组

类型签名

subscribeGroup(groupId: string): Promise<RemoteAudioTrack>;

参数

参数

类型

描述

groupId

string

音频分组Id

说明
  1. 在已订阅mcu音频时不可订阅音频分组,需先取消mcu音频的订阅方可订阅指定音频分组;

  2. 仅能订阅已加入的音频分组;

  3. 同时仅能订阅一个音频分组;

返回

Promise<RemoteAudioTrack>

unsubscribeGroup()

解散指定音频分组

类型签名

unsubscribeGroup(groupId: string): Promise<void>;

参数

参数

类型

描述

groupId

string

音频分组Id

返回

Promise<void>

mixAudioToGroup()

将指定音频轨道混音/取消混音到对应分组或频道

类型签名

mixAudioToGroup(track: LocalAudioTrack, mixed: boolean, groupId?: string): Promise<void>;

参数

参数

类型

描述

track

LocalAudioTrack

本地音频轨道

mixed

boolean

true混音,false取消混音

groupId

string

将要发布的音频分组Id

说明
  1. 音频分组Id未填写时将会把音频轨道发布到主频道;

  2. 支持同时发布音频轨道到频道与多个分组;

返回

Promise<void>

事件列表

"connection-state-change"

SDK 与服务器的连接状态发生改变回调。

类型签名

'connection-state-change': (curState: ConnectionState, revState: ConnectionState, reason?: DisconnectedReason) => void;

"media-reconnect-end"

SDK 重新建立媒体连接(用于发布和订阅)结束的回调。

类型签名

'media-reconnect-end': (uid: string) => void;

"media-reconnect-start"

SDK 开始尝试重新建立媒体连接(用于发布和订阅)的回调。

类型签名

'media-reconnect-start': (uid: string) => void;

"stream-type-changed"

订阅的视频流类型发生改变回调。 视频流类型改变指视频大流(高码率、高分辨率)变为视频小流(低码率、低分辨率),或视频小流变为视频大流。

类型签名

'stream-type-changed': (uid: string, streamType: RemoteStreamType) => void;

"user-info-updated"

该回调用于提示用户状态变化。

在大部分情况下,你只需要监听 user-published 和 user-unpublished 就可以完成订阅、取消订阅、展示远端用户是否打开了摄像头和麦克风等工作,无需特别关注实际用户状态的变化,SDK 会自动处理用户状态变化。

类型签名

'user-info-updated': (uid: string, msg: 'mute-audio' | 'mute-video' | 'unmute-audio' | 'unmute-video') => void;

"user-joined"

远端用户加入频道回调。

类型签名

'user-joined': (user: RemoteUser) => void;

"user-left"

远端用户离开频道回调。

类型签名

'user-left': (user: RemoteUser) => void;

"user-published"

该回调通知远端用户发布了新的音频轨道或者视频轨道。

你可以在该回调中订阅并播放远端用户的音视频轨道。

类型签名

'user-published': (user: RemoteUser, mediaType: TrackMediaType, auxiliary?: boolean) => void;

"user-unpublished"

该回调通知远端用户取消发布音频轨道或者视频轨道。

类型签名

'user-unpublished': (user: RemoteUser, mediaType: TrackMediaType, auxiliary?: boolean) => void;

"volume-indicator"

提示频道内正在说话的远端用户列表,当有三人及以上时自动开启。

uids 正在说话人的uid,第一个为音量最高的人,列表为空时代表无人在说话。

类型签名

'volume-indicator': (uids: string[]) => void;

"network-quality"

客户端侧网络质量报告回调,加入频道后每2秒触发一次,仅用作参考值。

类型签名

'network-quality': (uplinkNetworkQuality: NetworkQuality, downlinkNetworkQuality: NetworkQuality) => void;

"group-add"

分组添加事件

类型签名

'group-add': (group: Group) => void;

"group-remove"

分组移除事件

类型签名

'group-remove': (group: Group) => void;

"group-user-join"

分组成员加入事件

类型签名

'group-user-join': (groupId: string, groupUser: GroupUser) => void;

"group-user-leave"

分组成员离开事件

类型签名

'group-user-leave': (groupId: string, groupUser: GroupUser) => void;