DingRTCClient 提供音視頻通話的核心功能,比如加入頻道、發布和訂閱音視頻軌道等。您可以通過 createClient 創建一個 Client 對象。一個 Client 對象代表一個本地客戶端。
屬性列表
屬性 | 類型 | 描述 | 支持的最低版本 |
channelName | string | 頻道名稱。 如果本地用戶沒有加入頻道,該屬性值為 undefined。 | 3.0.0 |
connectionState | sdk 實例與服務器連接狀態。 | 3.0.0 | |
localTracks | 保存當前正在發布的本地軌道對象列表。 調用 publish 成功后,發布的軌道對象會自動添加到這個列表中。 調用 unpublish 成功后,取消發布的軌道對象會自動從這個列表中移除。 | 3.0.0 | |
remoteUsers
| 遠端用戶信息列表,包含頻道中各個遠端用戶的用戶 ID 和軌道信息。 如果本地用戶沒有加入頻道,則該列表為空。 | 3.0.0 | |
userId | string | 本地用戶的用戶 ID。 如果本地用戶沒有加入頻道,該屬性值為 undefined。 | 3.0.0 |
groups | Group[] | 當前頻道存在的音頻分組信息列表。 | 3.4.0 |
接口列表
接口 | 描述 | 支持的最低版本 |
獲取本地音頻相關信息。 | 3.0.0 | |
獲取本地視頻相關信息。 | 3.0.0 | |
獲取遠端用戶的視頻統計信息。 | 3.3.0 | |
獲取遠端用戶的網絡評分信息。 | ||
加入頻道,在同一個頻道內的用戶可以互相通話。 調用該方法加入頻道時,本地會觸發 "connection-state-change" 回調。 本端加入頻道成功后,遠端會觸發 "user-joined" 回調。 | 3.0.0 | |
離開頻道,即掛斷或退出通話。 調用該方法離開頻道時,本地會觸發 "connection-state-change" 回調。 遠端會觸發 "user-left" 回調。 | 3.0.0 | |
發布本地音視頻軌道至頻道中。 發布音視頻軌道之后,遠端會觸發 "user-published" 回調。 | 3.0.0 | |
取消發布本地音視頻軌道。 取消發布音視頻軌道之后,遠端會觸發 "user-unpublished" 回調。 | 3.0.0 | |
設置訂閱所有遠端用戶的視頻類型。 如果遠端用戶開啟了雙流模式,本地用戶調用 subscribe 后會直接訂閱本方法中 streamType 參數所指定的流類型。如不設置,默認訂閱大流 | 3.0.0 | |
設置訂閱特定遠端用戶的視頻類型。 | 3.0.0 | |
訂閱遠端用戶的音視頻軌道。 | 3.0.0 | |
取消訂閱遠端用戶的音視頻軌道。 | 3.0.0 | |
批量訂閱遠端用戶的音視頻軌道。 | 3.1.0 | |
批量取消訂閱遠端用戶的音視頻軌道。 | 3.1.0 | |
取消一個指定事件的監聽回調函數。 | 3.0.0 | |
監聽一個指定事件并設置回調函數。 | 3.0.0 | |
監聽一個指定事件一次,回調函數觸發后移除。 | 3.0.0 | |
取消該對象指定事件或所有事件上的監聽回調。 | 3.0.0 | |
加入指定音頻分組 | 3.4.0 | |
離開指定音頻分組 | 3.4.0 | |
解散指定音頻分組 | 3.4.0 | |
訂閱指定音頻分組 | 3.4.0 | |
取消訂閱指定音頻分組 | 3.4.0 | |
將指定音頻軌道混音/取消混音到對應分組或頻道 | 3.4.0 |
事件列表
事件 | 事件參數 | 描述 | 支持的最低版本 |
(curState:ConnectionState, revState:ConnectionState, reason?:DisconnectedReason) => void | SDK 與服務器的連接狀態發生改變回調。 | 3.0.0 | |
(uid: string) => void | SDK 重新建立媒體連接(用于發布和訂閱)結束的回調。 | 3.0.0 | |
(uid: string) => void | SDK 開始嘗試重新建立媒體連接(用于發布和訂閱)的回調。 | 3.0.0 | |
(uid: string, streamType:RemoteStreamType) => void | 訂閱的視頻流類型發生改變回調。 視頻流類型改變指視頻大流(高碼率、高分辨率)變為視頻小流(低碼率、低分辨率),或視頻小流變為視頻大流。 | 3.0.0 | |
(uid: string, msg: 'mute-audio' | 'mute-video' | 'unmute-audio' | 'unmute-video') => void | 該回調用于提示用戶狀態變化。 在大部分情況下,你只需要監聽 user-published 和 user-unpublished 就可以完成訂閱、取消訂閱、展示遠端用戶是否打開了攝像頭和麥克風等工作,無需特別關注實際用戶狀態的變化,SDK 會自動處理用戶狀態變化。 | 3.0.0 | |
(user:RemoteUser) => void | 遠端用戶或主播加入頻道回調。 | 3.0.0 | |
(user:RemoteUser) => void | 遠端用戶或主播離開頻道回調。 | 3.0.0 | |
(user:RemoteUser, mediaType:TrackMediaType, auxiliary?: boolean) => void | 該回調通知遠端用戶發布了新的音頻軌道或者視頻軌道。 你可以在該回調中訂閱并播放遠端用戶的音視頻軌道。 | 3.0.0 | |
(user:RemoteUser, mediaType:TrackMediaType, auxiliary?: boolean) => void | 該回調通知遠端用戶取消發布音頻軌道或者視頻軌道。 | 3.0.0 | |
(uids: string[]) => void | 提示頻道內正在說話的遠端用戶列表,三人及以上時自動開啟。 uids 正在說話人的uid,第一個為音量最高的人,列表為空時代表無人在說話。 | 3.0.0 | |
(uplinkNetworkQuality:NetworkQuality, downlinkNetworkQuality:NetworkQuality) => void | 客戶端側網絡質量報告回調,加入頻道后每2秒觸發一次,僅用來當參考值。 | 3.0.0 | |
(group: Group) => void; | 分組添加事件 | 3.4.0 | |
(group: Group) => void; | 分組移除事件 | 3.4.0 | |
(groupId: string, groupUser: GroupUser) => void; | 分組成員加入事件 | 3.4.0 | |
(groupId: string, groupUser: GroupUser) => void; | 分組成員離開事件 | 3.4.0 |
接口詳情
getLocalAudioStats()
獲取本地音頻相關信息。
類型簽名
getLocalAudioStats(): LocalAudioStates;
返回
getLocalVideoStats()
獲取本地視頻相關信息。
類型簽名
getLocalVideoStats(): LocalVideoStatesMap;
返回
getRemoteVideoStats()
獲取遠端用戶的視頻統計信息。
類型簽名
getRemoteVideoStats(): 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 | 加入頻道所需參數 |
返回:
參數 | 類型 | 描述 | 版本 |
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 | 通過 DingRTC.createMicrophoneAudioTrack / DingRTC.createCameraTrack 或其他方法創建的本地 Track 對象。 |
返回
Promise<void>
setRemoteDefaultVideoStreamType()
設置訂閱所有遠端用戶的視頻類型。
如果遠端用戶開啟了雙流模式,本地用戶調用 subscribe 后會直接訂閱本方法中 streamType 參數所指定的流類型。如不設置,默認訂閱大流
類型簽名
setRemoteDefaultVideoStreamType(streamType: RemoteStreamType): void;
參數 | 類型 | 描述 |
streamType | 訂閱的視頻流類型,high 代表大流,low 代表小流 |
返回
void
setRemoteVideoStreamType()
設置訂閱特定遠端用戶的視頻類型。
類型簽名
setRemoteVideoStreamType(uid: string, streamType: RemoteStreamType): Promise<void>;
參數 | 類型 | 描述 |
uid | string | 遠端用戶的 ID。 |
streamType | 訂閱的視頻流類型,high 代表大流,low 代表小流 |
返回
Promise<void>
subscribe()
訂閱遠端用戶的音視頻軌道。
類型簽名
subscribe(uid: string, mediaType: TrackMediaType, auxiliary?: boolean): Promise<RemoteAudioTrack | RemoteVideoTrack>;
參數 | 類型 | 描述 |
uid | string | 遠端用戶id |
mediaType | 訂閱的軌道媒體類型 | |
auxiliary | boolean | (Optional)如果訂閱視頻軌道,是否是訂閱桌面共享視頻流 |
返回
Promise<RemoteAudioTrack|RemoteVideoTrack>
batchSubscribe()
批量訂閱遠端用戶的音視頻軌道。
類型簽名
batchSubscribe(batchSubscribeParam: SubscribeParam[]): Promise<SubscribeResult[]>;
參數 | 類型 | 描述 |
batchSubscribeParam | 訂閱遠端音視頻軌道參數 |
返回
Promise<SubscribeResult[]>
當前還未支持指定到個人的音頻訂閱,請需要訂閱音頻時將userId 置為字符串'mcu',代表訂閱的是頻道內遠端用戶合流后的音頻,音頻合流全局只需訂閱一次,當遠端有新用戶發布音頻流時會自動合入已訂閱的mc音頻流內。
unpublish()
取消發布本地音視頻軌道。
取消發布音視頻軌道之后,遠端會觸發 "user-unpublished" 回調。
類型簽名
unpublish(tracks?: LocalTrack | LocalTrack[]): Promise<void>;
參數 | 類型 | 描述 |
tracks | (Optional)要取消發布的軌道。如果留空,會將所有發布過的音視頻軌道取消發布。 |
返回
Promise<void>
unsubscribe()
取消訂閱遠端用戶的音視頻軌道。
類型簽名
unsubscribe(uid: string, mediaType?: TrackMediaType, auxiliary?: boolean): Promise<void>;
參數 | 類型 | 描述 |
uid | string | 遠端用戶id。 |
mediaType | (Optional)取消訂閱的軌道媒體類型。 | |
auxiliary | boolean | (Optional)如果是訂閱視頻軌道,是否是訂閱桌面共享視頻流 |
返回
Promise<void>
batchUnsubscribe()
批量訂閱遠端用戶的音視頻軌道。
類型簽名
batchSubscribe(batchUnsubscribeParam: UnsubscribeParam[]): Promise<void>;
參數 | 類型 | 描述 |
batchUnsubscribeParam | 取消訂閱遠端音視頻軌道參數 |
返回
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 | 加入音頻分組時的配置項 |
返回
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 |
在已訂閱mcu音頻時不可訂閱音頻分組,需先取消mcu音頻的訂閱方可訂閱指定音頻分組;
僅能訂閱已加入的音頻分組;
同時僅能訂閱一個音頻分組;
返回
Promise<RemoteAudioTrack>
unsubscribeGroup()
解散指定音頻分組
類型簽名
unsubscribeGroup(groupId: string): Promise<void>;
參數
參數 | 類型 | 描述 |
groupId | string | 音頻分組Id |
返回
Promise<void>
mixAudioToGroup()
將指定音頻軌道混音/取消混音到對應分組或頻道
類型簽名
mixAudioToGroup(track: LocalAudioTrack, mixed: boolean, groupId?: string): Promise<void>;
參數
參數 | 類型 | 描述 |
track | 本地音頻軌道 | |
mixed | boolean | true混音,false取消混音 |
groupId | string | 將要發布的音頻分組Id |
音頻分組Id未填寫時將會把音頻軌道發布到主頻道;
支持同時發布音頻軌道到頻道與多個分組;
返回
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;