aliyun-rtc-sdk 6.11.5-beta.5 → 6.11.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/aliyun-rtc-sdk.js +129 -0
- package/dist/plugins/beautyPlugin.d.ts +208 -0
- package/dist/plugins/beautyPlugin.js +1 -0
- package/dist/types/index.d.ts +3749 -0
- package/package.json +2 -2
|
@@ -0,0 +1,3749 @@
|
|
|
1
|
+
/// <reference types="dom-mediacapture-transform" />
|
|
2
|
+
|
|
3
|
+
import { default as default_2 } from 'eventemitter3';
|
|
4
|
+
import { IAudioConstraints } from 'media-device';
|
|
5
|
+
import { IProfile } from 'aliyun-rts-sdk';
|
|
6
|
+
import { IStreamConfig } from 'aliyun-rts-sdk';
|
|
7
|
+
import { IVideoConstraints } from 'media-device';
|
|
8
|
+
import { LocalStream } from 'aliyun-rts-sdk';
|
|
9
|
+
import { LogReporter } from 'browser-log-reporter';
|
|
10
|
+
import { RemoteStream } from 'aliyun-rts-sdk';
|
|
11
|
+
|
|
12
|
+
declare interface AliEngineCameraCapturerConfiguration {
|
|
13
|
+
width?: number;
|
|
14
|
+
height?: number;
|
|
15
|
+
frameRate?: number;
|
|
16
|
+
bitrate?: number;
|
|
17
|
+
cameraDirection?: AliRtcCameraDirection;
|
|
18
|
+
deviceId?: string;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
declare enum AliRtcAudioTrack {
|
|
22
|
+
/** 无麦克风 */
|
|
23
|
+
AliRtcAudioTrackNo = 0,
|
|
24
|
+
/** 麦克风 */
|
|
25
|
+
AliRtcAudioTrackMic = 1,
|
|
26
|
+
/** 第二音频流 */
|
|
27
|
+
AliRtcAudioTrackDual = 2
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export declare interface AliRtcAuthInfo {
|
|
31
|
+
/** 频道ID */
|
|
32
|
+
channelId: string;
|
|
33
|
+
/** 用户ID */
|
|
34
|
+
userId: string;
|
|
35
|
+
/** 应用ID */
|
|
36
|
+
appId: string;
|
|
37
|
+
/** 随机串 */
|
|
38
|
+
nonce?: string;
|
|
39
|
+
/** 时间戳 */
|
|
40
|
+
timestamp: number;
|
|
41
|
+
/** 令牌 */
|
|
42
|
+
token: string;
|
|
43
|
+
/** 会议id */
|
|
44
|
+
callid?: string;
|
|
45
|
+
/** 角色鉴权值 */
|
|
46
|
+
role?: AliRtcSdkTokenRole;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
declare interface AliRtcBeautyConfig {
|
|
50
|
+
whiteningLevel: number;
|
|
51
|
+
/*! 磨皮等级[0-1.0] */
|
|
52
|
+
smoothnessLevel: number;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
declare enum AliRtcCameraDirection {
|
|
56
|
+
/** 无效 */
|
|
57
|
+
CAMERA_INVALID = -1,
|
|
58
|
+
/** 后置 */
|
|
59
|
+
CAMERA_REAR = 0,
|
|
60
|
+
/** 前置 */
|
|
61
|
+
CAMERA_FRONT = 1
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
declare interface AliRtcCheckResult {
|
|
65
|
+
support: boolean;
|
|
66
|
+
detail: {
|
|
67
|
+
isWebRTCSupported: boolean;
|
|
68
|
+
isH264EncodeSupported: boolean;
|
|
69
|
+
isH264DecodeSupported: boolean;
|
|
70
|
+
isBrowserSupported: boolean;
|
|
71
|
+
isScreenShareSupported: boolean;
|
|
72
|
+
isSendMediaExtensionMsgSupported: boolean;
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export declare enum AliRtcConnectionStatus {
|
|
77
|
+
/** 初始化完成 */
|
|
78
|
+
AliRtcConnectionStatusInit = 0,
|
|
79
|
+
/** 网络连接断开 */
|
|
80
|
+
AliRtcConnectionStatusDisconnected = 1,
|
|
81
|
+
/** 建立网络连接中 */
|
|
82
|
+
AliRtcConnectionStatusConnecting = 2,
|
|
83
|
+
/** 网络已连接 */
|
|
84
|
+
AliRtcConnectionStatusConnected = 3,
|
|
85
|
+
/** 重新建立网络连接中 */
|
|
86
|
+
AliRtcConnectionStatusReconnecting = 4,
|
|
87
|
+
/** 网络连接失败 */
|
|
88
|
+
AliRtcConnectionStatusFailed = 5
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export declare enum AliRtcConnectionStatusChangeReason {
|
|
92
|
+
/** 未知原因 */
|
|
93
|
+
AliRtcConnectionChangedDummyReason = 0,
|
|
94
|
+
/** 媒体通道变更 */
|
|
95
|
+
AliRtcConnectionMediaPathChanged = 1,
|
|
96
|
+
/** 心跳超时 */
|
|
97
|
+
AliRtcConnectionSignalingHeartbeatTimeout = 2,
|
|
98
|
+
/** 心跳恢复 */
|
|
99
|
+
AliRtcConnectionSignalingHeartbeatAlive = 3,
|
|
100
|
+
/** DNS解析成功 */
|
|
101
|
+
AliRtcConnectionSignalingHttpDnsResolved = 4,
|
|
102
|
+
/** DNS解析失败 */
|
|
103
|
+
AliRtcConnectionSignalingHttpDnsFailure = 5,
|
|
104
|
+
/** GSLB请求失败 */
|
|
105
|
+
AliRtcConnectionSignalingGslbFailure = 6,
|
|
106
|
+
/** GSLB请求成功 */
|
|
107
|
+
AliRtcConnectionSignalingGslbSuccess = 7,
|
|
108
|
+
/** 加入频道失败 */
|
|
109
|
+
AliRtcConnectionSignalingJoinRoomFailure = 8,
|
|
110
|
+
/** 加入频道成功 */
|
|
111
|
+
AliRtcConnectionSignalingJoinRoomSuccess = 9,
|
|
112
|
+
/** 离开频道 */
|
|
113
|
+
AliRtcConnectionSignalingLeaveRoom = 10,
|
|
114
|
+
/** 信令建立连接 */
|
|
115
|
+
AliRtcConnectionSignalingConnecting = 11,
|
|
116
|
+
/** 网络连接中断 */
|
|
117
|
+
AliRtcConnectionChangedNetworkInterrupted = 12
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
declare type AliRtcDualVideoPluginOptions = VideoScalerOptions;
|
|
121
|
+
|
|
122
|
+
export declare class AliRtcEngine extends default_2<AliRtcEngineEventListener> {
|
|
123
|
+
/**
|
|
124
|
+
* @ignore
|
|
125
|
+
*/
|
|
126
|
+
static logName: string;
|
|
127
|
+
/**
|
|
128
|
+
* 检查浏览器是否支持 WebRTC
|
|
129
|
+
* @param {string} direction
|
|
130
|
+
* @returns {Promise<AliRtcCheckResult>}
|
|
131
|
+
*/
|
|
132
|
+
static isSupported: (direction?: "sendonly" | "recvonly" | "sendrecv" | undefined) => Promise<AliRtcCheckResult>;
|
|
133
|
+
/**
|
|
134
|
+
* 检查浏览器是否支持开启大小流
|
|
135
|
+
* @returns {boolean}
|
|
136
|
+
*/
|
|
137
|
+
static isDualVideoStreamSupported: typeof VideoScalerFactory.isSupport;
|
|
138
|
+
/**
|
|
139
|
+
* 获取摄像头列表
|
|
140
|
+
* @returns {Promise<string[]>}
|
|
141
|
+
*/
|
|
142
|
+
static getCameraList: () => Promise<MediaDeviceInfo[]>;
|
|
143
|
+
static getMicrophoneList: () => Promise<MediaDeviceInfo[]>;
|
|
144
|
+
static getSpeakerList: () => Promise<MediaDeviceInfo[]>;
|
|
145
|
+
static getSdkVersion(): string;
|
|
146
|
+
/**
|
|
147
|
+
* 设置日志等级
|
|
148
|
+
* @param level
|
|
149
|
+
*/
|
|
150
|
+
static setLogLevel(level: AliRtcLogLevel): void;
|
|
151
|
+
private static _instance?;
|
|
152
|
+
/**
|
|
153
|
+
* @brief 获取AliRtcEngine实例
|
|
154
|
+
* @param key key 可选参与,用于创建多个实例
|
|
155
|
+
* @details 该方法为同步调用,以单例的形式提供对象创建。
|
|
156
|
+
*/
|
|
157
|
+
static getInstance(config?: AliRtcEngineConfig): AliRtcEngine;
|
|
158
|
+
static AliRtcSdkChannelProfile: typeof AliRtcSdkChannelProfile;
|
|
159
|
+
static AliRtcSdkClientRole: typeof AliRtcSdkClientRole;
|
|
160
|
+
static AliRtcVideoStreamType: typeof AliRtcVideoStreamType;
|
|
161
|
+
static AliRtcVideoTrack: typeof AliRtcVideoTrack;
|
|
162
|
+
static AliRtcAudioTrack: typeof AliRtcAudioTrack;
|
|
163
|
+
static AliRtcPublishState: typeof AliRtcPublishState;
|
|
164
|
+
static AliRtcSubscribeState: typeof AliRtcSubscribeState;
|
|
165
|
+
static AliRtcRawDataStreamType: typeof AliRtcRawDataStreamType;
|
|
166
|
+
static AliRtcLogLevel: typeof AliRtcLogLevel;
|
|
167
|
+
static AliRtcEngineLocalDeviceType: typeof AliRtcEngineLocalDeviceType;
|
|
168
|
+
static AliRtcEngineLocalDeviceExceptionType: typeof AliRtcEngineLocalDeviceExceptionType;
|
|
169
|
+
static AliRtcConnectionStatus: typeof AliRtcConnectionStatus;
|
|
170
|
+
static AliRtcConnectionStatusChangeReason: typeof AliRtcConnectionStatusChangeReason;
|
|
171
|
+
static AliRtcPlugin: typeof AliRtcPlugin;
|
|
172
|
+
static AliRtcPluginTrackType: typeof AliRtcPluginTrackType;
|
|
173
|
+
static AliRtcLiveTranscodingParam: typeof AliRtcLiveTranscodingParam;
|
|
174
|
+
static AliRtcLiveTranscodingEncodeParam: typeof AliRtcLiveTranscodingEncodeParam;
|
|
175
|
+
static AliRtcLiveTranscodingMixParam: typeof AliRtcLiveTranscodingMixParam;
|
|
176
|
+
static AliRtcLiveTranscodingSingleParam: typeof AliRtcLiveTranscodingSingleParam;
|
|
177
|
+
static AliRtcTranscodingClockWidget: typeof AliRtcTranscodingClockWidget;
|
|
178
|
+
static AliRtcTranscodingImage: typeof AliRtcTranscodingImage;
|
|
179
|
+
static AliRtcTranscodingText: typeof AliRtcTranscodingText;
|
|
180
|
+
static AliRtcTranscodingUser: typeof AliRtcTranscodingUser;
|
|
181
|
+
static AliRtcLiveTranscodingMixMode: typeof AliRtcLiveTranscodingMixMode;
|
|
182
|
+
static AliRtcLiveTranscodingStreamType: typeof AliRtcLiveTranscodingStreamType;
|
|
183
|
+
static AliRtcLiveTranscodingSourceType: typeof AliRtcLiveTranscodingSourceType;
|
|
184
|
+
static AliRtcLiveTranscodingTaskProfile: typeof AliRtcLiveTranscodingTaskProfile;
|
|
185
|
+
static AliRtcLiveTranscodingAudioSampleRate: typeof AliRtcLiveTranscodingAudioSampleRate;
|
|
186
|
+
static AliRtcLiveTranscodingSegmentType: typeof AliRtcLiveTranscodingSegmentType;
|
|
187
|
+
static AliRtcLiveTranscodingFontType: typeof AliRtcLiveTranscodingFontType;
|
|
188
|
+
static AliRtcLiveTranscodingCropMode: typeof AliRtcLiveTranscodingCropMode;
|
|
189
|
+
static AliRtcLiveTranscodingMediaProcessMode: typeof AliRtcLiveTranscodingMediaProcessMode;
|
|
190
|
+
static AliRtcLiveTranscodingState: typeof AliRtcLiveTranscodingState;
|
|
191
|
+
static AliRtcLiveTranscodingErrorCode: typeof AliRtcLiveTranscodingErrorCode;
|
|
192
|
+
static AliRtcTrascodingPublishTaskStatus: typeof AliRtcTrascodingPublishTaskStatus;
|
|
193
|
+
/**
|
|
194
|
+
* @brief 销毁 {@link AliRtcEngine}实例
|
|
195
|
+
* @details 调用该方法将会释放所有内部使用的资源,当完成音视频通信之后都建议调用该方法释放实例.调用该方法后,你将不能再使用 {@link AliRtcEngine} 的其他方法和任何回调,如需要再次使用需要重新调用 {@link AliRtcEngine.getInstance} 方法创建一个新的实例。
|
|
196
|
+
* @note 该方法为同步调用,需要等待内部资源释放之后才能执行其他方法
|
|
197
|
+
*/
|
|
198
|
+
destroy(): void;
|
|
199
|
+
protected channelProfile: AliRtcSdkChannelProfile;
|
|
200
|
+
protected clientRole: AliRtcSdkClientRole;
|
|
201
|
+
protected signalingManager: SignalingManager;
|
|
202
|
+
protected userManager: UserManager;
|
|
203
|
+
protected liveTranscoding: AliRtcLiveTranscoding;
|
|
204
|
+
protected maxSignalingConnectRetryCount?: number;
|
|
205
|
+
protected reporter: Reporter;
|
|
206
|
+
protected webTrackingClient: WebTrackingClient;
|
|
207
|
+
protected connectState: AliRtcConnectionStatus;
|
|
208
|
+
protected networkError: boolean;
|
|
209
|
+
private audioMixerPlugin;
|
|
210
|
+
private dualVideoPlugin;
|
|
211
|
+
private _audioOnlyMode;
|
|
212
|
+
private _authInfoWillExpireTimer;
|
|
213
|
+
private _authInfoExpiredTimer;
|
|
214
|
+
private _serverCheckAuthInfoTimestamp;
|
|
215
|
+
private _localCheckAuthInfoTimestamp;
|
|
216
|
+
constructor(config?: AliRtcEngineConfig);
|
|
217
|
+
/**
|
|
218
|
+
* 获取当前频道号,已经入会成功返回频道号,否则返回undefined
|
|
219
|
+
*/
|
|
220
|
+
get channel(): string | undefined;
|
|
221
|
+
/**
|
|
222
|
+
* 获取当前用户的 userId,已经入会成功返回自己的 userId,否则返回 undefined
|
|
223
|
+
*/
|
|
224
|
+
get userId(): string | undefined;
|
|
225
|
+
get remoteUsers(): RemoteUser[];
|
|
226
|
+
get publisher(): LocalUser | undefined;
|
|
227
|
+
get publishAudioStream(): LocalStream | undefined;
|
|
228
|
+
get isPublishing(): boolean;
|
|
229
|
+
private get currentRoleCanPublish();
|
|
230
|
+
/**
|
|
231
|
+
* 重置 client 状态
|
|
232
|
+
* @returns {Promise<void>}
|
|
233
|
+
*/
|
|
234
|
+
protected resetState(): Promise<void>;
|
|
235
|
+
/**
|
|
236
|
+
* 停止推流,底层调用 rts publishStop,不会导致 DC 马上关闭。适合暂时停推的场景
|
|
237
|
+
* @param {StopPublishOptions} options
|
|
238
|
+
* @returns {Promise<void>}
|
|
239
|
+
*/
|
|
240
|
+
private stopPublish;
|
|
241
|
+
/**
|
|
242
|
+
* 监听 Publisher 事件
|
|
243
|
+
*/
|
|
244
|
+
private addPublisherListeners;
|
|
245
|
+
/**
|
|
246
|
+
* 监听 UM 事件
|
|
247
|
+
*/
|
|
248
|
+
private addUserManagerListeners;
|
|
249
|
+
/**
|
|
250
|
+
* 添加信令处理
|
|
251
|
+
* @returns {void}
|
|
252
|
+
*/
|
|
253
|
+
private addSignalingManagerListeners;
|
|
254
|
+
private backToUnpublishStatus;
|
|
255
|
+
/**
|
|
256
|
+
* 处理入会远程的用户
|
|
257
|
+
* @param {JoinInfo[]} users
|
|
258
|
+
* @returns {void}
|
|
259
|
+
*/
|
|
260
|
+
private handleUsersJoin;
|
|
261
|
+
/**
|
|
262
|
+
* 本地用户设备状态变化,通过信令发送给其他人
|
|
263
|
+
* @param {string} status
|
|
264
|
+
* @returns {void}
|
|
265
|
+
*/
|
|
266
|
+
protected onLocalDeviceStatusChange(status: string): void;
|
|
267
|
+
/**
|
|
268
|
+
* 网络恢复后,重推;
|
|
269
|
+
*/
|
|
270
|
+
private resumePublishForNetworkRecovery;
|
|
271
|
+
/**
|
|
272
|
+
* 处理房间信令重连成功/心跳恢复
|
|
273
|
+
* @returns {void}
|
|
274
|
+
*/
|
|
275
|
+
protected onNetworkRecovery(users?: JoinInfo[]): Promise<void>;
|
|
276
|
+
private resumeSubList;
|
|
277
|
+
/**
|
|
278
|
+
* 处理网络异常
|
|
279
|
+
* @param {AliRtcError} err
|
|
280
|
+
* @returns {void}
|
|
281
|
+
*/
|
|
282
|
+
protected onNetworkError(): void;
|
|
283
|
+
/**
|
|
284
|
+
* 处理错误
|
|
285
|
+
* @param {AliRtcError} err
|
|
286
|
+
* @returns {void}
|
|
287
|
+
*/
|
|
288
|
+
protected onError(err: AliRtcError): void;
|
|
289
|
+
/**
|
|
290
|
+
* 是否开启大小流
|
|
291
|
+
* @param {boolean} enabled
|
|
292
|
+
* @param {AliRtcDualVideoPluginOptions} [options]
|
|
293
|
+
*/
|
|
294
|
+
setEnableDualVideoStream(enabled: boolean, options?: AliRtcDualVideoPluginOptions): void;
|
|
295
|
+
/**
|
|
296
|
+
* 对本地流的操作预检查
|
|
297
|
+
*/
|
|
298
|
+
private hadPushStream;
|
|
299
|
+
/**
|
|
300
|
+
* 获取当前使用的麦克风 deviceId
|
|
301
|
+
* @returns {string | undefined}
|
|
302
|
+
*/
|
|
303
|
+
getCurrentMicDeviceId(): string | undefined;
|
|
304
|
+
/**
|
|
305
|
+
* 设置频道模式
|
|
306
|
+
* @param {AliRtcSdkChannelProfile} channelProfile 频道类型,默认值为 AliEngineCommunication
|
|
307
|
+
* @note 该接口只可以在加入频道之前调用,会议中不可以重新设置,离开频道后可以重新设置
|
|
308
|
+
*/
|
|
309
|
+
setChannelProfile(channelProfile: AliRtcSdkChannelProfile): void;
|
|
310
|
+
/**
|
|
311
|
+
* 设置用户角色
|
|
312
|
+
* @param {AliRtcSdkClientRole} clientRole 用户角色类型,默认值为 {@link AliRtcSdkClientRole.AliRtcSdkLive}(观众角色)
|
|
313
|
+
* @note 非通信模式下角色类型才有效
|
|
314
|
+
*/
|
|
315
|
+
setClientRole(clientRole: AliRtcSdkClientRole): Promise<void>;
|
|
316
|
+
/**
|
|
317
|
+
* 获取用户角色
|
|
318
|
+
* @returns {AliRtcSdkClientRole}
|
|
319
|
+
*/
|
|
320
|
+
getCurrentClientRole(): AliRtcSdkClientRole;
|
|
321
|
+
/**
|
|
322
|
+
* 是否开启纯音频模式
|
|
323
|
+
* @param {boolean} audioOnly
|
|
324
|
+
* - true:只有音频推流和拉流
|
|
325
|
+
* - false(默认值):音视频都支持
|
|
326
|
+
* @note 只可以在 {@link joinChannel} 之前设置
|
|
327
|
+
*/
|
|
328
|
+
setAudioOnlyMode(audioOnly: boolean): void;
|
|
329
|
+
setAudioRedEnabled(audioRedEnabled: boolean): void;
|
|
330
|
+
/**
|
|
331
|
+
* 设定鉴权信息过期事件定时器
|
|
332
|
+
* @param expireTimestamp 鉴权信息过期时间
|
|
333
|
+
* @param serverTimestamp 入会时服务端时间
|
|
334
|
+
*/
|
|
335
|
+
private setCheckAuthInfoTimer;
|
|
336
|
+
/**
|
|
337
|
+
* 清除鉴权信息过期事件定时器
|
|
338
|
+
*/
|
|
339
|
+
private clearCheckAuthInfoTimer;
|
|
340
|
+
private startDefaultDevicesCapture;
|
|
341
|
+
/**
|
|
342
|
+
* @brief 加入频道
|
|
343
|
+
* @details 该方法让用户加入频道,一个频道内可以加入多个用户进行互相通话。
|
|
344
|
+
* @details 一般在调用该方法前会根据场景先选择频道模式,通过调用 {@link setChannelProfile} 实现,默认频道模式为通信模式 {@link AliRtcSdkChannelProfile.AliRtcSdkCommunication}
|
|
345
|
+
* ``` javascript
|
|
346
|
+
* // 设置频道为互动模式
|
|
347
|
+
* engine.setChannelProfile(AliRtcSdkChannelProfile.AliRtcInteractivelive);
|
|
348
|
+
* // 设置角色为主播角色
|
|
349
|
+
* engine.setClientRole(AliRtcSdkClientRole.AliRtcSdkInteractive);
|
|
350
|
+
* ```
|
|
351
|
+
* @param {AliRtcAuthInfo} authInfo 认证信息,从App Server获取。
|
|
352
|
+
* @param {string} userName 任意用于显示的用户名称。不是User ID
|
|
353
|
+
* @note
|
|
354
|
+
* - 异步接口,方法执行成功则为成功入会
|
|
355
|
+
* - 正常情况一个Appid对应一个App,只有同一个AppId的应用可进行互相童话,不同AppId和channelID不同都不能互通
|
|
356
|
+
* - 当入会成功后,会触发远端用户收到 {@link AliRtcEngineEventListener.remoteUserOnLineNotify} 回调
|
|
357
|
+
* - 如果已在会中想重新入会,需要先调用 {@link leaveChannel} 离会,且确保方法执行成功
|
|
358
|
+
* - 用户加入频道后,默认订阅频道内所有其他用户的音视频流,默认推送音视频流到远端,因此将会产生计费,如果想要取消默认订阅可以 {@link joinChannel} 前调用 {@link setDefaultSubscribeAllRemoteAudioStreams} 和 {@link setDefaultSubscribeAllRemoteVideoStreams}
|
|
359
|
+
*/
|
|
360
|
+
joinChannel(authInfo: AliRtcAuthInfo, userName: string): Promise<void>;
|
|
361
|
+
/**
|
|
362
|
+
* 离开频道
|
|
363
|
+
* @param {boolean} bye 是否因为被挤占而离开房间
|
|
364
|
+
* @note 如果当前不在频道内,调用 leaveChannel 不会对实例产生任何影响,但会产生消息,通知频道内其他用户
|
|
365
|
+
*/
|
|
366
|
+
leaveChannel(bye?: boolean): Promise<void>;
|
|
367
|
+
/**
|
|
368
|
+
* 检查当前是否在频道中
|
|
369
|
+
* @returns {boolean}
|
|
370
|
+
* - true:在频道中
|
|
371
|
+
* - false:不在频道中
|
|
372
|
+
*/
|
|
373
|
+
isInCall(): boolean;
|
|
374
|
+
/**
|
|
375
|
+
* 刷新鉴权信息
|
|
376
|
+
* @param {AliRtcRefreshAuthInfo} authInfo
|
|
377
|
+
*/
|
|
378
|
+
refreshAuthInfo(authInfo: AliRtcRefreshAuthInfo): Promise<void>;
|
|
379
|
+
/**
|
|
380
|
+
* 检查当前是否纯音频模式
|
|
381
|
+
* @returns {boolean}
|
|
382
|
+
* - true:纯音频模式
|
|
383
|
+
* - false:音视频模式
|
|
384
|
+
*/
|
|
385
|
+
isAudioOnly(): boolean;
|
|
386
|
+
/**
|
|
387
|
+
* @brief 是否推送音频流
|
|
388
|
+
* @param enabled 是否开启/关闭本地音频流推送
|
|
389
|
+
* - true: 开启音频流推送
|
|
390
|
+
* - false: 关闭音频流推送
|
|
391
|
+
* @note SDK默认设置推送音频流,在加入频道前也可以调用此接口修改默认值,并在加入频道成功时生效
|
|
392
|
+
*/
|
|
393
|
+
publishLocalAudioStream(enabled: boolean): Promise<void>;
|
|
394
|
+
/**
|
|
395
|
+
* @brief 查询是否设置推送音频流
|
|
396
|
+
* @return
|
|
397
|
+
* - true: 已设置推送
|
|
398
|
+
* - false: 未设置推送
|
|
399
|
+
* @note SDK默认设置推送音频流,如果需要取消推送音频流,可以通过 {@link publishLocalAudioStream}方法设置为不推送
|
|
400
|
+
*/
|
|
401
|
+
isLocalAudioStreamPublished(): boolean;
|
|
402
|
+
/**
|
|
403
|
+
* 设置是否默认接收音频流
|
|
404
|
+
* @param sub
|
|
405
|
+
* - true: 接收用户的音频流
|
|
406
|
+
* - false: 停止接收用户的音频流
|
|
407
|
+
* @note 入会前入会后均可调用。如果在加入频道后调用 setDefaultSubscribeAllRemoteAudioStreams(false),会接收不到设置后加入频道的用户的音频流。
|
|
408
|
+
* @note 停止接收音频流后,如果想要恢复接收,请调用 {@link subscribeRemoteAudioStream},并指定你想要接收的远端用户ID;
|
|
409
|
+
* @note 如果想恢复接收多个用户的音频流,则需要多次调用 {@link subscribeRemoteAudioStream}。setDefaultSubscribeAllRemoteAudioStreams(true) 只能恢复接收后面加入频道的用户的音频流。
|
|
410
|
+
*/
|
|
411
|
+
setDefaultSubscribeAllRemoteAudioStreams(sub: boolean): void;
|
|
412
|
+
/**
|
|
413
|
+
* 停止/恢复接收所有远端音频流
|
|
414
|
+
* @param sub
|
|
415
|
+
* - true: 接收所有用户的音频流
|
|
416
|
+
* - false: 停止接收所有用户的音频流
|
|
417
|
+
* @note 该接口作为订阅远端音频流的总开关,如果设置为false,则不仅当前会议中所有远端音频流都会停止订阅,后续入会的新用户也将不再订阅(即使设置了setDefaultSubscribeAllRemoteAudioStreams(true))
|
|
418
|
+
*/
|
|
419
|
+
subscribeAllRemoteAudioStreams(sub: boolean): void;
|
|
420
|
+
/**
|
|
421
|
+
* 手动拉音频流
|
|
422
|
+
* @param uid uid
|
|
423
|
+
* @param sub,默认为 true
|
|
424
|
+
* - true: 接收指定用户的音频流
|
|
425
|
+
* - false: 停止接收指定用户的音频流
|
|
426
|
+
* @note 如果之前有调用过 subscribeAllRemoteAudioStreams(false) 对所有远端音频进行静音,在调用本 API 之前请确保你已调用 subscribeAllRemoteAudioStreams(true)。
|
|
427
|
+
* @note {@link subscribeAllRemoteAudioStreams} 是全局控制,{@link subscribeRemoteAudioStream} 是精细控制。
|
|
428
|
+
*/
|
|
429
|
+
subscribeRemoteAudioStream(uid: string, sub: boolean): void;
|
|
430
|
+
/**
|
|
431
|
+
* 手动恢复远端用户音频流
|
|
432
|
+
* @param uid
|
|
433
|
+
* 用于在自动播放失败等场景恢复播放
|
|
434
|
+
*/
|
|
435
|
+
resumeRemoteAudioStream(uid: string): void;
|
|
436
|
+
/**
|
|
437
|
+
* @brief 是否推送本地视频流
|
|
438
|
+
* @param enabled 是否开启/关闭本地视频流推送
|
|
439
|
+
* - true: 开启视频流推送
|
|
440
|
+
* - false: 关闭视频流推送
|
|
441
|
+
* @note SDK默认设置推送视频流,在加入频道前也可以调用此接口修改默认值,并在加入频道成功时生效
|
|
442
|
+
*/
|
|
443
|
+
publishLocalVideoStream(enabled: boolean): Promise<void>;
|
|
444
|
+
/**
|
|
445
|
+
* @brief 查询是否设置推送视频流
|
|
446
|
+
* @return
|
|
447
|
+
* - true: 已设置推送
|
|
448
|
+
* - false: 未设置推送
|
|
449
|
+
* @note SDK默认设置推送视频流,如果需要取消推送视频流,可以通过 {@link publishLocalVideoStream} 方法设置为不推送
|
|
450
|
+
*/
|
|
451
|
+
isLocalVideoStreamPublished(): boolean;
|
|
452
|
+
/**
|
|
453
|
+
* 设置默认订阅的相机流格式,大流或小流,会覆盖单人的大小流设置
|
|
454
|
+
* @param {AliRtcVideoStreamType} streamType 流类型
|
|
455
|
+
* @note 仅支持传入 1 (默认大流)、2(默认小流),传入其他无效
|
|
456
|
+
* @note 当无默认类型的相机流,但有另一个,将拉取另一个
|
|
457
|
+
*/
|
|
458
|
+
setRemoteDefaultVideoStreamType(streamType: AliRtcVideoStreamType): void;
|
|
459
|
+
/**
|
|
460
|
+
* 设置某一用户默认订阅的相机流格式,大流或小流
|
|
461
|
+
* @param userId 远端用户ID
|
|
462
|
+
* @param {AliRtcVideoStreamType} streamType 流类型
|
|
463
|
+
* @note 仅支持传入 1 (默认大流)、2(默认小流),传入其他无效
|
|
464
|
+
* @note 当无默认类型的相机流,但有另一个,将拉取另一个
|
|
465
|
+
*/
|
|
466
|
+
setRemoteUserVideoStreamType(userId: string, streamType: AliRtcVideoStreamType): void;
|
|
467
|
+
/**
|
|
468
|
+
* 设置是否默认接收视频流
|
|
469
|
+
* @param sub
|
|
470
|
+
* - true: 接收用户的视频流
|
|
471
|
+
* - false: 不接收用户的视频流
|
|
472
|
+
* @note 入会前入会后均可调用。如果在加入频道后调用 setDefaultSubscribeAllRemoteVideoStreams(false),会接收不到设置后加入频道的用户的视频流。
|
|
473
|
+
* @note 停止接收视频流后,如果想要恢复接收,请调用 {@link subscribeRemoteVideoStream},并指定你想要接收的远端用户ID;
|
|
474
|
+
* @note 如果想恢复接收多个用户的视频流,则需要多次调用 {@link subscribeRemoteVideoStream};setDefaultSubscribeAllRemoteVideoStreams(true) 只能恢复接收后面加入频道的用户的视频流。
|
|
475
|
+
*/
|
|
476
|
+
setDefaultSubscribeAllRemoteVideoStreams(sub: boolean): void;
|
|
477
|
+
/**
|
|
478
|
+
* 停止/恢复接收所有远端视频流
|
|
479
|
+
* @param sub
|
|
480
|
+
* - true: 接收所有用户的视频流
|
|
481
|
+
* - false: 停止接收所有用户的视频流
|
|
482
|
+
* @note 该接口作为订阅远端视频流的总开关,如果设置为false,则不仅当前会议中所有远端视频流都会停止订阅,后续入会的新用户也将不再订阅(即使设置了setDefaultSubscribeAllRemoteVideoStreams(true))
|
|
483
|
+
*/
|
|
484
|
+
subscribeAllRemoteVideoStreams(sub: boolean): void;
|
|
485
|
+
/**
|
|
486
|
+
* 合并订阅远端音视频流
|
|
487
|
+
* @param uid uid
|
|
488
|
+
* @param videoTrack 视频流类型
|
|
489
|
+
* @param subVideo 是否订阅视频
|
|
490
|
+
* @param subAudio 是否订阅音频
|
|
491
|
+
* @return
|
|
492
|
+
*/
|
|
493
|
+
subscribeRemoteMediaStream(uid: string, videoTrack: AliRtcVideoTrack, subVideo: boolean, subAudio: boolean): void;
|
|
494
|
+
/**
|
|
495
|
+
* @brief 手动恢复远端用户视频流
|
|
496
|
+
* @param uid
|
|
497
|
+
* @param videoTrack
|
|
498
|
+
* 用于在自动播放失败等场景恢复播放
|
|
499
|
+
*/
|
|
500
|
+
resumeRemoteMediaStream(uid: string, videoTrack: AliRtcVideoTrack): void;
|
|
501
|
+
/**
|
|
502
|
+
* @brief 订阅目标频道,指定用户的流
|
|
503
|
+
* @param channelId 目标频道
|
|
504
|
+
* @param uid 用户ID,从App server分配的唯一标示符
|
|
505
|
+
* @param track 订阅的视频流类型
|
|
506
|
+
* @param sub_audio 是否订阅远端用户的音频流
|
|
507
|
+
* - true:订阅指定用户的音频流
|
|
508
|
+
* - false:停止订阅指定用户的音频流
|
|
509
|
+
* @param sub 是否订阅远端用户的流
|
|
510
|
+
* - true:订阅指定用户的流
|
|
511
|
+
* - false:停止订阅指定用户的流
|
|
512
|
+
*/
|
|
513
|
+
/**
|
|
514
|
+
* @brief 获取远端在线用户列表
|
|
515
|
+
* @return 当前频道内所有在线用户userid列表
|
|
516
|
+
* @note 若当前频道ChannelProfile设置为 {@link AliRtcSdkChannelProfile.AliRtcSdkInteractiveLive} 模式,只有设置角色为 {@link AliRtcSdkClientRole.AliRtcSdkInteractive} 的用户为在线用户,本方法不返回角色为 {@link AliRtcSdkClientRole.AliRtcSdkLive} 的用户
|
|
517
|
+
*/
|
|
518
|
+
getOnlineRemoteUsers(): string[];
|
|
519
|
+
/**
|
|
520
|
+
* @brief 查询远端用户状态
|
|
521
|
+
* @details 通过 uid 查询指定远端用户的状态信息.
|
|
522
|
+
* @param uid 用户ID。从App server分配的唯一标示符
|
|
523
|
+
* @return 返回一个远端用户对象。详见{@link RemoteUser}
|
|
524
|
+
*/
|
|
525
|
+
getUserInfo(uid: string): AliRtcRemoteUserInfo | undefined;
|
|
526
|
+
/**
|
|
527
|
+
* @brief 查询用户是否在线
|
|
528
|
+
* @param uid 用户ID,从App server分配的唯一标示符。不可为NULL
|
|
529
|
+
* @return
|
|
530
|
+
* - true: 用户在线
|
|
531
|
+
* - false: 用户不在线
|
|
532
|
+
* @note 根据特定的UserID,查询该用户是否在线。
|
|
533
|
+
*/
|
|
534
|
+
isUserOnline(uid: string): boolean;
|
|
535
|
+
/**
|
|
536
|
+
* @brief 开始屏幕共享
|
|
537
|
+
* @param config 开启屏幕共享的配置
|
|
538
|
+
* @note 可以通过 config 选择是否开启音频或使用外部自定义 MediaStream
|
|
539
|
+
* @note 自定义 MediaStream 仅支持一个视频流和一个音频流
|
|
540
|
+
*/
|
|
541
|
+
startScreenShare(config?: AliRtcScreenShareStartConfig): Promise<void>;
|
|
542
|
+
/**
|
|
543
|
+
* @brief 停止屏幕共享
|
|
544
|
+
*/
|
|
545
|
+
stopScreenShare(): Promise<void>;
|
|
546
|
+
/**
|
|
547
|
+
* @brief 设置屏幕流视频编码属性
|
|
548
|
+
* @details 该方法用于设置屏幕流视频编码属性对应的视频参数,如分辨率、帧率、码率、等 所有设置的参数都有相应的范围限制,如果设置的参数不在有效范围内,SDK会自动调节
|
|
549
|
+
* @param config 预定义的屏幕共享编码属性,
|
|
550
|
+
* @note
|
|
551
|
+
* - 该方法在入会前和入会后都可以调用,如果每次入会只需要设置一次屏幕流视频编码属性,建议在入会前调用
|
|
552
|
+
*/
|
|
553
|
+
setScreenShareConfiguration(config: AliRtcScreenShareConfiguration): Promise<void>;
|
|
554
|
+
/**
|
|
555
|
+
* @breif 设置屏幕流采集内容提示
|
|
556
|
+
* @param contentHint 设置屏幕流内容提示,用于提升在不同内容场景下的视频编码质量 [参考文档](https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack/contentHint)
|
|
557
|
+
*/
|
|
558
|
+
setScreenShareContentHint(contentHint: string): Promise<void>;
|
|
559
|
+
/**
|
|
560
|
+
* @brief 是否推送屏幕分享
|
|
561
|
+
* @param enabled 是否开启/关闭本地屏幕分享推送
|
|
562
|
+
* - true: 开启屏幕分享推送
|
|
563
|
+
* - false: 关闭屏幕分享推送
|
|
564
|
+
* @param config 开启屏幕共享的配置
|
|
565
|
+
* @note SDK默认设置推送屏幕分享,在加入频道前也可以调用此接口修改默认值,并在加入频道成功时生效
|
|
566
|
+
*/
|
|
567
|
+
publishLocalScreenShareStream(enabled: boolean, config?: AliRtcScreenShareStartConfig): Promise<void>;
|
|
568
|
+
/**
|
|
569
|
+
* @brief 查询是否设置推送屏幕分享
|
|
570
|
+
* @return
|
|
571
|
+
- true: 已设置推送
|
|
572
|
+
- false: 未设置推送
|
|
573
|
+
* @note SDK默认设置不推送屏幕分享,如果需要推送屏幕共享,可以通过{@link startScreenShare}方法开启屏幕共享推送
|
|
574
|
+
*/
|
|
575
|
+
isScreenSharePublished(): boolean;
|
|
576
|
+
/**
|
|
577
|
+
* @brief 设置共享音频的音量大小
|
|
578
|
+
* @param volume 共享音频音量大小,取值范围[0, 100]
|
|
579
|
+
*/
|
|
580
|
+
setAudioShareVolume(volume: number): void;
|
|
581
|
+
/**
|
|
582
|
+
* 开启音量检测功能
|
|
583
|
+
* @param {number} interval 检测间隔,单位: ms
|
|
584
|
+
* @note 建议设置为300ms~500ms,取值 ≤0 表示不启用音量检测功能
|
|
585
|
+
*/
|
|
586
|
+
enableAudioVolumeIndication(interval: number): void;
|
|
587
|
+
/**
|
|
588
|
+
* 停止/恢复本地音频数据发送
|
|
589
|
+
* @param {boolean} mute 停止或恢复本地音频数据发送
|
|
590
|
+
* - true:静音本地音频
|
|
591
|
+
* - false(默认值):取消静音
|
|
592
|
+
*/
|
|
593
|
+
muteLocalMic(mute?: boolean): void;
|
|
594
|
+
/**
|
|
595
|
+
* 停止/恢复远端指定用户的音频流的播放
|
|
596
|
+
* @param {string} uid 用户ID, 从 App server 分配的唯一标示符
|
|
597
|
+
* @param {boolean} mute 停止或恢复远端的音频播放
|
|
598
|
+
* - true:停止播放
|
|
599
|
+
* - false(默认值):恢复播放
|
|
600
|
+
* @note 拉流和解码不受影响,支持 {@link joinChannel} 之前和之后设置
|
|
601
|
+
*/
|
|
602
|
+
muteRemoteAudioPlaying(uid: string, mute?: boolean): void;
|
|
603
|
+
/**
|
|
604
|
+
* 停止/恢复远端的所有音频流的播放
|
|
605
|
+
* @param {boolean} mute 停止或恢复远端的音频播放
|
|
606
|
+
* - true:停止播放
|
|
607
|
+
* - false(默认值):恢复播放
|
|
608
|
+
* @note 拉流和解码不受影响,支持 {@link joinChannel} 之前和之后设置
|
|
609
|
+
*/
|
|
610
|
+
muteAllRemoteAudioPlaying(mute?: boolean): void;
|
|
611
|
+
/**
|
|
612
|
+
* @brief 开启音频采集
|
|
613
|
+
* @details 此接口可以控制提前打开音频采集,如果不设置,则SDK会自动控制音频采集设备:
|
|
614
|
+
* - 如果打开推送音频流{@link publishLocalAudioStream},SDK在入会后会打开音频采集
|
|
615
|
+
* - 如果关闭推送音频流{@link publishLocalAudioStream},SDK在入会后不会打开音频采集
|
|
616
|
+
* @param {IAudioConstraints} audioConstraints 音频采集参数
|
|
617
|
+
*/
|
|
618
|
+
startAudioCapture(audioConstraints?: IAudioConstraints): Promise<void>;
|
|
619
|
+
/**
|
|
620
|
+
* 关闭音频采集
|
|
621
|
+
* @note 调用此接口后,入会后、离会再入会,采集设备保持关闭状态
|
|
622
|
+
*/
|
|
623
|
+
stopAudioCapture(): void;
|
|
624
|
+
/**
|
|
625
|
+
* 切换麦克风
|
|
626
|
+
* @param {string} deviceId 麦克风设备ID
|
|
627
|
+
* @param {MediaStreamAudioTrack} audioTrack 音频轨道
|
|
628
|
+
* @note 传入 audioTrack 则会使用传入的音频轨道
|
|
629
|
+
*/
|
|
630
|
+
switchMicrophone(deviceId: string, audioTrack?: MediaStreamAudioTrack): Promise<void>;
|
|
631
|
+
/**
|
|
632
|
+
* 设置录音音量
|
|
633
|
+
* @param {VolumeSettings} volumeSettings 录音音量,取值范围[0,100]
|
|
634
|
+
* - 0:静音
|
|
635
|
+
* - <100:减小音量
|
|
636
|
+
* - >100:放大音量
|
|
637
|
+
*/
|
|
638
|
+
setRecordingVolume(volume: number): void;
|
|
639
|
+
/**
|
|
640
|
+
* 设置麦克风 profile
|
|
641
|
+
*
|
|
642
|
+
* @param {AudioProfileKey} profileKey
|
|
643
|
+
* @return {Promise<void>}
|
|
644
|
+
*/
|
|
645
|
+
setAudioProfile(profileKey: AudioProfileKey): Promise<void>;
|
|
646
|
+
/**
|
|
647
|
+
* @brief 获取当前用户或远端用户的音频轨道
|
|
648
|
+
* @param {string} userId 远端用户 userId
|
|
649
|
+
* @return {MediaStreamTrack} 音频轨道
|
|
650
|
+
*
|
|
651
|
+
*/
|
|
652
|
+
getAudioTrack(userId?: string): Promise<MediaStreamTrack | undefined>;
|
|
653
|
+
/**
|
|
654
|
+
* 为本地预览设置渲染元素和视频流
|
|
655
|
+
* @param {AliRtcLocalView} view 渲染元素,null 则为停止显示
|
|
656
|
+
* @param {AliRtcVideoTrack} track 视频流类型
|
|
657
|
+
*/
|
|
658
|
+
setLocalViewConfig(view: AliRtcLocalView, track: AliRtcVideoTrack): Promise<void>;
|
|
659
|
+
/**
|
|
660
|
+
* @brief 采集偏好设置
|
|
661
|
+
* @param cameraCapturerConfiguration 偏好设置
|
|
662
|
+
* - videoProfile: videoProfileKey 或 IProfile
|
|
663
|
+
* - cameraDirection: 设置采集方向,前置或后置摄像头
|
|
664
|
+
* - deviceId: 设置采集相机ID
|
|
665
|
+
*/
|
|
666
|
+
setCameraCapturerConfiguration(cameraCapturerConfiguration: AliEngineCameraCapturerConfiguration): Promise<void>;
|
|
667
|
+
/**
|
|
668
|
+
* @breif 设置摄像头采集内容提示
|
|
669
|
+
* @param contentHint 设置视频内容提示,用于提升在不同内容场景下的视频编码质量 [参考文档](https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack/contentHint)
|
|
670
|
+
*/
|
|
671
|
+
setCameraCapturerContentHint(contentHint: string): Promise<void>;
|
|
672
|
+
/**
|
|
673
|
+
* 禁用或启用摄像头采集
|
|
674
|
+
* @param enabled
|
|
675
|
+
* - true : 启用摄像头采集
|
|
676
|
+
* - false : 禁用摄像头采集
|
|
677
|
+
*/
|
|
678
|
+
enableLocalVideo(enabled?: boolean): Promise<void>;
|
|
679
|
+
/**
|
|
680
|
+
* 是否将停止摄像头流数据发送
|
|
681
|
+
* @param mute
|
|
682
|
+
* - true:停止发送摄像头流数据
|
|
683
|
+
* - false:表示恢复正常
|
|
684
|
+
*/
|
|
685
|
+
muteLocalCamera(mute: boolean): Promise<void>;
|
|
686
|
+
/**
|
|
687
|
+
* 是否将停止屏幕共享流数据发送
|
|
688
|
+
* @param mute
|
|
689
|
+
* - true:停止发送屏幕共享流数据
|
|
690
|
+
* - false:表示恢复正常
|
|
691
|
+
*/
|
|
692
|
+
muteLocalScreen(mute: boolean): Promise<void>;
|
|
693
|
+
/**
|
|
694
|
+
* 设置远端视频显示视图
|
|
695
|
+
* @param {AliRtcLocalView} view 渲染元素
|
|
696
|
+
* @param {AliRtcVideoTrack} track 视频流类型
|
|
697
|
+
* @param {string} uid 用户ID, 从App server分配的唯一标示符
|
|
698
|
+
* @note 支持joinChannel之前和之后切换窗口。如果 view 传入 null,则停止显示
|
|
699
|
+
*/
|
|
700
|
+
setRemoteViewConfig(view: AliRtcLocalView, uid: string, track: AliRtcVideoTrack): void;
|
|
701
|
+
/**
|
|
702
|
+
* 检查camera是否打开
|
|
703
|
+
* @return {boolean}
|
|
704
|
+
* - true: 摄像头已打开
|
|
705
|
+
* - false: 摄像头没有打开
|
|
706
|
+
* @note 该接口用于检查当前camera的状态
|
|
707
|
+
*/
|
|
708
|
+
isCameraOn(): boolean;
|
|
709
|
+
/**
|
|
710
|
+
* 切换摄像头
|
|
711
|
+
* @param {string} deviceId 摄像头设备ID
|
|
712
|
+
* @param {MediaStreamVideoTrack} videoTrack 视频流
|
|
713
|
+
* @note 若不传 deviceId 则前后摄像头切换,传入 videoTrack 则会使用传入的 videoTrack
|
|
714
|
+
*/
|
|
715
|
+
switchCamera(deviceId?: string, videoTrack?: MediaStreamVideoTrack): Promise<void>;
|
|
716
|
+
/**
|
|
717
|
+
* 获取摄像头设备ID
|
|
718
|
+
* @return {string} 摄像头设备ID
|
|
719
|
+
*/
|
|
720
|
+
getCurrentCameraDeviceId(): string | undefined;
|
|
721
|
+
/**
|
|
722
|
+
* @brief 开启摄像头预览
|
|
723
|
+
* @details 开启摄像头预览并自动打开摄像头
|
|
724
|
+
* @note 如果没有调用{@link setLocalViewConfig}设置显示的view,则无法预览,但不影响推流。
|
|
725
|
+
* 可以在{@link joinChannel}之前就开启预览会自动打开摄像头。
|
|
726
|
+
*/
|
|
727
|
+
startPreview(): Promise<void>;
|
|
728
|
+
/**
|
|
729
|
+
* @brief 开启屏幕共享预览
|
|
730
|
+
* @details 开启屏幕共享预览并自动打开屏幕共享
|
|
731
|
+
* @param config 开启屏幕共享的配置
|
|
732
|
+
* @note 如果没有调用{@link setLocalViewConfig}设置显示的view,则无法预览,但不影响推流。
|
|
733
|
+
* 可以在{@link joinChannel}之前就开启预览会自动打开屏幕共享。
|
|
734
|
+
*/
|
|
735
|
+
startPreviewScreen(config?: AliRtcScreenShareStartConfig): Promise<void>;
|
|
736
|
+
/**
|
|
737
|
+
* @brief 停止本地视频预览
|
|
738
|
+
*/
|
|
739
|
+
stopPreview(): Promise<void>;
|
|
740
|
+
/**
|
|
741
|
+
* @brief 停止本地屏幕共享预览
|
|
742
|
+
*/
|
|
743
|
+
stopPreviewScreen(): Promise<void>;
|
|
744
|
+
/**
|
|
745
|
+
* @brief 获取当前用户或远端用户的视频轨道
|
|
746
|
+
* @param {AliRtcVideoTrackConfig} config 视频轨道配置
|
|
747
|
+
* @return {MediaStreamTrack} 视频轨道
|
|
748
|
+
*
|
|
749
|
+
*/
|
|
750
|
+
getVideoTrack(config: AliRtcVideoTrackConfig): Promise<MediaStreamTrack | undefined>;
|
|
751
|
+
/**
|
|
752
|
+
* @brief 开启旁路直播
|
|
753
|
+
* @details SDK提供了开启旁路直播的功能,可以把实时音视频流经过混流、混音处理转为标准直播流并推送至指定CDN供应商
|
|
754
|
+
* @param streamUrl 推流地址
|
|
755
|
+
* @param transcoding 推流所需参数, 详细定义见{@link AliRtcLiveTranscodingParam}
|
|
756
|
+
*/
|
|
757
|
+
startPublishLiveStream(streamUrl: string, transcoding: AliRtcLiveTranscodingParam): Promise<any>;
|
|
758
|
+
/**
|
|
759
|
+
* @brief 更新旁路直播相关参数
|
|
760
|
+
* @details SDK提供了更新旁路直播的功能,用于实时更新旁路直播参数
|
|
761
|
+
* @param streamUrl 推流地址
|
|
762
|
+
* @param transcoding 推流所需参数, 详细定义见{@link AliRtcLiveTranscodingParam}
|
|
763
|
+
*/
|
|
764
|
+
updatePublishLiveStream(streamUrl: string, transcoding: AliRtcLiveTranscodingParam): Promise<any>;
|
|
765
|
+
/**
|
|
766
|
+
* @brief 更新旁路直播相关参数
|
|
767
|
+
* @details SDK提供了更新旁路直播的功能,用于实时更新旁路直播参数
|
|
768
|
+
* @param taskId 任务Id
|
|
769
|
+
* @param transcoding 推流所需参数, 详细定义见{@link AliRtcLiveTranscodingParam}
|
|
770
|
+
* @return
|
|
771
|
+
* - 0 : 成功
|
|
772
|
+
* - 非0 : 失败
|
|
773
|
+
* - ERR_INNER(-1) : SDK内部错误,可能的情况为SDK未初始化或者SDK销毁后调用
|
|
774
|
+
* - 其他 : 返回值参考官网错误码
|
|
775
|
+
*/
|
|
776
|
+
updatePublishLiveStreamWithTaskId(taskId: string, transcoding: AliRtcLiveTranscodingParam): Promise<any>;
|
|
777
|
+
/**
|
|
778
|
+
* @brief 停止旁路直播
|
|
779
|
+
* @details SDK提供了停止旁路直播的功能
|
|
780
|
+
* @param streamUrl 推流地址
|
|
781
|
+
*/
|
|
782
|
+
stopPublishLiveStream(streamUrl: string): Promise<any>;
|
|
783
|
+
/**
|
|
784
|
+
* @brief 停止旁路直播
|
|
785
|
+
* @details SDK提供了停止旁路直播的功能
|
|
786
|
+
* @param taskId 任务Id
|
|
787
|
+
*/
|
|
788
|
+
stopPublishLiveStreamWithTaskId(taskId: string): Promise<any>;
|
|
789
|
+
/**
|
|
790
|
+
* 获取旁路直播状态
|
|
791
|
+
* @param streamUrl 推流地址
|
|
792
|
+
* @return 路直播状态
|
|
793
|
+
*/
|
|
794
|
+
/**
|
|
795
|
+
* @brief 设置是否启用媒体扩展信息
|
|
796
|
+
* @param enabled 是否启用媒体扩展,需要在加入房间之前调用
|
|
797
|
+
*/
|
|
798
|
+
setEnableMediaExtensionMsg(enabled: boolean): void;
|
|
799
|
+
/**
|
|
800
|
+
* @brief 发送媒体扩展信息
|
|
801
|
+
* @details SDK提供了发送和接收媒体扩展信息的功能,接收端参考 {@link AliRtcEngineEventListener.mediaExtensionMsgReceived},使用场景:
|
|
802
|
+
* - 使用媒体扩展信息传递时间戳,计算端到端的网络延迟,或者跟自身其他业务做数据同步
|
|
803
|
+
* - 使用媒体扩展信息传递描述信息。目前可以传递最多 4k Byte数据,可以用来传输少量数据,建议使用Json或者纯字符串;
|
|
804
|
+
* - 内部使用SEI扩展协议来实现;
|
|
805
|
+
*
|
|
806
|
+
* @param message 媒体扩展信息,长度限制为最大4K字节
|
|
807
|
+
* @param repeatCount 重复次数,代表消息冗余度,用于防止网络丢包导致的消息丢失,-1为无限传输
|
|
808
|
+
*
|
|
809
|
+
* @note 启用此能力会增加客户端性能开销,如有需求需要在加入房间之前调用 setEnableMediaExtensionMsg
|
|
810
|
+
* @note 使用媒体扩展信息时需要复用音视频数据通道,因此必须控制自定义消息的发送频率和消息数据长度,使用限制如下:
|
|
811
|
+
* - 每秒最多发送profile条消息,因为sei信息是放到h264/h265流中传输,有视频帧编码才能附加扩展信息;
|
|
812
|
+
* - 为了不影响媒体数据的传输质量,自定义消息体长度限制为4k Byte,可以用来传输少量信息;
|
|
813
|
+
* - sendMediaExtensionMsg函数中repeatCount参数为自定义消息冗余度,若大于1,则会发送多次,
|
|
814
|
+
* - 防止网络丢包导致的消息丢失,此时房间里的其他人也会收到多次相同的消息,需要去重
|
|
815
|
+
* - 发送的自定义消息,在旁路直播时,房间里的订阅者也一样会收到
|
|
816
|
+
* - 同一时间只有一条MediaExtensionMsg在传输,多次调用sendMediaExtensionMsg,新调用的数据会覆盖前一次的数据;
|
|
817
|
+
*/
|
|
818
|
+
sendMediaExtensionMsg(message: ArrayBuffer, repeatCount: number): Promise<void>;
|
|
819
|
+
/**
|
|
820
|
+
* @brief 发送媒体扩展信息
|
|
821
|
+
* @details SDK提供了发送和接收媒体扩展信息的功能,接收端参考 {@link AliRtcEngineEventListener.mediaExtensionMsgReceived},使用场景:
|
|
822
|
+
* - 使用媒体扩展信息传递时间戳,计算端到端的网络延迟,或者跟自身其他业务做数据同步
|
|
823
|
+
* - 使用媒体扩展信息传递描述信息。目前可以传递最多 4k Byte数据,可以用来传输少量数据,建议使用Json或者纯字符串;
|
|
824
|
+
* - 内部使用SEI扩展协议来实现;
|
|
825
|
+
*
|
|
826
|
+
* @param message 媒体扩展信息,长度限制为最大4K字节
|
|
827
|
+
* @param repeatCount 重复次数,代表消息冗余度,用于防止网络丢包导致的消息丢失,-1为无限传输
|
|
828
|
+
* @param payloadType [5, 100..254]范围 payloadType=5等于使用sendMediaExtensionMsg 接口
|
|
829
|
+
*
|
|
830
|
+
* @note 启用此能力会增加客户端性能开销,如有需求需要在加入房间之前调用 setEnableMediaExtensionMsg
|
|
831
|
+
* @note 使用媒体扩展信息时需要复用音视频数据通道,因此必须控制自定义消息的发送频率和消息数据长度,使用限制如下:
|
|
832
|
+
* - 每秒最多发送profile条消息,因为sei信息是放到h264/h265流中传输,有视频帧编码才能附加扩展信息;
|
|
833
|
+
* - 为了不影响媒体数据的传输质量,自定义消息体长度限制为4k Byte,可以用来传输少量信息;
|
|
834
|
+
* - sendMediaExtensionMsg函数中repeatCount参数为自定义消息冗余度,若大于1,则会发送多次,
|
|
835
|
+
* - 防止网络丢包导致的消息丢失,此时房间里的其他人也会收到多次相同的消息,需要去重
|
|
836
|
+
* - 发送的自定义消息,在旁路直播时,房间里的订阅者也一样会收到
|
|
837
|
+
* - 同一时间只有一条MediaExtensionMsg在传输,多次调用sendMediaExtensionMsg,新调用的数据会覆盖前一次的数据;
|
|
838
|
+
*/
|
|
839
|
+
sendMediaExtensionMsgEx(message: ArrayBuffer, repeatCount: number, payloadType: number): Promise<void>;
|
|
840
|
+
static Plugin: typeof AliRtcPlugin;
|
|
841
|
+
/**
|
|
842
|
+
* @brief 开启音视频处理算法插件
|
|
843
|
+
* @details RTC采用插件件形式提供音视频增强及特效能力,可通过[官网组件文档](https://help.aliyun.com/document_detail/261183.html) 进行组件下载,参考插件集成文档集成进RTC引擎;
|
|
844
|
+
* @param plugin 插件库
|
|
845
|
+
* @param option 插件初始化参数值,请阅读插件库接入文档
|
|
846
|
+
* @note
|
|
847
|
+
* - 入会前入会后均可调用;
|
|
848
|
+
* - 如果重复调用会报错;
|
|
849
|
+
*/
|
|
850
|
+
enablePlugin(plugin: AliRtcPlugin, options?: any): void;
|
|
851
|
+
/**
|
|
852
|
+
* @brief 关闭音视频处理算法插件
|
|
853
|
+
* @param name 插件名称,通过 plugin.name 获取
|
|
854
|
+
* @note
|
|
855
|
+
* - 入会前入会后均可调用;
|
|
856
|
+
* - 重复调用返回错误;
|
|
857
|
+
*/
|
|
858
|
+
removePlugin(name: string): void;
|
|
859
|
+
/**
|
|
860
|
+
* @brief 根据插件ID设置插件
|
|
861
|
+
* @param name 插件名称,通过 plugin.name 获取
|
|
862
|
+
* @param option 插件初始化参数值,请阅读插件库接入文档
|
|
863
|
+
*/
|
|
864
|
+
setPluginOption(name: string, option: any): void;
|
|
865
|
+
/**
|
|
866
|
+
* @brief 根据插件ID获取插件内部信息
|
|
867
|
+
* @param name 插件名称,通过 plugin.name 获取
|
|
868
|
+
*/
|
|
869
|
+
getPluginOption(name: string): any;
|
|
870
|
+
/**
|
|
871
|
+
* 美颜功能是否有效
|
|
872
|
+
* @return
|
|
873
|
+
* - true: 美颜功能有效
|
|
874
|
+
* - false: 无效
|
|
875
|
+
*/
|
|
876
|
+
isBeautyAvailable(): boolean;
|
|
877
|
+
/**
|
|
878
|
+
* 美颜功能是否开启
|
|
879
|
+
* @return
|
|
880
|
+
* - true: 美颜功能已开启
|
|
881
|
+
* - false: 已关闭
|
|
882
|
+
*/
|
|
883
|
+
isBeautyEnabled(): boolean;
|
|
884
|
+
/**
|
|
885
|
+
* @brief 开启或关闭美颜功能, 并设置美颜效果参数
|
|
886
|
+
* @param enable
|
|
887
|
+
* - true: 开启美颜功能
|
|
888
|
+
* - false: 关闭美颜功能
|
|
889
|
+
* @param config 美颜效果参数
|
|
890
|
+
*/
|
|
891
|
+
setBeautyEffect(enable: boolean, config: AliRtcBeautyConfig): void;
|
|
892
|
+
/**
|
|
893
|
+
* @brief 开启/关闭虚拟背景替换功能
|
|
894
|
+
* @details 需要集成美颜插件;
|
|
895
|
+
* @param enable 是否开启;
|
|
896
|
+
* @param path 虚拟背景本地图片路径,支持JPG,PNG 格式;
|
|
897
|
+
*
|
|
898
|
+
* @note
|
|
899
|
+
* - 与背景虚化为替换关系,如开启虚拟背景开关后再次开启背景虚化,则只有背景虚化效果;
|
|
900
|
+
*/
|
|
901
|
+
enableBackgroundExchange(enable: boolean, path: string): void;
|
|
902
|
+
/**
|
|
903
|
+
* @brief 开启/关闭虚拟背景虚化功能
|
|
904
|
+
* @details 需要集成美颜插件;
|
|
905
|
+
* 需要集成美颜插件,背景替换与背景虚化不可同时使用,如开启虚拟背景开关后再次开启背景虚化,则只有背景虚化效果;
|
|
906
|
+
* @param enable 是否开启;
|
|
907
|
+
*
|
|
908
|
+
* @note
|
|
909
|
+
* - 与虚拟背景为替换关系,如开启背景虚化开关后再次开启虚拟背景,则只有虚拟背景效果;
|
|
910
|
+
*/
|
|
911
|
+
enableBackgroundBlur(enable: boolean): void;
|
|
912
|
+
}
|
|
913
|
+
|
|
914
|
+
declare interface AliRtcEngineConfig {
|
|
915
|
+
env?: AliRtcEnv;
|
|
916
|
+
webTrack?: boolean | AliRtcWebTrackConfig;
|
|
917
|
+
maxSignalingConnectRetryCount?: number;
|
|
918
|
+
}
|
|
919
|
+
|
|
920
|
+
declare interface AliRtcEngineEventListener {
|
|
921
|
+
/**
|
|
922
|
+
* @brief 网络连接状态改变
|
|
923
|
+
* @param status 连接状态
|
|
924
|
+
* @param reason 连接状态变化原因
|
|
925
|
+
*/
|
|
926
|
+
connectionStatusChange: (status: AliRtcConnectionStatus, reason: AliRtcConnectionStatusChangeReason) => void;
|
|
927
|
+
/**
|
|
928
|
+
* @brief 本地设备异常回调
|
|
929
|
+
* @param deviceType 设备类型, 参考{@link AliRtcEngine.AliRtcEngineLocalDeviceType}
|
|
930
|
+
* @param exceptionType 设备异常类型, 参考{@link AliRtcEngine.AliRtcEngineLocalDeviceExceptionType}
|
|
931
|
+
* @param msg 异常时携带的信息
|
|
932
|
+
* @note 此回调标识了内部无法恢复了设备异常,收到此回调时用户需要检查设备是否可用
|
|
933
|
+
*/
|
|
934
|
+
localDeviceException: (localDeviceType: AliRtcEngineLocalDeviceType, localDeviceExceptionType: AliRtcEngineLocalDeviceExceptionType, description: string) => void;
|
|
935
|
+
/**
|
|
936
|
+
* @brief 用户鉴权信息即将过期通知,收到后30秒鉴权过期
|
|
937
|
+
* @note 该回调在鉴权信息30秒前触发,收到该回调后应该及时更新鉴权信息,参考 {@link AliRtcEngine.refreshAuthInfo}
|
|
938
|
+
*/
|
|
939
|
+
/**
|
|
940
|
+
* 被服务器踢出/会议结束频道的消息
|
|
941
|
+
* @param code 原因参考{@link AliRtcEngine.AliRtcOnByeType}
|
|
942
|
+
*/
|
|
943
|
+
bye: (code: AliRtcOnByeType) => void;
|
|
944
|
+
/**
|
|
945
|
+
* @brief 远端用户(通信模式)/(互动模式,主播角色)加入频道回调
|
|
946
|
+
* @details 该回调在以下场景会被触发
|
|
947
|
+
* - 通信模式:远端用户加入频道会触发该回调,如果当前用户在加入频道前已有其他用户在频道中,当前用户加入频道后也会收到已加入频道用户的回调
|
|
948
|
+
* - 互动模式:
|
|
949
|
+
* - 远端主播角色用户加入频道会触发该回调,如果当前用户在加入频道前已有其他主播在频道中,当前用户加入频道后也会收到已加入频道主播的回调
|
|
950
|
+
* - 远端观众角色调用 {@link AliRtcEngine.setClientRole} 切换为主播角色 {@link AliRtcEngine.AliRtcSdkClientRole.AliRtcSdkInteractive},同时设置了推流时,会触发该回调
|
|
951
|
+
*
|
|
952
|
+
* @param uid 用户ID,从App server分配的唯一标示符
|
|
953
|
+
* @param elapsed 用户加入频道时的耗时
|
|
954
|
+
* @note 互动模式下回调行为
|
|
955
|
+
* - 主播间可以互相收到加入频道回调
|
|
956
|
+
* - 观众可以收到主播加入频道回调
|
|
957
|
+
* - 主播无法收到观众加入频道回调
|
|
958
|
+
*/
|
|
959
|
+
remoteUserOnLineNotify: (uid: string, elapsed: number) => void;
|
|
960
|
+
/**
|
|
961
|
+
* @brief 远端用户(通信模式)/(互动模式,主播角色)离开频道回调
|
|
962
|
+
* @details 该回调在以下场景会被触发
|
|
963
|
+
* - 通信模式:远端用户离开频道会触发该回调
|
|
964
|
+
* - 互动模式:
|
|
965
|
+
* - 远端主播角色 {@link AliRtcEngine.AliRtcSdkClientRole.AliRtcSdkInteractive} 离开频道
|
|
966
|
+
* - 远端主播切换调用 {@link AliRtcEngine.setClientRole} 切换为观众角色 {@link AliRtcEngine.AliRtcSdkClientRole.AliRtcSdkLive},会触发该回调
|
|
967
|
+
* - 通信模式和互动模式主播角色情况下,当长时间收不到远端用户数据,超时掉线时,会触发该回调
|
|
968
|
+
*
|
|
969
|
+
* @param uid 用户ID,从App server分配的唯一标示符
|
|
970
|
+
* @param reason 用户离线的原因,详见 {@link AliRtcEngine.AliRtcUserOfflineReason}
|
|
971
|
+
*/
|
|
972
|
+
remoteUserOffLineNotify: (uid: string, aliRtcUserOfflineReason: AliRtcUserOfflineReason) => void;
|
|
973
|
+
/**
|
|
974
|
+
* @brief 远端用户的音视频流发生变化回调
|
|
975
|
+
* @details 该回调在以下场景会被触发
|
|
976
|
+
* - 当远端用户从未推流变更为推流(包括音频和视频)
|
|
977
|
+
* - 当远端用户从已推流变更为未推流(包括音频和视频)
|
|
978
|
+
* - 互动模式下,调用 {@link AliRtcEngine.setClientRole} 切换为主播角色 {@link AliRtcEngine.AliRtcSdkClientRole.AliRtcSdkInteractive},同时设置了推流时,会触发该回调
|
|
979
|
+
*
|
|
980
|
+
* @param uid 用户ID,从App server分配的唯一标示符
|
|
981
|
+
* @param audioTrack 音频流类型,详见 {@link AliRtcEngine.AliRtcAudioTrack}
|
|
982
|
+
* @param videoTrack 视频流类型,详见 {@link AliRtcEngine.AliRtcVideoTrack}
|
|
983
|
+
* @note 该回调仅在通信模式用户和互动模式下的主播角色才会触发
|
|
984
|
+
*/
|
|
985
|
+
remoteTrackAvailableNotify: (uid: string, aliRtcAudioTrack: AliRtcAudioTrack, aliRtcVideoTrack: AliRtcVideoTrack) => void;
|
|
986
|
+
/**
|
|
987
|
+
* @brief 远端用户静音/取消静音回调
|
|
988
|
+
* @param uid 远端用户ID
|
|
989
|
+
* @param isMute 该用户是否静音
|
|
990
|
+
* - true: 静音
|
|
991
|
+
* - false: 取消静音
|
|
992
|
+
*/
|
|
993
|
+
userAudioMuted: (uid: string, isMute: boolean) => void;
|
|
994
|
+
/**
|
|
995
|
+
* @brief 对端用户发送视频黑帧数据发送通知
|
|
996
|
+
* @param uid 执行muteVideo的用户ID
|
|
997
|
+
* @param isMute
|
|
998
|
+
* - true: 推流黑帧
|
|
999
|
+
* - false: 正常推流
|
|
1000
|
+
* @note 该接口用于对端用户发送视频黑帧数据时的回调
|
|
1001
|
+
*/
|
|
1002
|
+
userVideoMuted: (uid: string, isMute: boolean) => void;
|
|
1003
|
+
/**
|
|
1004
|
+
* @brief 对端用户发送屏幕黑帧数据发送通知
|
|
1005
|
+
* @param uid 执行muteVideo的用户ID
|
|
1006
|
+
* @param isMute
|
|
1007
|
+
* - true: 推流黑帧
|
|
1008
|
+
* - false: 正常推流
|
|
1009
|
+
* @note 该接口用于对端用户发送屏幕黑帧数据时的回调
|
|
1010
|
+
*/
|
|
1011
|
+
userScreenMuted: (uid: string, isMute: boolean) => void;
|
|
1012
|
+
/**
|
|
1013
|
+
* 音量反馈
|
|
1014
|
+
* @param {Array} speakers 用户音量对象数组
|
|
1015
|
+
* @param {string} speaker.userId 用户ID
|
|
1016
|
+
* @param {number} speaker.volume 音量
|
|
1017
|
+
* @note userId 为空字符串时代表是本地麦克风采集的音量
|
|
1018
|
+
*/
|
|
1019
|
+
audioVolume: (speakers: {
|
|
1020
|
+
userId: string;
|
|
1021
|
+
volume: number;
|
|
1022
|
+
}[]) => void;
|
|
1023
|
+
/**
|
|
1024
|
+
* 发布视频流的数据统计
|
|
1025
|
+
* @param aliRtcStats 统计信息
|
|
1026
|
+
*/
|
|
1027
|
+
aliRtcStats: (aliRtcStats: any) => void;
|
|
1028
|
+
/**
|
|
1029
|
+
* 音频推流变更回调
|
|
1030
|
+
* @param track 流标识
|
|
1031
|
+
* @param oldState 之前的推流状态
|
|
1032
|
+
* @param newState 当前的推流状态
|
|
1033
|
+
* @param elapseSinceLastState 状态变更时间间隔(毫秒)
|
|
1034
|
+
* @param channel 当前频道
|
|
1035
|
+
*/
|
|
1036
|
+
audioPublishStateChanged: (oldState: AliRtcPublishState, newState: AliRtcPublishState, elapseSinceLastState: number, channel: string) => void;
|
|
1037
|
+
/**
|
|
1038
|
+
* 音频订阅情况变更回调
|
|
1039
|
+
* @param uid 用户ID
|
|
1040
|
+
* @param oldState 之前的订阅状态
|
|
1041
|
+
* @param newState 当前的订阅状态
|
|
1042
|
+
* @param elapseSinceLastState 状态变更时间间隔(毫秒)
|
|
1043
|
+
* @param channel 当前频道
|
|
1044
|
+
*/
|
|
1045
|
+
audioSubscribeStateChanged: (uid: string, oldState: AliRtcSubscribeState, newState: AliRtcSubscribeState, elapseSinceLastState: number, channel: string) => void;
|
|
1046
|
+
/**
|
|
1047
|
+
* 视频推流变更回调
|
|
1048
|
+
* @param oldState 之前的推流状态
|
|
1049
|
+
* @param newState 当前的推流状态
|
|
1050
|
+
* @param elapseSinceLastState 状态变更时间间隔(毫秒)
|
|
1051
|
+
* @param channel 当前频道
|
|
1052
|
+
*/
|
|
1053
|
+
videoPublishStateChanged: (oldState: AliRtcPublishState, newState: AliRtcPublishState, elapseSinceLastState: number, channel: string) => void;
|
|
1054
|
+
/**
|
|
1055
|
+
* 次要流推流变更回调
|
|
1056
|
+
* @param oldState 之前的推流状态
|
|
1057
|
+
* @param newState 当前的推流状态
|
|
1058
|
+
* @param elapseSinceLastState 状态变更时间间隔(毫秒)
|
|
1059
|
+
* @param channel 当前频道
|
|
1060
|
+
*/
|
|
1061
|
+
dualStreamPublishStateChanged: (oldState: AliRtcPublishState, newState: AliRtcPublishState, elapseSinceLastState: number, channel: string) => void;
|
|
1062
|
+
/**
|
|
1063
|
+
* 屏幕分享推流变更回调
|
|
1064
|
+
* @param oldState 之前的推流状态
|
|
1065
|
+
* @param newState 当前的推流状态
|
|
1066
|
+
* @param elapseSinceLastState 状态变更时间间隔(毫秒)
|
|
1067
|
+
* @param channel 当前频道
|
|
1068
|
+
*/
|
|
1069
|
+
screenSharePublishStateChanged: (oldState: AliRtcPublishState, newState: AliRtcPublishState, elapseSinceLastState: number, channel: string) => void;
|
|
1070
|
+
/**
|
|
1071
|
+
* 相机流订阅情况变更回调
|
|
1072
|
+
* @param uid 用户ID
|
|
1073
|
+
* @param oldState 之前的订阅状态
|
|
1074
|
+
* @param newState 当前的订阅状态
|
|
1075
|
+
* @param elapseSinceLastState 状态变更时间间隔(毫秒)
|
|
1076
|
+
* @param channel 当前频道
|
|
1077
|
+
*/
|
|
1078
|
+
videoSubscribeStateChanged: (uid: string, oldState: AliRtcSubscribeState, newState: AliRtcSubscribeState, elapseSinceLastState: number, channel: string) => void;
|
|
1079
|
+
/**
|
|
1080
|
+
* 大小流订阅情况变更回调
|
|
1081
|
+
* @param uid 用户ID
|
|
1082
|
+
* @param oldStreamType 之前的订阅状态
|
|
1083
|
+
* @param newStreamType 当前的订阅状态
|
|
1084
|
+
* @param elapseSinceLastState 状态变更时间间隔(毫秒)
|
|
1085
|
+
* @param channel 当前频道
|
|
1086
|
+
*/
|
|
1087
|
+
subscribeStreamTypeChanged: (uid: string, oldStreamType: AliRtcVideoStreamType, newStreamType: AliRtcVideoStreamType, elapseSinceLastState: number, channel: string) => void;
|
|
1088
|
+
/**
|
|
1089
|
+
* 屏幕分享流订阅情况变更回调
|
|
1090
|
+
* @param uid 用户ID
|
|
1091
|
+
* @param oldState 之前的订阅状态
|
|
1092
|
+
* @param newState 当前的订阅状态
|
|
1093
|
+
* @param elapseSinceLastState 状态变更时间间隔(毫秒)
|
|
1094
|
+
* @param channel 当前频道
|
|
1095
|
+
*/
|
|
1096
|
+
screenShareSubscribeStateChanged: (uid: string, oldState: AliRtcSubscribeState, newState: AliRtcSubscribeState, elapseSinceLastState: number, channel: string) => void;
|
|
1097
|
+
/**
|
|
1098
|
+
* 收到媒体扩展信息回调
|
|
1099
|
+
* @param uid 用户ID,媒体信息发送用户的ID
|
|
1100
|
+
* @param message 媒体扩展信息
|
|
1101
|
+
* @param payloadType payload类型,sendMediaExtensionMsg返回5,sendMediaExtensionMsgEx发送的会返回具体类型
|
|
1102
|
+
* @note 当一端通过 {@link AliRtcEngine.sendMediaExtensionMsg} 发送信息后,其他端通过该回调接收数据
|
|
1103
|
+
*/
|
|
1104
|
+
mediaExtensionMsgReceived: (uid: string, message: ArrayBuffer, payloadType: number) => void;
|
|
1105
|
+
/**
|
|
1106
|
+
* @brief 用户鉴权信息即将过期通知,收到后30秒鉴权过期
|
|
1107
|
+
* @note 该回调在鉴权信息30秒前触发,收到该回调后应该及时更新鉴权信息,参考 {@link AliRtcEngine.refreshAuthInfo:}
|
|
1108
|
+
*/
|
|
1109
|
+
authInfoWillExpire: () => void;
|
|
1110
|
+
/**
|
|
1111
|
+
* @brief 用户调用需要鉴权的接口,服务端返回信息过期
|
|
1112
|
+
* @note 该回调触发代表鉴权信息已过期,想要继续在会中,需要重新入会,参考 {@link AliRtcEngine.joinChannel:name:onResultWithUserId:}
|
|
1113
|
+
*/
|
|
1114
|
+
authInfoExpired: () => {};
|
|
1115
|
+
/**
|
|
1116
|
+
* 远程用户的音频自动播放失败
|
|
1117
|
+
* @param uid
|
|
1118
|
+
* @note 应该在收到该回调时弹出弹窗引导用户点击页面进行播放,用户点击页面后 SDK 会自动尝试播放
|
|
1119
|
+
*/
|
|
1120
|
+
remoteAudioAutoPlayFail: (uid: string) => void;
|
|
1121
|
+
/**
|
|
1122
|
+
* 远程用户的视频自动播放失败
|
|
1123
|
+
* @param uid
|
|
1124
|
+
* @note 应该在收到该回调时弹出弹窗引导用户点击页面进行播放,用户点击页面后 SDK 会自动尝试播放
|
|
1125
|
+
*/
|
|
1126
|
+
remoteVideoAutoPlayFail: (uid: string, videoTrack: AliRtcVideoTrack) => void;
|
|
1127
|
+
/**
|
|
1128
|
+
* 发布视频流的数据统计
|
|
1129
|
+
* @param aliRtcStats 统计信息
|
|
1130
|
+
*/
|
|
1131
|
+
rtcLocalVideoStats: (stats: AliRtcLocalVideoStats[]) => void;
|
|
1132
|
+
/**
|
|
1133
|
+
* 发布音频流的数据统计
|
|
1134
|
+
* @param aliRtcStats 统计信息
|
|
1135
|
+
*/
|
|
1136
|
+
rtcLocalAudioStats: (stats: AliRtcLocalAudioStats[]) => void;
|
|
1137
|
+
/**
|
|
1138
|
+
* 订阅视频流的数据统计
|
|
1139
|
+
* @param aliRtcStats 统计信息
|
|
1140
|
+
*/
|
|
1141
|
+
rtcRemoteVideoStats: (stats: AliRtcRemoteVideoStats[]) => void;
|
|
1142
|
+
/**
|
|
1143
|
+
* 订阅远端音频流的数据统计
|
|
1144
|
+
* @param aliRtcStats 统计信息
|
|
1145
|
+
*/
|
|
1146
|
+
rtcRemoteAudioStats: (stats: AliRtcRemoteAudioStats[]) => void;
|
|
1147
|
+
/**
|
|
1148
|
+
* @brief 错误通知
|
|
1149
|
+
* @details 如果engine出现error,通过这个回调通知app
|
|
1150
|
+
* @param error 错误类型,参考 {@link org::webrtc::alirtcInterface::ErrorCodeEnum}
|
|
1151
|
+
* @param message 错误消息
|
|
1152
|
+
*/
|
|
1153
|
+
onOccurError: (error: AliRtcError) => void;
|
|
1154
|
+
}
|
|
1155
|
+
|
|
1156
|
+
export declare enum AliRtcEngineLocalDeviceExceptionType {
|
|
1157
|
+
/** 未知异常类型 */
|
|
1158
|
+
AliEngineLocalDeviceExceptionTypeUnknown = 0,
|
|
1159
|
+
/** 麦克风打开失败 */
|
|
1160
|
+
AliEngineLocalDeviceExceptionTypeMicOpenFail = 1,
|
|
1161
|
+
/** 麦克风被打断 */
|
|
1162
|
+
AliEngineLocalDeviceExceptionTypeMicInterrupt = 2,
|
|
1163
|
+
/** 麦克风无权限 */
|
|
1164
|
+
AliEngineLocalDeviceExceptionTypeMicAuthFail = 3,
|
|
1165
|
+
/** 无可用麦克风 */
|
|
1166
|
+
AliEngineLocalDeviceExceptionTypeMicNotAvailable = 4,
|
|
1167
|
+
/** 扬声器打开失败 */
|
|
1168
|
+
AliEngineLocalDeviceExceptionTypeSpeakerOpenFail = 5,
|
|
1169
|
+
/** 扬声器被打断 */
|
|
1170
|
+
AliEngineLocalDeviceExceptionTypeSpeakerInterrupt = 6,
|
|
1171
|
+
/** 无可用扬声器 */
|
|
1172
|
+
AliEngineLocalDeviceExceptionTypeSpeakerNotAvailable = 7,
|
|
1173
|
+
/** 音频设备异常 */
|
|
1174
|
+
AliEngineLocalDeviceExceptionTypeAudioDeviceException = 8,
|
|
1175
|
+
/** 摄像头打开失败 */
|
|
1176
|
+
AliEngineLocalDeviceExceptionTypeCameraOpenFail = 9,
|
|
1177
|
+
/** 摄像头被打断 */
|
|
1178
|
+
AliEngineLocalDeviceExceptionTypeCameraInterrupt = 10,
|
|
1179
|
+
/** 摄像头无权限 */
|
|
1180
|
+
AliEngineLocalDeviceExceptionTypeCameraAuthFail = 11,
|
|
1181
|
+
/** 显示设备异常 */
|
|
1182
|
+
AliEngineLocalDeviceExceptionTypeDisplayException = 12,
|
|
1183
|
+
/** 视频设备异常 */
|
|
1184
|
+
AliEngineLocalDeviceExceptionTypeVideoDeviceException = 13
|
|
1185
|
+
}
|
|
1186
|
+
|
|
1187
|
+
export declare enum AliRtcEngineLocalDeviceType {
|
|
1188
|
+
/** 未知设备类型 */
|
|
1189
|
+
AliEngineLocalDeviceTypeUnknown = 0,
|
|
1190
|
+
/** 麦克风设备 */
|
|
1191
|
+
AliEngineLocalDeviceTypeMic = 1,
|
|
1192
|
+
/** 扬声器设备 */
|
|
1193
|
+
AliEngineLocalDeviceTypeSpeaker = 2,
|
|
1194
|
+
/** 音频设备 */
|
|
1195
|
+
AliEngineLocalDeviceTypeAudioDevice = 3,
|
|
1196
|
+
/** 摄像头设备 */
|
|
1197
|
+
AliEngineLocalDeviceTypeCamera = 4,
|
|
1198
|
+
/** 显示设备 */
|
|
1199
|
+
AliEngineLocalDeviceTypeDisplay = 5,
|
|
1200
|
+
/** 视频设备 */
|
|
1201
|
+
AliEngineLocalDeviceTypeVideoDevice = 6
|
|
1202
|
+
}
|
|
1203
|
+
|
|
1204
|
+
declare enum AliRtcEnv {
|
|
1205
|
+
pre = "pre",
|
|
1206
|
+
prod = "prod"
|
|
1207
|
+
}
|
|
1208
|
+
|
|
1209
|
+
declare class AliRtcError extends Error {
|
|
1210
|
+
_code: number;
|
|
1211
|
+
_extra?: any;
|
|
1212
|
+
static fromError(error: any, code?: number, fallbackMessage?: string): AliRtcError;
|
|
1213
|
+
constructor(code: number, message: string, extra?: any);
|
|
1214
|
+
get code(): number;
|
|
1215
|
+
set code(code: number);
|
|
1216
|
+
get reason(): string;
|
|
1217
|
+
get extra(): any;
|
|
1218
|
+
}
|
|
1219
|
+
|
|
1220
|
+
export declare enum AliRtcErrorCode {
|
|
1221
|
+
/****************************************************
|
|
1222
|
+
* 入会错误码
|
|
1223
|
+
****************************************************/
|
|
1224
|
+
/** 已经加入频道 */
|
|
1225
|
+
ERR_JOIN_ALREADY_JOINED = 16843521,
|
|
1226
|
+
/** AppId不存在,请在控制台创建应用 */
|
|
1227
|
+
ERR_JOIN_BAD_APPID = 33620481,
|
|
1228
|
+
/** AppId已失效,请在控制台重新启用应用 */
|
|
1229
|
+
ERR_JOIN_INVALID_APPID = 33620482,
|
|
1230
|
+
/**
|
|
1231
|
+
* 频道不存在,请尝试重新加入频道
|
|
1232
|
+
* 如会议发起者入会后又很快离会,第二个人随后入会,发现会议已经不存在了。
|
|
1233
|
+
*/
|
|
1234
|
+
ERR_JOIN_BAD_CHANNEL = 33620484,
|
|
1235
|
+
/** 频道已经失效(目前频道有效期为48小时),请重新生成频道鉴权令牌(Token) */
|
|
1236
|
+
ERR_JOIN_INVALID_CHANNEL = 33620483,
|
|
1237
|
+
/** Token无效。 请重新生成频道鉴权令牌(Token) */
|
|
1238
|
+
ERR_JOIN_BAD_TOKEN = 33620485,
|
|
1239
|
+
/** 加入频道超时,请检查网络连接是否正常 */
|
|
1240
|
+
ERR_JOIN_TIMEOUT = 16908804,
|
|
1241
|
+
/** 参数错误,{@link AliRtcAuthInfo}中的字段为空或者timestamp<=0,请检查字段是否完整 */
|
|
1242
|
+
ERR_JOIN_ERR_JOIN_BAD_PARAMBAD = 16974081,
|
|
1243
|
+
/** 加入频道失败 */
|
|
1244
|
+
ERR_JOIN_CHANNEL_FAILED = 16974338,
|
|
1245
|
+
/****************************************************
|
|
1246
|
+
* 日志模块错误码
|
|
1247
|
+
****************************************************/
|
|
1248
|
+
/** 日志模块已经初始化 */
|
|
1249
|
+
ERR_LOG_ALREADY_INIT = 16974085,
|
|
1250
|
+
/** 日志模块根路径错误,请检查路径是否存在或路径是否具有写入权限 */
|
|
1251
|
+
ERR_LOG_ROOT_PATH_ERROR = 16974086,
|
|
1252
|
+
/****************************************************
|
|
1253
|
+
* 音频设备错误码
|
|
1254
|
+
****************************************************/
|
|
1255
|
+
/**
|
|
1256
|
+
* 采集设备初始化失败、采集设备媒体服务异常、音频设备被占用。
|
|
1257
|
+
* - Mac端和Windows端查看系统设置中音频设备是否有能量条
|
|
1258
|
+
* - iOS端和Android端确认是否被其他应用占用
|
|
1259
|
+
* - 如果都正常,请重启设备
|
|
1260
|
+
*/
|
|
1261
|
+
ERR_MIC_OPEN_FAIL = 17040388,
|
|
1262
|
+
/**
|
|
1263
|
+
* 播放设备初始化失败、播放设备媒体服务异常、音频设备被占用。
|
|
1264
|
+
* - Mac端和Windows端查看系统设置中音频设备是否有能量条
|
|
1265
|
+
* - iOS端和Android端确认是否被其他应用占用
|
|
1266
|
+
* - 如果都正常,请重启设备
|
|
1267
|
+
*/
|
|
1268
|
+
ERR_SPEAKER_OPEN_FAIL = 17040389,
|
|
1269
|
+
/** 系统性能不足、采集设备媒体服务异常、音频设备被占用。建议重启应用或重启设备 */
|
|
1270
|
+
ERR_MIC_INTERRUPT = 17040390,
|
|
1271
|
+
/** 系统性能不足,播放设备媒体服务异常,音频设备被占用。建议重启应用或重启设备 */
|
|
1272
|
+
ERR_SPEAKER_INTERRUPT = 17040391,
|
|
1273
|
+
/** 麦克风设备未授权,建议去系统设置中,打开麦克风授权,并且重新加入频道 */
|
|
1274
|
+
ERR_MIC_AUTH_FAIL = 17040392,
|
|
1275
|
+
/** 无可用的音频采集设备,检查是否接入了可用的麦克风,并检查系统设置中,该设备是否被禁用 */
|
|
1276
|
+
ERR_MIC_NOT_AVAILABLE = 17040393,
|
|
1277
|
+
/** 无可用的音频播放设备,检查是否接入了可用的扬声器或耳机,并检查系统设置中,该设备是否被禁用 */
|
|
1278
|
+
ERR_SPEAKER_NO_AVAILABLE = 17040400,
|
|
1279
|
+
/****************************************************
|
|
1280
|
+
* 视频设备错误码
|
|
1281
|
+
****************************************************/
|
|
1282
|
+
/** 采集设备初始化失败,检查系统相机是否可用,移动端App是否占用了相机 */
|
|
1283
|
+
ERR_CAMERA_OPEN_FAIL = 17039620,
|
|
1284
|
+
/** 采集过程中出现异常,Mac、Winodows电脑相机采集灯熄灭,设备被强制中断。建议重新加入频道或者重启App */
|
|
1285
|
+
ERR_CAMERA_INTERRUPT = 17039622,
|
|
1286
|
+
/** 渲染设备初始化失败,检查Windows端显卡驱动是否需要升级,移动端手机型号或者Android平板盒子等外设是否支持OpenGL */
|
|
1287
|
+
ERR_VIDEO_DISPLAY_OPEN_FAIL = 17039873,
|
|
1288
|
+
/** 渲染过程中出现异常,系统异常错误导致渲染引擎报错,重新加入频道或者重启App */
|
|
1289
|
+
ERR_VIDEO_DISPLAY_INTERRUPT = 1064992,
|
|
1290
|
+
/****************************************************
|
|
1291
|
+
* 网络错误码
|
|
1292
|
+
****************************************************/
|
|
1293
|
+
/** 媒体通道建立失败,检查网络连接是否正常 */
|
|
1294
|
+
ERR_ICE_CONNECTION_CONNECT_FAIL = 17105409,
|
|
1295
|
+
/** 媒体通道重连失败,检查网络连接是否正常 */
|
|
1296
|
+
ERR_ICE_CONNECTION_RECONNECT_FAI = 17105410,
|
|
1297
|
+
/** 媒体通道mobility失败,应用层需要重走入会流程 */
|
|
1298
|
+
ERR_ICE_CONNECTION_MOBILITY_FAIL = 17105411,
|
|
1299
|
+
/** 信令心跳超时,检查网络连接是否正常 */
|
|
1300
|
+
ERR_ICE_CONNECTION_HEARTBEAT_TIMEOUT = 16908812,
|
|
1301
|
+
/**
|
|
1302
|
+
* 低延时互动直播模式相关错误码
|
|
1303
|
+
*/
|
|
1304
|
+
/** 低延时互动直播信令失败 */
|
|
1305
|
+
ERR_LATENCY_LIVE_COMMUNICATION_FAILED = 17235971,
|
|
1306
|
+
/** 低延时互动直播媒体设置错误 */
|
|
1307
|
+
ERR_LATENCY_LIVE_MEIDASETTING_FAILED = 17235972,
|
|
1308
|
+
/** 低延时互动直播当前房间没有主播推流 */
|
|
1309
|
+
ERR_LATENCY_LIVE_NONE_BROADCASTER = 17235973,
|
|
1310
|
+
/** 低延时互动直播错误,应用层需要重新创建新的SDK实例 */
|
|
1311
|
+
ERR_LATENCY_LIVE_NEED_RESTART = 17235974,
|
|
1312
|
+
/** 低延时互动直播错误,应用层需要稍等一定时间(自定义间隔)重新创建新的SDK实例 */
|
|
1313
|
+
ERR_LATENCY_LIVE_NEED_RESTART_AGAIN_LATER = 17235975,
|
|
1314
|
+
/** 低延迟互动直播服务不可用或者服务降级,客户端应该选择其它方式拉超大方会流,即不从cdn sfu拉流 */
|
|
1315
|
+
ERR_LATENCY_LIVE_SERVICE_UNAVAILABLE = 17235976,
|
|
1316
|
+
/** 低延迟互动直播网络中断错误,销毁当前sdk实例重新创建sdk后重新走订阅流程 */
|
|
1317
|
+
ERR_LATENCY_LIVE_MEDIACONNECTION_INTERRUPTION = 17235977,
|
|
1318
|
+
/****************************************************
|
|
1319
|
+
* 推流相关错误码
|
|
1320
|
+
****************************************************/
|
|
1321
|
+
/** 推流无效 */
|
|
1322
|
+
ERR_SDK_PUBLISH_INVAILD = 16974597,
|
|
1323
|
+
/** 未进入频道推流失败 */
|
|
1324
|
+
ERR_SDK_PUBLISH_NOT_JOIN_CHANNEL = 16843782,
|
|
1325
|
+
/** 推送音频流失败 */
|
|
1326
|
+
ERR_SDK_PUBLISH_AUDIO_STRAM_FAILED = 16843856,
|
|
1327
|
+
/** 推送视频流失败 */
|
|
1328
|
+
ERR_SDK_PUBLISH_VIDEO_STRAM_FAILED = 16843857,
|
|
1329
|
+
/** 推送小流失败 */
|
|
1330
|
+
ERR_SDK_PUBLISH_DUAL_STRAM_FAILED = 16843858,
|
|
1331
|
+
/** 推送屏幕共享失败 */
|
|
1332
|
+
ERR_SDK_PUBLISH_SCEEN_SHARE_FAILED = 16843859,
|
|
1333
|
+
/** 屏幕共享配置错误 */
|
|
1334
|
+
ERR_SDK_PUBLISH_SCREEN_SHARE_CONFIG_ERROR = 16843860,
|
|
1335
|
+
/****************************************************
|
|
1336
|
+
* 订阅相关错误码
|
|
1337
|
+
****************************************************/
|
|
1338
|
+
/** 订阅无效 */
|
|
1339
|
+
ERR_SDK_SUBSCRIBE_INVAILD = 16974852,
|
|
1340
|
+
/** 未进入频道订阅错误 */
|
|
1341
|
+
ERR_SDK_SUBSCRIBE_NOT_JOIN_CHANNEL = 16844112,
|
|
1342
|
+
/** 订阅音频流失败 */
|
|
1343
|
+
ERR_SDK_SUBSCRIBE_AUDIO_STRAM_FAILED = 16844113,
|
|
1344
|
+
/** 订阅视频流失败 */
|
|
1345
|
+
ERR_SDK_SUBSCRIBE_VIDEO_STRAM_FAILED = 16844114,
|
|
1346
|
+
/** 订阅小流失败 */
|
|
1347
|
+
ERR_SDK_SUBSCRIBE_DUAL_STRAM_FAILED = 16844115,
|
|
1348
|
+
/** 订阅屏幕共享失败 */
|
|
1349
|
+
ERR_SDK_SUBSCRIBE_SCREEN_SHARE_FAILED = 16844116,
|
|
1350
|
+
/****************************************************
|
|
1351
|
+
* 其他错误码
|
|
1352
|
+
****************************************************/
|
|
1353
|
+
/** SDK状态错误,建议销毁SDK重新创建实例。 */
|
|
1354
|
+
ERR_SDK_INVALID_STATE = 16974340,
|
|
1355
|
+
/** 参数不匹配 */
|
|
1356
|
+
ERR_INVALID_ARGUMENTS = 16974083,
|
|
1357
|
+
/** Session已经被移除,建议销毁实例之后重新创建实例并加入频道。 */
|
|
1358
|
+
ERR_SESSION_REMOVED = 33620229,
|
|
1359
|
+
/** 互动模式下设置角色错误 */
|
|
1360
|
+
ERR_SDK_UPDATE_ROLE_CHANNEL = 16908801,
|
|
1361
|
+
/** SDK内部错误 */
|
|
1362
|
+
ERR_INNER = -1,
|
|
1363
|
+
/************************************************************************************/
|
|
1364
|
+
/******************************** 旁路直播错误码 start ********************************/
|
|
1365
|
+
/************************************************************************************/
|
|
1366
|
+
/**
|
|
1367
|
+
* MPU任务发布成功
|
|
1368
|
+
*/
|
|
1369
|
+
ERR_SDK_MPU_TASK_PUBLISH_OK = 0,
|
|
1370
|
+
/**
|
|
1371
|
+
* MPU任务流未找到
|
|
1372
|
+
*/
|
|
1373
|
+
ERR_SDK_MPU_TASK_STREAM_NOT_FOUND = 17825793,
|
|
1374
|
+
/**
|
|
1375
|
+
* MPU任务流已存在
|
|
1376
|
+
*/
|
|
1377
|
+
ERR_SDK_MPU_TASK_STREAM_ALREADY_EXIST = 17825794,
|
|
1378
|
+
/**
|
|
1379
|
+
* MPU任务无效参数
|
|
1380
|
+
*/
|
|
1381
|
+
ERR_SDK_MPU_TASK_INVALID_PARAM = 17825795,
|
|
1382
|
+
/**
|
|
1383
|
+
* MPU任务内部错误
|
|
1384
|
+
*/
|
|
1385
|
+
ERR_SDK_MPU_TASK_INTERNAL_ERROR = 17825796,
|
|
1386
|
+
/**
|
|
1387
|
+
* MPU任务rtmp服务错误
|
|
1388
|
+
*/
|
|
1389
|
+
ERR_SDK_MPU_TASK_RTMP_SERVER_ERROR = 17825797,
|
|
1390
|
+
/**
|
|
1391
|
+
* MPU任务rtmp流地址错误
|
|
1392
|
+
*/
|
|
1393
|
+
ERR_SDK_MPU_TASK_RTMP_STREAM_URL_ERROR = 17825798,
|
|
1394
|
+
/**
|
|
1395
|
+
* MPU任务发布超时
|
|
1396
|
+
*/
|
|
1397
|
+
ERR_SDK_MPU_TASK_PUBLISH_TIMEOUT = 17825799,
|
|
1398
|
+
/**
|
|
1399
|
+
* MPU任务发布成功
|
|
1400
|
+
*/
|
|
1401
|
+
ERR_SDK_MPU_TASK_NOT_AUTHORIZED = 17825800,
|
|
1402
|
+
/************************************************************************************/
|
|
1403
|
+
/******************************** 旁路直播错误码 end ********************************/
|
|
1404
|
+
/************************************************************************************/
|
|
1405
|
+
/************************************************************************************/
|
|
1406
|
+
/******************************** 跨频道转推错误码 start ******************************/
|
|
1407
|
+
/************************************************************************************/
|
|
1408
|
+
/**
|
|
1409
|
+
* 检测到本地状态不对,没入会,角色错误,频道模式错误
|
|
1410
|
+
*/
|
|
1411
|
+
ERR_SDK_CHANNEL_RELAY_STATE_ERROR = 18874369,
|
|
1412
|
+
/**
|
|
1413
|
+
* 服务端返回436,源通道模式不匹配
|
|
1414
|
+
*/
|
|
1415
|
+
ERR_SDK_CHANNEL_RELAY_SRC_NOT_ALLOW = 18874370,
|
|
1416
|
+
/**
|
|
1417
|
+
* 服务端返回437,目标通道不存在或者模式不匹配
|
|
1418
|
+
*/
|
|
1419
|
+
ERR_SDK_CHANNEL_RELAY_JOIN_DEST_FAILED = 18874371,
|
|
1420
|
+
/**
|
|
1421
|
+
* 服务端返回438,token无效
|
|
1422
|
+
*/
|
|
1423
|
+
ERR_SDK_CHANNEL_RELAY_TOKEN_INVALID = 18874372,
|
|
1424
|
+
/**
|
|
1425
|
+
* 服务端返651,session不是主播
|
|
1426
|
+
*/
|
|
1427
|
+
ERR_SDK_CHANNEL_RELAY_ROLE_ERROR = 18874373,
|
|
1428
|
+
/**
|
|
1429
|
+
* 服务端400,参数错误
|
|
1430
|
+
*/
|
|
1431
|
+
ERR_SDK_CHANNEL_RELAY_INVALID_PARAM = 18874374,
|
|
1432
|
+
/**
|
|
1433
|
+
* 服务端返回440,不能转推到本频道
|
|
1434
|
+
*/
|
|
1435
|
+
ERR_SDK_CHANNEL_RELAY_TO_SELF_ERROR = 18874375
|
|
1436
|
+
}
|
|
1437
|
+
|
|
1438
|
+
declare class AliRtcLiveTranscoding {
|
|
1439
|
+
authInfo?: AliRtcAuthInfo;
|
|
1440
|
+
private doRequest;
|
|
1441
|
+
setAuthInfo(authInfo: AliRtcAuthInfo): void;
|
|
1442
|
+
clear(): void;
|
|
1443
|
+
startPublishLiveStream(streamUrl: string, transcodingParam: AliRtcLiveTranscodingParam): Promise<any>;
|
|
1444
|
+
startPublishLiveStreamWithTaskId(taskId: string, transcodingParam: AliRtcLiveTranscodingParam): Promise<any>;
|
|
1445
|
+
updatePublishLiveStream(streamUrl: string, transcodingParam: AliRtcLiveTranscodingParam): Promise<any>;
|
|
1446
|
+
updatePublishLiveStreamWithTaskId(taskId: string, transcodingParam: AliRtcLiveTranscodingParam): Promise<any>;
|
|
1447
|
+
stopPublishLiveStream(streamUrl: string): Promise<any>;
|
|
1448
|
+
stopPublishLiveStreamWithTaskId(taskId: string): Promise<any>;
|
|
1449
|
+
refreshAuthInfo(authInfo: AliRtcRefreshAuthInfo): void;
|
|
1450
|
+
}
|
|
1451
|
+
|
|
1452
|
+
export declare enum AliRtcLiveTranscodingAudioSampleRate {
|
|
1453
|
+
LiveTranscoding_HZ_48000 = 48000,
|
|
1454
|
+
LiveTranscoding_HZ_44100 = 44100,
|
|
1455
|
+
LiveTranscoding_HZ_32000 = 32000,
|
|
1456
|
+
LiveTranscoding_HZ_16000 = 16000,
|
|
1457
|
+
LiveTranscoding_HZ_8000 = 8000
|
|
1458
|
+
}
|
|
1459
|
+
|
|
1460
|
+
export declare enum AliRtcLiveTranscodingCropMode {
|
|
1461
|
+
/*! 缩放模式 */
|
|
1462
|
+
LiveTranscodingOrigin = 0,
|
|
1463
|
+
/*! 剪裁 */
|
|
1464
|
+
LiveTranscodingCrop = 1,
|
|
1465
|
+
/*! 填充 */
|
|
1466
|
+
LiveTranscodingFill = 2
|
|
1467
|
+
}
|
|
1468
|
+
|
|
1469
|
+
export declare class AliRtcLiveTranscodingEncodeParam {
|
|
1470
|
+
videoWidth: number;
|
|
1471
|
+
videoHeight: number;
|
|
1472
|
+
videoFramerate: number;
|
|
1473
|
+
videoBitrate: number;
|
|
1474
|
+
videoGop: number;
|
|
1475
|
+
audioSamplerate: AliRtcLiveTranscodingAudioSampleRate;
|
|
1476
|
+
audioBitrate: number;
|
|
1477
|
+
audioChannels: number;
|
|
1478
|
+
constructor(videoWidth: number, videoHeight: number, videoFramerate?: number, videoBitrate?: number, videoGop?: number, audioSamplerate?: AliRtcLiveTranscodingAudioSampleRate, audioBitrate?: number, audioChannels?: number);
|
|
1479
|
+
}
|
|
1480
|
+
|
|
1481
|
+
export declare enum AliRtcLiveTranscodingErrorCode {
|
|
1482
|
+
LiveTranscodingErrorPublishOk = 0,
|
|
1483
|
+
LiveTranscodingErrorStreamNotFound = 17825793,
|
|
1484
|
+
LiveTranscodingErrorStreamAlreadyExist = 17825794,
|
|
1485
|
+
LiveTranscodingErrorInvalidParam = 17825795,
|
|
1486
|
+
LiveTranscodingErrorInternalError = 17825796,
|
|
1487
|
+
LiveTranscodingErrorRtmpServerError = 17825797,
|
|
1488
|
+
LiveTranscodingErrorRtmpStreamUrlError = 17825798,
|
|
1489
|
+
LiveTranscodingErrorPublishTimeout = 17825799,
|
|
1490
|
+
LiveTranscodingErrorNotAuthorized = 17825800
|
|
1491
|
+
}
|
|
1492
|
+
|
|
1493
|
+
export declare enum AliRtcLiveTranscodingFontType {
|
|
1494
|
+
NOTO_SERIF_CJKSC_REGULAR = 0,
|
|
1495
|
+
ALIBABA_PUHUITI_REGULAR = 1,
|
|
1496
|
+
ALIBABA_PUHUITI_BOLD = 2,
|
|
1497
|
+
ALIBABA_PUHUITI_Heavy = 3,
|
|
1498
|
+
ALIBABA_PUHUITI_LIGHT = 4,
|
|
1499
|
+
ALIBABA_PUHUITI_MEDIUM = 5
|
|
1500
|
+
}
|
|
1501
|
+
|
|
1502
|
+
export declare enum AliRtcLiveTranscodingMediaProcessMode {
|
|
1503
|
+
/*! 通用模式 */
|
|
1504
|
+
LiveTranscodingNormal = 0,
|
|
1505
|
+
/*! 虚拟背景模式 */
|
|
1506
|
+
LiveTranscodingVirtualBackground = 1
|
|
1507
|
+
}
|
|
1508
|
+
|
|
1509
|
+
export declare enum AliRtcLiveTranscodingMixMode {
|
|
1510
|
+
/*! 单路模式 */
|
|
1511
|
+
LiveTranscodingSingle = 0,
|
|
1512
|
+
/*! 混流模式 */
|
|
1513
|
+
LiveTranscodingMix = 1
|
|
1514
|
+
}
|
|
1515
|
+
|
|
1516
|
+
export declare class AliRtcLiveTranscodingMixParam {
|
|
1517
|
+
taskProfile: AliRtcLiveTranscodingTaskProfile;
|
|
1518
|
+
encodeParam?: AliRtcLiveTranscodingEncodeParam;
|
|
1519
|
+
users: AliRtcTranscodingUser[];
|
|
1520
|
+
backgroundColor: number;
|
|
1521
|
+
backgrounds: AliRtcTranscodingImage[];
|
|
1522
|
+
watermarks: AliRtcTranscodingImage[];
|
|
1523
|
+
clockWidgets: AliRtcTranscodingClockWidget[];
|
|
1524
|
+
cropMode?: AliRtcLiveTranscodingCropMode;
|
|
1525
|
+
mediaProcessMode?: AliRtcLiveTranscodingMediaProcessMode;
|
|
1526
|
+
constructor(taskProfile: AliRtcLiveTranscodingTaskProfile);
|
|
1527
|
+
}
|
|
1528
|
+
|
|
1529
|
+
export declare class AliRtcLiveTranscodingParam {
|
|
1530
|
+
/*! 旁路模式 */
|
|
1531
|
+
mixMode: AliRtcLiveTranscodingMixMode;
|
|
1532
|
+
/*! 路模式单路参数 */
|
|
1533
|
+
singleParam?: AliRtcLiveTranscodingSingleParam;
|
|
1534
|
+
/*! 旁路模式混流参数 */
|
|
1535
|
+
mixParam?: AliRtcLiveTranscodingMixParam;
|
|
1536
|
+
constructor(mixMode?: AliRtcLiveTranscodingMixMode, singleParam?: AliRtcLiveTranscodingSingleParam, mixParam?: AliRtcLiveTranscodingMixParam);
|
|
1537
|
+
toJson(type: MPU_TASK_TRANSACTION_TYPE, authInfo: AliRtcAuthInfo, taskId: string, streamUrl?: string, messageId?: string): {
|
|
1538
|
+
[key: string]: any;
|
|
1539
|
+
};
|
|
1540
|
+
}
|
|
1541
|
+
|
|
1542
|
+
export declare enum AliRtcLiveTranscodingSegmentType {
|
|
1543
|
+
/*! 无人像分割 */
|
|
1544
|
+
LiveTranscodingNoBody = 0,
|
|
1545
|
+
/*! 人像分割 */
|
|
1546
|
+
LiveTranscodingBody = 1
|
|
1547
|
+
}
|
|
1548
|
+
|
|
1549
|
+
export declare class AliRtcLiveTranscodingSingleParam {
|
|
1550
|
+
userId?: string;
|
|
1551
|
+
streamType?: AliRtcLiveTranscodingStreamType;
|
|
1552
|
+
sourceType?: AliRtcLiveTranscodingSourceType;
|
|
1553
|
+
constructor(uid?: string, streamType?: AliRtcLiveTranscodingStreamType, sourceType?: AliRtcLiveTranscodingSourceType);
|
|
1554
|
+
}
|
|
1555
|
+
|
|
1556
|
+
export declare enum AliRtcLiveTranscodingSourceType {
|
|
1557
|
+
/*! 相机流 */
|
|
1558
|
+
LiveTranscodingCamera = 0,
|
|
1559
|
+
/*! 屏幕流 */
|
|
1560
|
+
LiveTranscodingShareScreen = 1
|
|
1561
|
+
}
|
|
1562
|
+
|
|
1563
|
+
export declare enum AliRtcLiveTranscodingState {
|
|
1564
|
+
LiveTranscodingState_IDLE = 0,
|
|
1565
|
+
LiveTranscodingState_CONNNECT = 1,
|
|
1566
|
+
LiveTranscodingState_RUNNING = 2,
|
|
1567
|
+
LiveTranscodingState_RECOVERING = 3,
|
|
1568
|
+
LiveTranscodingState_FAILURE = 4,
|
|
1569
|
+
LiveTranscodingState_END = 5
|
|
1570
|
+
}
|
|
1571
|
+
|
|
1572
|
+
export declare enum AliRtcLiveTranscodingStreamType {
|
|
1573
|
+
/*! 原始流 */
|
|
1574
|
+
LiveTranscodingOrigin = 0,
|
|
1575
|
+
/*! 音频 */
|
|
1576
|
+
LiveTranscodingAudio = 1,
|
|
1577
|
+
/*! 视频 */
|
|
1578
|
+
LiveTranscodingVideo = 2
|
|
1579
|
+
}
|
|
1580
|
+
|
|
1581
|
+
export declare enum AliRtcLiveTranscodingTaskProfile {
|
|
1582
|
+
LiveTranscoding_Profile_1IN_1080P = 0,
|
|
1583
|
+
LiveTranscoding_Profile_1IN_720P = 1,
|
|
1584
|
+
LiveTranscoding_Profile_1IN_360P = 2,
|
|
1585
|
+
LiveTranscoding_Profile_2IN_1080P = 3,
|
|
1586
|
+
LiveTranscoding_Profile_2IN_720P = 4,
|
|
1587
|
+
LiveTranscoding_Profile_2IN_360P = 5,
|
|
1588
|
+
LiveTranscoding_Profile_4IN_1080P = 6,
|
|
1589
|
+
LiveTranscoding_Profile_4IN_720P = 7,
|
|
1590
|
+
LiveTranscoding_Profile_4IN_360P = 8,
|
|
1591
|
+
LiveTranscoding_Profile_9IN_1080P = 9,
|
|
1592
|
+
LiveTranscoding_Profile_9IN_720P = 10,
|
|
1593
|
+
LiveTranscoding_Profile_9IN_360P = 11,
|
|
1594
|
+
LiveTranscoding_Profile_12IN_1080P = 12,
|
|
1595
|
+
LiveTranscoding_Profile_12IN_720P = 13,
|
|
1596
|
+
LiveTranscoding_Profile_12IN_360P = 14,
|
|
1597
|
+
LiveTranscoding_Profile_16IN_1080P = 15,
|
|
1598
|
+
LiveTranscoding_Profile_16IN_720P = 16,
|
|
1599
|
+
LiveTranscoding_Profile_16IN_360P = 17,
|
|
1600
|
+
LiveTranscoding_Profile_Mixed = 9999
|
|
1601
|
+
}
|
|
1602
|
+
|
|
1603
|
+
declare interface AliRtcLocalAudioStats {
|
|
1604
|
+
track: AliRtcAudioTrack;
|
|
1605
|
+
stats: any;
|
|
1606
|
+
}
|
|
1607
|
+
|
|
1608
|
+
export declare class AliRtcLocalStreamInfo extends default_2<AliRtcLocalStreamListener> {
|
|
1609
|
+
type: AliRtcRawDataStreamType;
|
|
1610
|
+
originVideoTrack?: MediaStreamTrack;
|
|
1611
|
+
videoSource?: VideoStreamSource;
|
|
1612
|
+
private _videoMuted;
|
|
1613
|
+
originAudioTrack?: MediaStreamTrack;
|
|
1614
|
+
audioSource?: AudioStreamSource;
|
|
1615
|
+
private _audioMuted;
|
|
1616
|
+
private _targetVideoTrack?;
|
|
1617
|
+
private _targetDualVideoTrack?;
|
|
1618
|
+
private _targetAudioTrack?;
|
|
1619
|
+
private _publishVideoStream?;
|
|
1620
|
+
private _publishDualVideoStream?;
|
|
1621
|
+
private _publishAudioStream?;
|
|
1622
|
+
private _previewStream?;
|
|
1623
|
+
plugins: AliRtcPlugin[];
|
|
1624
|
+
private _profileManager?;
|
|
1625
|
+
cameraVideoConstraints?: IVideoConstraints;
|
|
1626
|
+
micAudioConstraints?: IAudioConstraints;
|
|
1627
|
+
private get profileManager();
|
|
1628
|
+
get audioProfile(): AudioProfileKey | undefined;
|
|
1629
|
+
constructor(type: AliRtcRawDataStreamType);
|
|
1630
|
+
private onVideoTrackEnded;
|
|
1631
|
+
private onAudioTrackEnded;
|
|
1632
|
+
updateSource(newStream: LocalStream, newVideoSource?: VideoStreamSource, newAudioSource?: AudioStreamSource): Promise<void>;
|
|
1633
|
+
get currentProfile(): string | undefined;
|
|
1634
|
+
get currentVideoTrack(): MediaStreamTrack | undefined;
|
|
1635
|
+
get currentDualVideoTrack(): MediaStreamTrack | undefined;
|
|
1636
|
+
get publishVideoStream(): LocalStream | undefined;
|
|
1637
|
+
get publishDualVideoStream(): LocalStream | undefined;
|
|
1638
|
+
get currentAudioTrack(): MediaStreamTrack | undefined;
|
|
1639
|
+
get publishAudioStream(): LocalStream | undefined;
|
|
1640
|
+
get previewStream(): LocalStream | undefined;
|
|
1641
|
+
/**
|
|
1642
|
+
* 更新 VideoTrack
|
|
1643
|
+
* @param videoTrack
|
|
1644
|
+
*/
|
|
1645
|
+
updateVideoTrack(videoTrack?: MediaStreamTrack, force?: boolean): Promise<void>;
|
|
1646
|
+
/**
|
|
1647
|
+
* 更新 DualVideoTrack
|
|
1648
|
+
* @param videoTrack
|
|
1649
|
+
* @param force
|
|
1650
|
+
*/
|
|
1651
|
+
updateDualVideoTrack(videoTrack?: MediaStreamTrack, force?: boolean): Promise<void>;
|
|
1652
|
+
/**
|
|
1653
|
+
* 更新 AudioTrack
|
|
1654
|
+
* @param audioTrack
|
|
1655
|
+
*/
|
|
1656
|
+
updateAudioTrack(audioTrack?: MediaStreamTrack, force?: boolean): Promise<void>;
|
|
1657
|
+
/**
|
|
1658
|
+
* 设置音频流静音
|
|
1659
|
+
* @param muted
|
|
1660
|
+
*/
|
|
1661
|
+
setAudioMuted(muted: boolean): void;
|
|
1662
|
+
get isAudioMuted(): boolean;
|
|
1663
|
+
/**
|
|
1664
|
+
* 设置视频流静音
|
|
1665
|
+
* @param muted
|
|
1666
|
+
*/
|
|
1667
|
+
setVideoMuted(muted: boolean): void;
|
|
1668
|
+
get isVideoMuted(): boolean;
|
|
1669
|
+
process(localStreamInfos: AliRtcLocalStreamInfo[]): Promise<void>;
|
|
1670
|
+
/**
|
|
1671
|
+
* 停止视频流
|
|
1672
|
+
*/
|
|
1673
|
+
stopVideo(): void;
|
|
1674
|
+
/**
|
|
1675
|
+
* 停止音频流
|
|
1676
|
+
*/
|
|
1677
|
+
stopAudio(): void;
|
|
1678
|
+
/**
|
|
1679
|
+
* 停止视频流和音频流
|
|
1680
|
+
*/
|
|
1681
|
+
stop(): void;
|
|
1682
|
+
/**
|
|
1683
|
+
* 应该在执行完 plugin 后调用
|
|
1684
|
+
* @param profileName
|
|
1685
|
+
* @param profileValue
|
|
1686
|
+
*/
|
|
1687
|
+
updateVideoProfile(profileName?: string, profileValue?: IProfile): Promise<void>;
|
|
1688
|
+
get videoProfile(): string | undefined;
|
|
1689
|
+
setVideoContentHint(hint?: string): void;
|
|
1690
|
+
/**
|
|
1691
|
+
* 应该在执行完 plugin 后调用
|
|
1692
|
+
* @param profileName
|
|
1693
|
+
*/
|
|
1694
|
+
updateAudioProfile(profileKey: AudioProfileKey): Promise<void>;
|
|
1695
|
+
/**
|
|
1696
|
+
* 复制视频 profile 到指定 LocalStream
|
|
1697
|
+
* @param publishStream
|
|
1698
|
+
*/
|
|
1699
|
+
cloneVideoProfile(publishStream: LocalStream): Promise<void>;
|
|
1700
|
+
addPlugin(plugin: AliRtcPlugin): void;
|
|
1701
|
+
removePlugin(plugin: AliRtcPlugin): boolean;
|
|
1702
|
+
}
|
|
1703
|
+
|
|
1704
|
+
declare interface AliRtcLocalStreamListener {
|
|
1705
|
+
videotrackended: () => void;
|
|
1706
|
+
audiotrackended: () => void;
|
|
1707
|
+
}
|
|
1708
|
+
|
|
1709
|
+
declare interface AliRtcLocalVideoStats {
|
|
1710
|
+
track: AliRtcVideoTrack;
|
|
1711
|
+
streamType?: AliRtcVideoStreamType;
|
|
1712
|
+
stats: any;
|
|
1713
|
+
}
|
|
1714
|
+
|
|
1715
|
+
declare type AliRtcLocalView = string | HTMLVideoElement | string[] | HTMLVideoElement[] | null;
|
|
1716
|
+
|
|
1717
|
+
export declare enum AliRtcLogLevel {
|
|
1718
|
+
DEBUG = 0,
|
|
1719
|
+
INFO = 1,
|
|
1720
|
+
API = 2,
|
|
1721
|
+
WARNING = 3,
|
|
1722
|
+
ERROR = 4,
|
|
1723
|
+
NONE = 5
|
|
1724
|
+
}
|
|
1725
|
+
|
|
1726
|
+
/**
|
|
1727
|
+
* @brief OnBye类型枚举
|
|
1728
|
+
*/
|
|
1729
|
+
declare enum AliRtcOnByeType {
|
|
1730
|
+
/** 当前user被踢出channel */
|
|
1731
|
+
AliRtcOnByeBeKickedOut = 1,
|
|
1732
|
+
/** channel已结束,需要离开会议 */
|
|
1733
|
+
AliRtcOnByeChannelTerminated = 2,
|
|
1734
|
+
/** 相同userID在其他设备joinChannel,当前设备被下线 */
|
|
1735
|
+
AliRtcOnByeUserReplaced = 3
|
|
1736
|
+
}
|
|
1737
|
+
|
|
1738
|
+
export declare abstract class AliRtcPlugin extends default_2<AliRtcPluginListener> {
|
|
1739
|
+
name: string;
|
|
1740
|
+
options: any;
|
|
1741
|
+
type: AliRtcPluginType;
|
|
1742
|
+
streamType: AliRtcRawDataStreamType;
|
|
1743
|
+
trackType: AliRtcPluginTrackType;
|
|
1744
|
+
zIndex: number;
|
|
1745
|
+
private _isEnable;
|
|
1746
|
+
lastInputAudioTrack?: MediaStreamTrack;
|
|
1747
|
+
lastOutputAudioTrack?: MediaStreamTrack;
|
|
1748
|
+
lastInputVideoTrack?: MediaStreamTrack;
|
|
1749
|
+
lastOutputVideoTrack?: MediaStreamTrack;
|
|
1750
|
+
constructor(name: string, streamType?: AliRtcRawDataStreamType, trackType?: AliRtcPluginTrackType);
|
|
1751
|
+
get initOptions(): {};
|
|
1752
|
+
getOptions(): any;
|
|
1753
|
+
abstract setOptions(options: any): void;
|
|
1754
|
+
abstract isSupported(version: string): boolean;
|
|
1755
|
+
init(): Promise<void>;
|
|
1756
|
+
enable(): void;
|
|
1757
|
+
disable(): void;
|
|
1758
|
+
get isEnable(): boolean;
|
|
1759
|
+
protected audioUpdated(streamInfo: AliRtcLocalStreamInfo): boolean;
|
|
1760
|
+
protected videoUpdated(streamInfo: AliRtcLocalStreamInfo): boolean;
|
|
1761
|
+
execute(streamInfo: AliRtcLocalStreamInfo, streamInfos: AliRtcLocalStreamInfo[]): Promise<void>;
|
|
1762
|
+
abstract shouldUpdate(streamInfo: AliRtcLocalStreamInfo, streamInfos: AliRtcLocalStreamInfo[]): boolean;
|
|
1763
|
+
abstract process(streamInfo: AliRtcLocalStreamInfo, streamInfos: AliRtcLocalStreamInfo[]): Promise<void>;
|
|
1764
|
+
clear(_streamInfo?: AliRtcLocalStreamInfo): void;
|
|
1765
|
+
}
|
|
1766
|
+
|
|
1767
|
+
declare interface AliRtcPluginListener {
|
|
1768
|
+
enabled: () => void;
|
|
1769
|
+
disabled: () => void;
|
|
1770
|
+
updated: () => void;
|
|
1771
|
+
ready: () => void;
|
|
1772
|
+
overload: (info: any) => void;
|
|
1773
|
+
error: (error: any) => void;
|
|
1774
|
+
unsupported: () => void;
|
|
1775
|
+
}
|
|
1776
|
+
|
|
1777
|
+
export declare enum AliRtcPluginTrackType {
|
|
1778
|
+
AUDIO = 0,
|
|
1779
|
+
VIDEO = 1,
|
|
1780
|
+
BOTH = 2
|
|
1781
|
+
}
|
|
1782
|
+
|
|
1783
|
+
export declare enum AliRtcPluginType {
|
|
1784
|
+
PRE_PROCESSOR = 0,
|
|
1785
|
+
POST_PROCESSOR = 1
|
|
1786
|
+
}
|
|
1787
|
+
|
|
1788
|
+
export declare enum AliRtcPublishState {
|
|
1789
|
+
/** 0: SDK初始推流状态 */
|
|
1790
|
+
AliRtcStatePublishIdle = 0,
|
|
1791
|
+
/** 1: 未推流状态,可能是因为:
|
|
1792
|
+
* - 已设置停止推送媒体流
|
|
1793
|
+
* - 推送媒体流失败
|
|
1794
|
+
*/
|
|
1795
|
+
AliRtcStateNoPublish = 1,
|
|
1796
|
+
/** 2: 推流链接建立过程中 */
|
|
1797
|
+
AliRtcStatePublishing = 2,
|
|
1798
|
+
/** 3: 推流成功 */
|
|
1799
|
+
AliRtcStatePublished = 3
|
|
1800
|
+
}
|
|
1801
|
+
|
|
1802
|
+
export declare enum AliRtcRawDataStreamType {
|
|
1803
|
+
/** 相机流 */
|
|
1804
|
+
AliRtcSdkStreamTypeCapture = 0,
|
|
1805
|
+
/** 屏幕共享流 */
|
|
1806
|
+
AliRtcSdkStreamTypeScreen = 1
|
|
1807
|
+
}
|
|
1808
|
+
|
|
1809
|
+
export declare type AliRtcRefreshAuthInfo = Pick<AliRtcAuthInfo, 'userId' | 'nonce' | 'token' | 'timestamp' | 'role'>;
|
|
1810
|
+
|
|
1811
|
+
declare interface AliRtcRemoteAudioStats {
|
|
1812
|
+
uid: string;
|
|
1813
|
+
track: AliRtcAudioTrack;
|
|
1814
|
+
stats: any;
|
|
1815
|
+
}
|
|
1816
|
+
|
|
1817
|
+
export declare class AliRtcRemoteUserInfo {
|
|
1818
|
+
private remoteUser;
|
|
1819
|
+
constructor(remoteUser: RemoteUser);
|
|
1820
|
+
get userId(): string;
|
|
1821
|
+
get displayName(): string;
|
|
1822
|
+
get isMuteAudioPlaying(): boolean;
|
|
1823
|
+
get hasAudio(): boolean;
|
|
1824
|
+
get hasCamera(): boolean;
|
|
1825
|
+
get hasCameraLarge(): boolean;
|
|
1826
|
+
get hasCameraSmall(): boolean;
|
|
1827
|
+
get hasScreenShare(): boolean;
|
|
1828
|
+
get isAudioSubscribing(): boolean;
|
|
1829
|
+
get isVideoSubscribing(): boolean;
|
|
1830
|
+
get isVideoLargeSubscribing(): boolean;
|
|
1831
|
+
get isVideoSmallSubscribing(): boolean;
|
|
1832
|
+
get isScreenSubscribing(): boolean;
|
|
1833
|
+
}
|
|
1834
|
+
|
|
1835
|
+
declare interface AliRtcRemoteVideoStats {
|
|
1836
|
+
uid: string;
|
|
1837
|
+
track: AliRtcVideoTrack;
|
|
1838
|
+
streamType?: AliRtcVideoStreamType;
|
|
1839
|
+
stats: any;
|
|
1840
|
+
}
|
|
1841
|
+
|
|
1842
|
+
declare interface AliRtcScreenShareConfiguration {
|
|
1843
|
+
frameRate?: number;
|
|
1844
|
+
bitrate?: number;
|
|
1845
|
+
}
|
|
1846
|
+
|
|
1847
|
+
declare interface AliRtcScreenShareStartConfig {
|
|
1848
|
+
audio?: boolean;
|
|
1849
|
+
videoTrack?: MediaStreamVideoTrack;
|
|
1850
|
+
audioTrack?: MediaStreamAudioTrack;
|
|
1851
|
+
}
|
|
1852
|
+
|
|
1853
|
+
export declare enum AliRtcSdkChannelProfile {
|
|
1854
|
+
/** 普通通信模式 */
|
|
1855
|
+
AliRtcSdkCommunication = "communication",
|
|
1856
|
+
/** 直播模式(大方会模式) */
|
|
1857
|
+
AliRtcSdkInteractiveLive = "interactive_live",
|
|
1858
|
+
/** 低延迟互动直播模式 */
|
|
1859
|
+
AliRtcSdkInteractiveWithLowLatencyLive = "cdn_live"
|
|
1860
|
+
}
|
|
1861
|
+
|
|
1862
|
+
export declare enum AliRtcSdkClientRole {
|
|
1863
|
+
/** 互动角色 */
|
|
1864
|
+
AliRtcSdkInteractive = "interactive",
|
|
1865
|
+
/** 观众角色 */
|
|
1866
|
+
AliRtcSdkLive = "live"
|
|
1867
|
+
}
|
|
1868
|
+
|
|
1869
|
+
/** 角色鉴权 主播pub|观众sub|转推流鉴权(跨房间转推中使用)relay */
|
|
1870
|
+
declare type AliRtcSdkTokenRole = 'pub' | 'sub' | 'relay';
|
|
1871
|
+
|
|
1872
|
+
export declare enum AliRtcSubscribeState {
|
|
1873
|
+
/** 初始状态 */
|
|
1874
|
+
AliRtcStateSubscribeIdle = 0,
|
|
1875
|
+
/** 未订阅 */
|
|
1876
|
+
AliRtcStateNoSubscribe = 1,
|
|
1877
|
+
/** 订阅中 */
|
|
1878
|
+
AliRtcStateSubscribing = 2,
|
|
1879
|
+
/** 已订阅 */
|
|
1880
|
+
AliRtcStateSubscribed = 3
|
|
1881
|
+
}
|
|
1882
|
+
|
|
1883
|
+
export declare class AliRtcTranscodingClockWidget {
|
|
1884
|
+
x: number;
|
|
1885
|
+
y: number;
|
|
1886
|
+
fontSize: number;
|
|
1887
|
+
zOrder: number;
|
|
1888
|
+
fontColor: number;
|
|
1889
|
+
fontType: AliRtcLiveTranscodingFontType;
|
|
1890
|
+
constructor(x: number, y: number, fontSize: number);
|
|
1891
|
+
constructor(x: number, y: number, fontSize: number, zOrder: number);
|
|
1892
|
+
constructor(x: number, y: number, fontSize: number, zOrder: number, fontColor: number);
|
|
1893
|
+
constructor(x: number, y: number, fontSize: number, zOrder: number, fontColor: number, fontType: AliRtcLiveTranscodingFontType);
|
|
1894
|
+
toJson(videoWidth: number, videoHeight: number): {
|
|
1895
|
+
x: number;
|
|
1896
|
+
y: number;
|
|
1897
|
+
fonttype: AliRtcLiveTranscodingFontType;
|
|
1898
|
+
fontsize: number;
|
|
1899
|
+
fontcolor: number;
|
|
1900
|
+
zorder: number;
|
|
1901
|
+
};
|
|
1902
|
+
}
|
|
1903
|
+
|
|
1904
|
+
export declare class AliRtcTranscodingImage {
|
|
1905
|
+
static DisplayType: typeof DisplayType;
|
|
1906
|
+
url: string;
|
|
1907
|
+
x: number;
|
|
1908
|
+
y: number;
|
|
1909
|
+
width: number;
|
|
1910
|
+
height: number;
|
|
1911
|
+
alpha: number;
|
|
1912
|
+
display: DisplayType;
|
|
1913
|
+
zOrder: number;
|
|
1914
|
+
constructor(url: string, x: number, y: number, width: number, height: number);
|
|
1915
|
+
constructor(url: string, x: number, y: number, width: number, height: number, zOrder: number);
|
|
1916
|
+
constructor(url: string, x: number, y: number, width: number, height: number, zOrder: number, alpha: number);
|
|
1917
|
+
constructor(url: string, x: number, y: number, width: number, height: number, zOrder: number, alpha: number, display: DisplayType);
|
|
1918
|
+
toJson(videoWidth: number, videoHeight: number): {
|
|
1919
|
+
url: string;
|
|
1920
|
+
alpha: number;
|
|
1921
|
+
display: DisplayType;
|
|
1922
|
+
x: number;
|
|
1923
|
+
y: number;
|
|
1924
|
+
width: number;
|
|
1925
|
+
height: number;
|
|
1926
|
+
zorder: number;
|
|
1927
|
+
};
|
|
1928
|
+
}
|
|
1929
|
+
|
|
1930
|
+
export declare class AliRtcTranscodingText {
|
|
1931
|
+
text: string;
|
|
1932
|
+
x: number;
|
|
1933
|
+
y: number;
|
|
1934
|
+
fontSize: number;
|
|
1935
|
+
zOrder: number;
|
|
1936
|
+
fontColor: number;
|
|
1937
|
+
fontType: AliRtcLiveTranscodingFontType;
|
|
1938
|
+
constructor(text: string, x: number, y: number, fontSize: number);
|
|
1939
|
+
constructor(text: string, x: number, y: number, fontSize: number, zOrder: number);
|
|
1940
|
+
constructor(text: string, x: number, y: number, fontSize: number, zOrder: number, fontColor: number);
|
|
1941
|
+
constructor(text: string, x: number, y: number, fontSize: number, zOrder: number, fontColor: number, fontType: AliRtcLiveTranscodingFontType);
|
|
1942
|
+
toJson(videoWidth: number, videoHeight: number): {
|
|
1943
|
+
text: string;
|
|
1944
|
+
x: number;
|
|
1945
|
+
y: number;
|
|
1946
|
+
fonttype: AliRtcLiveTranscodingFontType;
|
|
1947
|
+
fontsize: number;
|
|
1948
|
+
fontcolor: number;
|
|
1949
|
+
zorder: number;
|
|
1950
|
+
};
|
|
1951
|
+
}
|
|
1952
|
+
|
|
1953
|
+
export declare class AliRtcTranscodingUser {
|
|
1954
|
+
userId: string;
|
|
1955
|
+
x: number;
|
|
1956
|
+
y: number;
|
|
1957
|
+
width: number;
|
|
1958
|
+
height: number;
|
|
1959
|
+
zOrder?: number;
|
|
1960
|
+
sourceType?: AliRtcLiveTranscodingSourceType;
|
|
1961
|
+
segmentType: AliRtcLiveTranscodingSegmentType;
|
|
1962
|
+
images: AliRtcTranscodingImage[];
|
|
1963
|
+
texts: AliRtcTranscodingText[];
|
|
1964
|
+
constructor(userId: string, x: number, y: number, width: number, height: number);
|
|
1965
|
+
constructor(userId: string, x: number, y: number, width: number, height: number, zOrder: number);
|
|
1966
|
+
constructor(userId: string, x: number, y: number, width: number, height: number, zOrder: number, sourceType: AliRtcLiveTranscodingSourceType);
|
|
1967
|
+
toJson(index: number, videoWidth: number, videoHeight: number, mediaProcessMode?: AliRtcLiveTranscodingMediaProcessMode): {
|
|
1968
|
+
[key: string]: any;
|
|
1969
|
+
};
|
|
1970
|
+
}
|
|
1971
|
+
|
|
1972
|
+
export declare enum AliRtcTrascodingPublishTaskStatus {
|
|
1973
|
+
/*! 任务开始 */
|
|
1974
|
+
TrascodingPublishTaskStatusStart = 0,
|
|
1975
|
+
/*! 任务更新 */
|
|
1976
|
+
TrascodingPublishTaskStatusUpdate = 1,
|
|
1977
|
+
/*! 任务已停止 */
|
|
1978
|
+
TrascodingPublishTaskStatusStop = 2
|
|
1979
|
+
}
|
|
1980
|
+
|
|
1981
|
+
declare enum AliRtcUserOfflineReason {
|
|
1982
|
+
/** 用户主动离开 */
|
|
1983
|
+
AliRtcUserOfflineQuit = 0,
|
|
1984
|
+
/** 因过长时间收不到对方数据包,超时掉线 */
|
|
1985
|
+
AliRtcUserOfflineDropped = 1,
|
|
1986
|
+
/** 用户身份从主播切换为观众时触发 */
|
|
1987
|
+
AliRtcUserOfflineBecomeAudience = 2
|
|
1988
|
+
}
|
|
1989
|
+
|
|
1990
|
+
export declare enum AliRtcVideoStreamType {
|
|
1991
|
+
/** 无,在OnSubscribeStreamTypeChanged回调表示当前未订阅 */
|
|
1992
|
+
AliRtcVideoStreamTypeNone = 0,
|
|
1993
|
+
/** 高码率,高分辨率流(大流) */
|
|
1994
|
+
AliRtcVideoStreamTypeHigh = 1,
|
|
1995
|
+
/** 低码率,低分辨率流(小流) */
|
|
1996
|
+
AliRtcVideoStreamTypeLow = 2
|
|
1997
|
+
}
|
|
1998
|
+
|
|
1999
|
+
export declare enum AliRtcVideoTrack {
|
|
2000
|
+
/** 无视频流 **/
|
|
2001
|
+
AliRtcVideoTrackNo = 0,
|
|
2002
|
+
/** 相机流 **/
|
|
2003
|
+
AliRtcVideoTrackCamera = 1,
|
|
2004
|
+
/** 屏幕共享流 **/
|
|
2005
|
+
AliRtcVideoTrackScreen = 2,
|
|
2006
|
+
/** 相机流和屏幕共享流 **/
|
|
2007
|
+
AliRtcVideoTrackBoth = 3
|
|
2008
|
+
}
|
|
2009
|
+
|
|
2010
|
+
declare interface AliRtcVideoTrackConfig {
|
|
2011
|
+
userId?: string;
|
|
2012
|
+
streamType: AliRtcRawDataStreamType;
|
|
2013
|
+
}
|
|
2014
|
+
|
|
2015
|
+
declare interface AliRtcWebTrackConfig {
|
|
2016
|
+
biz: string;
|
|
2017
|
+
extraParams?: string;
|
|
2018
|
+
}
|
|
2019
|
+
|
|
2020
|
+
declare class AudioLevelMonitor extends default_2<AudioLevelMonitorListener> {
|
|
2021
|
+
private audioContext;
|
|
2022
|
+
private stream;
|
|
2023
|
+
private sourceNode?;
|
|
2024
|
+
private analyser?;
|
|
2025
|
+
constructor();
|
|
2026
|
+
getLevel(): number;
|
|
2027
|
+
/**
|
|
2028
|
+
* 开启监听 audio level 的变化
|
|
2029
|
+
*
|
|
2030
|
+
* @param {MediaStreamTrack} track 音频轨
|
|
2031
|
+
* @param {number} [interval=1000] 检测间隔,单位毫秒,默认 1000ms
|
|
2032
|
+
*/
|
|
2033
|
+
start(track: MediaStreamTrack, interval?: number): void;
|
|
2034
|
+
stop(): void;
|
|
2035
|
+
dispose(): void;
|
|
2036
|
+
}
|
|
2037
|
+
|
|
2038
|
+
declare interface AudioLevelMonitorListener {
|
|
2039
|
+
audioLevel: (level: number) => void;
|
|
2040
|
+
}
|
|
2041
|
+
|
|
2042
|
+
/**
|
|
2043
|
+
* ------------------ 模式 ----- 采样率 ----- 声道 ----- 码率(kbps) -----
|
|
2044
|
+
*
|
|
2045
|
+
* standard: 标准音质 48000 单声道 64
|
|
2046
|
+
*
|
|
2047
|
+
* high: 高音质 48000 单声道 128
|
|
2048
|
+
*
|
|
2049
|
+
* standard-stereo: 立体声音质 48000 双声道 80
|
|
2050
|
+
*
|
|
2051
|
+
* high-stereo: 立体声高音质 48000 双声道 192
|
|
2052
|
+
*/
|
|
2053
|
+
declare type AudioProfileKey = 'standard' | 'high' | 'standard-stereo' | 'high-stereo';
|
|
2054
|
+
|
|
2055
|
+
declare enum AudioStreamSource {
|
|
2056
|
+
Microphone = 0,
|
|
2057
|
+
Screen = 1,
|
|
2058
|
+
Mixed = 2
|
|
2059
|
+
}
|
|
2060
|
+
|
|
2061
|
+
declare enum ClientEventType {
|
|
2062
|
+
PullStreamStats = "remoteStat",
|
|
2063
|
+
RtsSubscribeExceeds = "rtsSubscribeExceeds",
|
|
2064
|
+
UserJoined = "userJoined",
|
|
2065
|
+
UserLeft = "userLeft",
|
|
2066
|
+
Bye = "bye",
|
|
2067
|
+
MuteAudio = "muteAudio",
|
|
2068
|
+
UnmuteAudio = "unmuteAudio",
|
|
2069
|
+
MuteVideo = "muteVideo",
|
|
2070
|
+
UnmuteVideo = "unmuteVideo",
|
|
2071
|
+
MuteScreen = "muteScreen",
|
|
2072
|
+
UnmuteScreen = "unmuteScreen",
|
|
2073
|
+
Error = "error"
|
|
2074
|
+
}
|
|
2075
|
+
|
|
2076
|
+
declare enum CmdType {
|
|
2077
|
+
Add = 0,
|
|
2078
|
+
Del = 1,
|
|
2079
|
+
Update = 2,
|
|
2080
|
+
None = 100
|
|
2081
|
+
}
|
|
2082
|
+
|
|
2083
|
+
declare enum CodecType {
|
|
2084
|
+
OPUS = "opus",
|
|
2085
|
+
H264 = "H264",
|
|
2086
|
+
UNKONWN = ""
|
|
2087
|
+
}
|
|
2088
|
+
|
|
2089
|
+
declare const _default: typeof AliRtcEngine;
|
|
2090
|
+
export default _default;
|
|
2091
|
+
|
|
2092
|
+
declare interface DeviceStatus {
|
|
2093
|
+
micOpen: boolean;
|
|
2094
|
+
micInterrupted: boolean;
|
|
2095
|
+
cameraOpen: boolean;
|
|
2096
|
+
screenShare: boolean;
|
|
2097
|
+
audioDisable: boolean;
|
|
2098
|
+
videoDisable: boolean;
|
|
2099
|
+
screenDisable: boolean;
|
|
2100
|
+
backgroundMode: boolean;
|
|
2101
|
+
accompanyPlaying: boolean;
|
|
2102
|
+
}
|
|
2103
|
+
|
|
2104
|
+
declare enum DeviceStatusChange {
|
|
2105
|
+
Local = "local-device-status-change",
|
|
2106
|
+
Remote = "remote-device-status-change"
|
|
2107
|
+
}
|
|
2108
|
+
|
|
2109
|
+
declare type DeviceStatusChangeType = ClientEventType.MuteAudio | ClientEventType.UnmuteAudio | ClientEventType.MuteScreen | ClientEventType.UnmuteScreen | ClientEventType.MuteVideo | ClientEventType.UnmuteVideo;
|
|
2110
|
+
|
|
2111
|
+
declare enum DisplayType {
|
|
2112
|
+
NOT_DISPLAY = 0,
|
|
2113
|
+
ALWAYS = 1,
|
|
2114
|
+
WHEN_NO_VIDEO = 2
|
|
2115
|
+
}
|
|
2116
|
+
|
|
2117
|
+
declare enum EventId {
|
|
2118
|
+
JoinChannel = 70012,
|
|
2119
|
+
JoinChannelRes = 70013,
|
|
2120
|
+
LeaveChannel = 70015,
|
|
2121
|
+
EnvCheck = 100001,
|
|
2122
|
+
Push = 10030,
|
|
2123
|
+
Pull = 10050,
|
|
2124
|
+
SubscribeStats = 10080
|
|
2125
|
+
}
|
|
2126
|
+
|
|
2127
|
+
declare interface ISignalingInterface {
|
|
2128
|
+
join(authInfo: AliRtcAuthInfo, userName: string, connectRetryCount?: number): Promise<JoinResult>;
|
|
2129
|
+
leave(): Promise<SignalingResult>;
|
|
2130
|
+
publish(publishInfo: PublishInfo): Promise<SignalingResult>;
|
|
2131
|
+
roleUpdate(role: AliRtcSdkClientRole): Promise<SignalingResult>;
|
|
2132
|
+
setChannelProfile(channelProfile: AliRtcSdkChannelProfile): void;
|
|
2133
|
+
refreshUrl(info: RefreshInfo): Promise<RefreshUrlResult>;
|
|
2134
|
+
refreshAuthInfo(authInfo: AliRtcAuthInfo): Promise<void>;
|
|
2135
|
+
reportStatus(status: string): Promise<void>;
|
|
2136
|
+
on(event: string, listener: Function): void;
|
|
2137
|
+
reset(): void;
|
|
2138
|
+
}
|
|
2139
|
+
|
|
2140
|
+
/**
|
|
2141
|
+
* 服务端通知的远端用户信息
|
|
2142
|
+
*/
|
|
2143
|
+
declare interface JoinInfo {
|
|
2144
|
+
displayname: string;
|
|
2145
|
+
session: string;
|
|
2146
|
+
userid: string;
|
|
2147
|
+
callid: string;
|
|
2148
|
+
clientrole?: string;
|
|
2149
|
+
subscribe?: {
|
|
2150
|
+
pullstreamurl: string;
|
|
2151
|
+
};
|
|
2152
|
+
tracks?: TrackInfo[];
|
|
2153
|
+
}
|
|
2154
|
+
|
|
2155
|
+
declare interface JoinResult {
|
|
2156
|
+
pushstreamurl: string;
|
|
2157
|
+
tid: string;
|
|
2158
|
+
users: JoinInfo[];
|
|
2159
|
+
timestamp: number;
|
|
2160
|
+
}
|
|
2161
|
+
|
|
2162
|
+
declare interface LeaveInfo {
|
|
2163
|
+
userid: string;
|
|
2164
|
+
leavecode: AliRtcUserOfflineReason;
|
|
2165
|
+
reason: string;
|
|
2166
|
+
}
|
|
2167
|
+
|
|
2168
|
+
declare class LocalProfileManager {
|
|
2169
|
+
profile?: string;
|
|
2170
|
+
profileMap: Map<string, IProfile>;
|
|
2171
|
+
audioProfile?: AudioProfileKey;
|
|
2172
|
+
contentHint?: string;
|
|
2173
|
+
updateProfile(profileKey: string, profileValue?: IProfile): void;
|
|
2174
|
+
get videoProfile(): string | undefined;
|
|
2175
|
+
updateAudioProfile(profileKey: AudioProfileKey): void;
|
|
2176
|
+
setContentHint(videoTrack: MediaStreamTrack | undefined, contentHint?: string): void;
|
|
2177
|
+
/**
|
|
2178
|
+
* 更新源流 Constraints
|
|
2179
|
+
* 更新 PeerConnectiong Sender 相关配置
|
|
2180
|
+
* @param stream
|
|
2181
|
+
*/
|
|
2182
|
+
setVideoProfile(originVideoTrack: MediaStreamTrack | undefined, target: LocalStream | undefined, skipConstraints?: boolean): Promise<void>;
|
|
2183
|
+
}
|
|
2184
|
+
|
|
2185
|
+
declare type LocalStreamConfig = Omit<_LocalStreamConfig, 'custom'>;
|
|
2186
|
+
|
|
2187
|
+
declare interface _LocalStreamConfig extends IStreamConfig {
|
|
2188
|
+
videoProfile?: string;
|
|
2189
|
+
screenProfile?: string;
|
|
2190
|
+
}
|
|
2191
|
+
|
|
2192
|
+
declare class LocalStreamManager extends default_2<LocalStreamManagerListener> {
|
|
2193
|
+
/**
|
|
2194
|
+
* @ignore
|
|
2195
|
+
*/
|
|
2196
|
+
static logName: string;
|
|
2197
|
+
private pluginManager;
|
|
2198
|
+
private publishingCameraVideoStream;
|
|
2199
|
+
private publishingScreenVideoStream;
|
|
2200
|
+
cameraStreamInfo: AliRtcLocalStreamInfo;
|
|
2201
|
+
screenStreamInfo: AliRtcLocalStreamInfo;
|
|
2202
|
+
private streamInfos;
|
|
2203
|
+
private _audioCaptureDisabled;
|
|
2204
|
+
private _cameraCaptureDisabled;
|
|
2205
|
+
private _publishLocalAudioStreamEnabled;
|
|
2206
|
+
private _publishLocalVideoStreamEnabled;
|
|
2207
|
+
private _publishLocalScreenStreamEnabled;
|
|
2208
|
+
constructor(pluginManager: PluginManager);
|
|
2209
|
+
get hasCamera(): boolean;
|
|
2210
|
+
get audioCaptureDisabled(): boolean;
|
|
2211
|
+
set audioCaptureDisabled(closed: boolean);
|
|
2212
|
+
get cameraCaptureDisabled(): boolean;
|
|
2213
|
+
setAudioMuted(muted: boolean): void;
|
|
2214
|
+
get isAudioMuted(): boolean;
|
|
2215
|
+
setCameraMuted(muted: boolean): void;
|
|
2216
|
+
get isCameraMuted(): boolean;
|
|
2217
|
+
setScreenMuted(muted: boolean): void;
|
|
2218
|
+
get isScreenMuted(): boolean;
|
|
2219
|
+
set cameraCaptureDisabled(closed: boolean);
|
|
2220
|
+
get publishLocalAudioStreamEnabled(): boolean;
|
|
2221
|
+
set publishLocalAudioStreamEnabled(enable: boolean);
|
|
2222
|
+
get publishLocalVideoStreamEnabled(): boolean;
|
|
2223
|
+
set publishLocalVideoStreamEnabled(enable: boolean);
|
|
2224
|
+
get publishLocalScreenStreamEnabled(): boolean;
|
|
2225
|
+
set publishLocalScreenStreamEnabled(enable: boolean);
|
|
2226
|
+
private updateStreams;
|
|
2227
|
+
private setAvailableCameraDeviceId;
|
|
2228
|
+
private setAvailableMicrophoneDeviceId;
|
|
2229
|
+
/**
|
|
2230
|
+
* 创建 LocalStream
|
|
2231
|
+
* @param {LocalStreamConfig} params 创建 LocalStream 的配置
|
|
2232
|
+
* @returns {LocalStream} 当前创建的 LocalStream
|
|
2233
|
+
*/
|
|
2234
|
+
createLocalStream(params: LocalStreamConfig): Promise<LocalStream | undefined>;
|
|
2235
|
+
/**
|
|
2236
|
+
* 停止推流,底层调用 rts publishStop,不会导致 DC 马上关闭。适合暂时停推的场景
|
|
2237
|
+
* @param {StopPublishOptions} options
|
|
2238
|
+
* @returns {Promise<PublishStreamInfo>} 如果返回了 audio,则表示需要更新音频流
|
|
2239
|
+
*/
|
|
2240
|
+
stopLocalStream(options: StopPublishOptions): Promise<void>;
|
|
2241
|
+
get publishStreams(): PublishStreamInfo;
|
|
2242
|
+
createHTTPPublishStream(): Promise<{
|
|
2243
|
+
publishStream: LocalStream | undefined;
|
|
2244
|
+
videoSmallStream: LocalStream | undefined;
|
|
2245
|
+
screenStream: LocalStream | undefined;
|
|
2246
|
+
vMsid: string | undefined;
|
|
2247
|
+
}>;
|
|
2248
|
+
/**
|
|
2249
|
+
* 停止所有流
|
|
2250
|
+
*/
|
|
2251
|
+
stop(): void;
|
|
2252
|
+
/**
|
|
2253
|
+
* 设置摄像头流 profile
|
|
2254
|
+
* @param {LocalStream | null} stream
|
|
2255
|
+
* @param {string} profileKey
|
|
2256
|
+
* @param {IProfile} profile
|
|
2257
|
+
*/
|
|
2258
|
+
setVideoProfile(profileKey?: string, profile?: IProfile): Promise<void>;
|
|
2259
|
+
/**
|
|
2260
|
+
* 设置摄像头流 content hint
|
|
2261
|
+
* @param {string} hint
|
|
2262
|
+
* @note 不传则尝试复用之前的 hint
|
|
2263
|
+
*/
|
|
2264
|
+
setVideoContentHint(hint?: string): void;
|
|
2265
|
+
/**
|
|
2266
|
+
* 设置音频流 profile
|
|
2267
|
+
* @param {string} profileKey
|
|
2268
|
+
*/
|
|
2269
|
+
setAudioProfile(profileKey: AudioProfileKey): Promise<void>;
|
|
2270
|
+
/**
|
|
2271
|
+
* 设置屏幕共享流 profile
|
|
2272
|
+
* @param {LocalStream} stream
|
|
2273
|
+
* @param {string} profileKey
|
|
2274
|
+
* @param {IProfile} profile
|
|
2275
|
+
*/
|
|
2276
|
+
setScreenProfile(profileKey?: string, profile?: IProfile): Promise<void>;
|
|
2277
|
+
setScreenContentHint(hint?: string): void;
|
|
2278
|
+
/**
|
|
2279
|
+
* 设置 cameraVideoConstraints
|
|
2280
|
+
* @param {IVideoConstraints} cameraVideoConstraints
|
|
2281
|
+
*/
|
|
2282
|
+
setCameraVideoConstraints(cameraVideoConstraints: IVideoConstraints): void;
|
|
2283
|
+
/**
|
|
2284
|
+
* 设置 micAudioConstraints
|
|
2285
|
+
* @param {IAudioConstraints} micAudioConstraints
|
|
2286
|
+
*/
|
|
2287
|
+
setMicAudioConstraints(micAudioConstraints: IAudioConstraints): void;
|
|
2288
|
+
}
|
|
2289
|
+
|
|
2290
|
+
declare interface LocalStreamManagerListener {
|
|
2291
|
+
trackended: (type: TrackEvent_2) => {};
|
|
2292
|
+
publishupdate: () => {};
|
|
2293
|
+
}
|
|
2294
|
+
|
|
2295
|
+
declare class LocalUser extends User {
|
|
2296
|
+
/**
|
|
2297
|
+
* @ignore
|
|
2298
|
+
*/
|
|
2299
|
+
static logName: string;
|
|
2300
|
+
protected url: string;
|
|
2301
|
+
private _isPublishing;
|
|
2302
|
+
private publishPromise;
|
|
2303
|
+
private previewElements;
|
|
2304
|
+
private screenPreviewElements;
|
|
2305
|
+
private streamManager;
|
|
2306
|
+
protected streamTracks?: TrackInfo[];
|
|
2307
|
+
protected publishId: string;
|
|
2308
|
+
protected signalingManager: SignalingManager;
|
|
2309
|
+
traceId: string;
|
|
2310
|
+
private monitorTimerId?;
|
|
2311
|
+
protected reporter: Reporter;
|
|
2312
|
+
protected webTrackingClient: WebTrackingClient;
|
|
2313
|
+
private audioPubState;
|
|
2314
|
+
private videoPubState;
|
|
2315
|
+
private videoSmallPubState;
|
|
2316
|
+
private screenPubState;
|
|
2317
|
+
constructor(config: LocalUserConfig);
|
|
2318
|
+
get joined(): boolean;
|
|
2319
|
+
get isPublishing(): boolean;
|
|
2320
|
+
get publishStreams(): PublishStreamInfo;
|
|
2321
|
+
get cameraTrack(): MediaStreamTrack | undefined;
|
|
2322
|
+
get screenTrack(): MediaStreamTrack | undefined;
|
|
2323
|
+
get audioTrack(): MediaStreamTrack | undefined;
|
|
2324
|
+
get hasCamera(): boolean;
|
|
2325
|
+
get hasMicrophone(): boolean;
|
|
2326
|
+
get hasScreenShare(): boolean;
|
|
2327
|
+
get hasCameraTrackInMS(): boolean;
|
|
2328
|
+
get hasCameraDualTrackInMS(): boolean;
|
|
2329
|
+
get hasScreenTrackInMS(): boolean;
|
|
2330
|
+
get hasAudioTrackInMS(): boolean;
|
|
2331
|
+
get cameraDirection(): string | undefined;
|
|
2332
|
+
get audioCaptureDisabled(): boolean;
|
|
2333
|
+
get cameraCaptureDisabled(): boolean;
|
|
2334
|
+
get publishLocalVideoStreamEnabled(): boolean;
|
|
2335
|
+
get publishLocalAudioStreamEnabled(): boolean;
|
|
2336
|
+
get publishLocalScreenStreamEnabled(): boolean;
|
|
2337
|
+
setPublishLocalAudioStreamEnabled(enable: boolean): void;
|
|
2338
|
+
setPublishLocalVideoStreamEnabled(enable: boolean): void;
|
|
2339
|
+
setPublishLocalScreenStreamEnabled(enable: boolean): void;
|
|
2340
|
+
initInfo(authInfo: AliRtcAuthInfo, pushStreamUrl: string): void;
|
|
2341
|
+
setVideoProfile(key: string, profile?: IProfile): Promise<void>;
|
|
2342
|
+
setVideoContentHint(hint: string): void;
|
|
2343
|
+
setScreenContentHint(hint: string): void;
|
|
2344
|
+
setAudioProfile(profileKey: AudioProfileKey): Promise<void>;
|
|
2345
|
+
setScreenProfile(key: string, profile?: IProfile): Promise<void>;
|
|
2346
|
+
setCameraDirection(direction: AliRtcCameraDirection): void;
|
|
2347
|
+
setCameraDeviceId(deviceId: string): void;
|
|
2348
|
+
muteLocalCamera(mute: boolean): void;
|
|
2349
|
+
muteLocalMic(mute: boolean): void;
|
|
2350
|
+
muteLocalScreen(mute: boolean): void;
|
|
2351
|
+
setMicrophoneDeviceId(deviceId: string): void;
|
|
2352
|
+
updatePubId(): void;
|
|
2353
|
+
clearPublishState(): void;
|
|
2354
|
+
/**
|
|
2355
|
+
* 销毁,停止推流
|
|
2356
|
+
* @returns {Promise<void>}
|
|
2357
|
+
*/
|
|
2358
|
+
clear(): Promise<void>;
|
|
2359
|
+
resetElement(element: HTMLVideoElement): void;
|
|
2360
|
+
setPreviewElement(previewParams: PreviewConfig): void;
|
|
2361
|
+
/**
|
|
2362
|
+
* 为本地预览设置渲染元素和视频流
|
|
2363
|
+
* @param {AliRtcLocalView} view 渲染元素,null 则为停止显示
|
|
2364
|
+
* @param {AliRtcVideoTrack} track 视频流类型
|
|
2365
|
+
*/
|
|
2366
|
+
setViewConfig(elements: null | HTMLVideoElement[], track: AliRtcVideoTrack): void;
|
|
2367
|
+
/**
|
|
2368
|
+
* 开启摄像头采集
|
|
2369
|
+
* @param params
|
|
2370
|
+
* @returns
|
|
2371
|
+
*/
|
|
2372
|
+
startCameraCapture(params: LocalStreamConfig): Promise<LocalStream | undefined>;
|
|
2373
|
+
/**
|
|
2374
|
+
* 关闭摄像头采集
|
|
2375
|
+
* @note 调用此接口后,入会后、离会再入会,采集设备保持关闭状态
|
|
2376
|
+
*/
|
|
2377
|
+
stopCameraCapture(): Promise<void>;
|
|
2378
|
+
/**
|
|
2379
|
+
* 关闭音频采集
|
|
2380
|
+
* @note 调用此接口后,入会后、离会再入会,采集设备保持关闭状态
|
|
2381
|
+
*/
|
|
2382
|
+
stopAudioCapture(): Promise<void>;
|
|
2383
|
+
/**
|
|
2384
|
+
* 预览本地流
|
|
2385
|
+
* @param {PreviewConfig} previewParams
|
|
2386
|
+
* @returns {Promise<MediaStream>}
|
|
2387
|
+
*/
|
|
2388
|
+
preview(previewParams: PreviewConfig): Promise<MediaStream | undefined>;
|
|
2389
|
+
/**
|
|
2390
|
+
* 在所有预览容器中预览当前流
|
|
2391
|
+
* @param {boolean} screen 是否指定预览辅流
|
|
2392
|
+
*/
|
|
2393
|
+
previewAll(previewAllParams?: PreviewAllConfig): Promise<void>;
|
|
2394
|
+
/**
|
|
2395
|
+
* 停止预览本地流
|
|
2396
|
+
*/
|
|
2397
|
+
stopPreview(previewParams?: StopPreviewConfig): void;
|
|
2398
|
+
/**
|
|
2399
|
+
* 恢复推流
|
|
2400
|
+
* @returns {Promise<void>}
|
|
2401
|
+
*/
|
|
2402
|
+
resumePublish(): Promise<void>;
|
|
2403
|
+
createLocalStream(params: LocalStreamConfig): Promise<LocalStream | undefined>;
|
|
2404
|
+
stopLocalStream(options: PublishOptions): Promise<void>;
|
|
2405
|
+
private compareAndPublish;
|
|
2406
|
+
/**
|
|
2407
|
+
* 开始推流
|
|
2408
|
+
* @param isResume 是否是恢复推流
|
|
2409
|
+
* @returns
|
|
2410
|
+
*/
|
|
2411
|
+
startPublish(isResume?: boolean): Promise<void>;
|
|
2412
|
+
/**
|
|
2413
|
+
* 对比本地流和正在推流,进行推流更新
|
|
2414
|
+
* @param isResume 是否是恢复推流
|
|
2415
|
+
*/
|
|
2416
|
+
publishUpdate(): Promise<PublishInfo | undefined>;
|
|
2417
|
+
private syncPublishToRoomServer;
|
|
2418
|
+
private refreshPushStreamUrl;
|
|
2419
|
+
/**
|
|
2420
|
+
* 推流,用于 rts subscribe/publish 被调用后,此时 DataChannel 已存在
|
|
2421
|
+
* @param {LocalStream} stream
|
|
2422
|
+
* @returns {Promise<PublishInfo>}
|
|
2423
|
+
*/
|
|
2424
|
+
publishAdd(stream: LocalStream, extra: PublishExtraParams, isResume?: boolean, retryTimes?: number): Promise<PublishInfo>;
|
|
2425
|
+
/**
|
|
2426
|
+
* 替换推流 Track(仅限于替换已存在的 Track 类型)
|
|
2427
|
+
* @param {LocalStream} stream
|
|
2428
|
+
* @returns {Promise<PublishInfo>}
|
|
2429
|
+
*/
|
|
2430
|
+
publishReplace(stream: LocalStream, extra?: PublishExtraParams): Promise<PublishInfo>;
|
|
2431
|
+
/**
|
|
2432
|
+
* 停止推某些轨,不销毁 DataChannel 和 LocalStream,用于非销毁场景
|
|
2433
|
+
* @param {PublishOptions} options
|
|
2434
|
+
* @returns {Promise<PublishInfo>}
|
|
2435
|
+
*/
|
|
2436
|
+
publishDeleteTracks(options: PublishOptions): Promise<PublishInfo>;
|
|
2437
|
+
/**
|
|
2438
|
+
* 停止推流,不销毁 LocalStream,用于非销毁场景
|
|
2439
|
+
* @returns {Promise<PublishInfo>}
|
|
2440
|
+
*/
|
|
2441
|
+
publishStop(): Promise<PublishInfo>;
|
|
2442
|
+
/**
|
|
2443
|
+
* 停止推流,销毁 DataChannel,用于销毁的场景
|
|
2444
|
+
* @returns {Promise<PublishInfo>}
|
|
2445
|
+
*/
|
|
2446
|
+
unPublish(): Promise<PublishInfo>;
|
|
2447
|
+
/**
|
|
2448
|
+
* 事件通知本地的设备使用状态
|
|
2449
|
+
*/
|
|
2450
|
+
reportSelfDeviceStatus(): void;
|
|
2451
|
+
/**
|
|
2452
|
+
* 从localStream 中获取当前的设备状态
|
|
2453
|
+
* @returns {string}
|
|
2454
|
+
*/
|
|
2455
|
+
private getDeviceStatus;
|
|
2456
|
+
private onTrackEnd;
|
|
2457
|
+
private resetPreviewElements;
|
|
2458
|
+
private resetSecondayPreviewElements;
|
|
2459
|
+
/**
|
|
2460
|
+
* 停止本地流数据采集
|
|
2461
|
+
*/
|
|
2462
|
+
private stopStreamMonitor;
|
|
2463
|
+
/**
|
|
2464
|
+
* 清除本地流
|
|
2465
|
+
* @returns {void}
|
|
2466
|
+
*/
|
|
2467
|
+
clearStream(): void;
|
|
2468
|
+
/**
|
|
2469
|
+
* 获取当前使用的摄像头 deviceId
|
|
2470
|
+
* @returns {string | undefined}
|
|
2471
|
+
*/
|
|
2472
|
+
getCurrentCameraDeviceId(): string | undefined;
|
|
2473
|
+
/**
|
|
2474
|
+
* 获取当前使用的摄像头 deviceId
|
|
2475
|
+
* @returns {string | undefined}
|
|
2476
|
+
*/
|
|
2477
|
+
getCurrentMicDeviceId(): string | undefined;
|
|
2478
|
+
enableAudioVolumeIndication(interval: number): void;
|
|
2479
|
+
sendSEI(message: ArrayBuffer, repeatCount: number, payloadType: number): Promise<void>;
|
|
2480
|
+
getStats(): Promise<{
|
|
2481
|
+
audio: AliRtcLocalAudioStats[];
|
|
2482
|
+
video: AliRtcLocalVideoStats[];
|
|
2483
|
+
}>;
|
|
2484
|
+
}
|
|
2485
|
+
|
|
2486
|
+
declare interface LocalUserConfig {
|
|
2487
|
+
rtsManager: RtsManager;
|
|
2488
|
+
localStreamManager: LocalStreamManager;
|
|
2489
|
+
reporter: Reporter;
|
|
2490
|
+
webTrackingClient: WebTrackingClient;
|
|
2491
|
+
signalingManager: SignalingManager;
|
|
2492
|
+
pluginManager: PluginManager;
|
|
2493
|
+
audioVolumeIndicationInterval: number;
|
|
2494
|
+
}
|
|
2495
|
+
|
|
2496
|
+
/**
|
|
2497
|
+
* 日志埋点类,调用LogReporter进行日志埋点
|
|
2498
|
+
* 在入会之前,会将埋点缓存,入会后以每200ms一条的速度将缓存的埋点按顺序上报
|
|
2499
|
+
*/
|
|
2500
|
+
declare class LogClient {
|
|
2501
|
+
protected reporter?: LogReporter;
|
|
2502
|
+
protected param?: any;
|
|
2503
|
+
protected msgCacheArr: any[];
|
|
2504
|
+
protected index: number;
|
|
2505
|
+
constructor();
|
|
2506
|
+
start(info: AliRtcAuthInfo): void;
|
|
2507
|
+
/**
|
|
2508
|
+
* 断开连接
|
|
2509
|
+
*/
|
|
2510
|
+
stop(): void;
|
|
2511
|
+
/**
|
|
2512
|
+
* 发送一条日志
|
|
2513
|
+
* @param {any} log
|
|
2514
|
+
*/
|
|
2515
|
+
sendReport(log: any): void;
|
|
2516
|
+
/**
|
|
2517
|
+
* 初始化公共参数
|
|
2518
|
+
*/
|
|
2519
|
+
protected initParam(info: AliRtcAuthInfo): void;
|
|
2520
|
+
/**
|
|
2521
|
+
* 通过LogReporter发送日志
|
|
2522
|
+
* @param log
|
|
2523
|
+
*/
|
|
2524
|
+
protected realSendReport(log: any): void;
|
|
2525
|
+
}
|
|
2526
|
+
|
|
2527
|
+
declare interface MediaTrackInfo {
|
|
2528
|
+
ssrc: string;
|
|
2529
|
+
msid: string;
|
|
2530
|
+
red: number;
|
|
2531
|
+
codec: CodecType;
|
|
2532
|
+
sample?: number;
|
|
2533
|
+
pt: number;
|
|
2534
|
+
type?: CmdType;
|
|
2535
|
+
}
|
|
2536
|
+
|
|
2537
|
+
declare enum MPU_TASK_TRANSACTION_TYPE {
|
|
2538
|
+
MPU_TASK_TRANSACTION_START = 0,
|
|
2539
|
+
MPU_TASK_TRANSACTION_UPDATE = 1,
|
|
2540
|
+
MPU_TASK_TRANSACTION_STOP = 2,
|
|
2541
|
+
MPU_TASK_TRANSACTION_LIST = 3,
|
|
2542
|
+
MPU_TASK_TRANSACTION_POLLING = 4,
|
|
2543
|
+
MPU_TASK_TRANSACTION_ACKNOWLEDGE = 5,
|
|
2544
|
+
MPU_TASK_TRANSACTION_END = 6
|
|
2545
|
+
}
|
|
2546
|
+
|
|
2547
|
+
declare enum MsidType {
|
|
2548
|
+
Audio = "sophon_audio",
|
|
2549
|
+
VideoLarge = "sophon_video_camera_large",
|
|
2550
|
+
VideoSmall = "sophon_video_camera_small",
|
|
2551
|
+
Screen = "sophon_video_screen_share"
|
|
2552
|
+
}
|
|
2553
|
+
|
|
2554
|
+
declare class PluginManager extends default_2<PluginManagerListener> {
|
|
2555
|
+
private plugins;
|
|
2556
|
+
add(plugin: AliRtcPlugin, options: any): void;
|
|
2557
|
+
remove(name: string): void;
|
|
2558
|
+
get(name: string): AliRtcPlugin | undefined;
|
|
2559
|
+
has(name: string): boolean;
|
|
2560
|
+
getAll(): AliRtcPlugin[];
|
|
2561
|
+
}
|
|
2562
|
+
|
|
2563
|
+
declare interface PluginManagerListener {
|
|
2564
|
+
added: (plugin: AliRtcPlugin) => void;
|
|
2565
|
+
removed: (plugin: AliRtcPlugin) => void;
|
|
2566
|
+
updated: (plugin: AliRtcPlugin) => void;
|
|
2567
|
+
}
|
|
2568
|
+
|
|
2569
|
+
declare interface PreviewAllConfig {
|
|
2570
|
+
primary?: boolean;
|
|
2571
|
+
screen?: boolean;
|
|
2572
|
+
}
|
|
2573
|
+
|
|
2574
|
+
declare interface PreviewConfig {
|
|
2575
|
+
videoElement: HTMLVideoElement;
|
|
2576
|
+
screen?: boolean;
|
|
2577
|
+
}
|
|
2578
|
+
|
|
2579
|
+
declare interface PublishExtraParams {
|
|
2580
|
+
vMsid?: string;
|
|
2581
|
+
aMsid?: string;
|
|
2582
|
+
isVideoSmall?: boolean;
|
|
2583
|
+
isScreen?: boolean;
|
|
2584
|
+
isAudio?: boolean;
|
|
2585
|
+
}
|
|
2586
|
+
|
|
2587
|
+
declare interface PublishInfo {
|
|
2588
|
+
userid: string;
|
|
2589
|
+
sessionid: string;
|
|
2590
|
+
displayname: string;
|
|
2591
|
+
pubid?: string;
|
|
2592
|
+
resume?: boolean;
|
|
2593
|
+
subscribe: {
|
|
2594
|
+
signal: string;
|
|
2595
|
+
pullstreamurl: string;
|
|
2596
|
+
};
|
|
2597
|
+
callid: string;
|
|
2598
|
+
tracks: TrackInfo[];
|
|
2599
|
+
traceid?: string;
|
|
2600
|
+
signaltid?: string;
|
|
2601
|
+
}
|
|
2602
|
+
|
|
2603
|
+
declare type PublishOptions = StreamOptions & {
|
|
2604
|
+
vMsid?: string;
|
|
2605
|
+
};
|
|
2606
|
+
|
|
2607
|
+
declare interface PublishStreamInfo {
|
|
2608
|
+
audio?: LocalStream;
|
|
2609
|
+
video?: LocalStream;
|
|
2610
|
+
videoSmall?: LocalStream;
|
|
2611
|
+
screen?: LocalStream;
|
|
2612
|
+
videoProfile?: LocalProfileManager;
|
|
2613
|
+
screenProfile?: LocalProfileManager;
|
|
2614
|
+
}
|
|
2615
|
+
|
|
2616
|
+
declare interface PublishUser {
|
|
2617
|
+
callid: string;
|
|
2618
|
+
clientrole?: string;
|
|
2619
|
+
displayname: string;
|
|
2620
|
+
subscribe?: {
|
|
2621
|
+
pullstreamurl: string;
|
|
2622
|
+
};
|
|
2623
|
+
pubid?: string;
|
|
2624
|
+
tracks?: TrackInfo[];
|
|
2625
|
+
userid: string;
|
|
2626
|
+
}
|
|
2627
|
+
|
|
2628
|
+
declare interface RefreshInfo {
|
|
2629
|
+
pushstreamurl?: string;
|
|
2630
|
+
users?: RefreshUser[];
|
|
2631
|
+
}
|
|
2632
|
+
|
|
2633
|
+
declare interface RefreshUrlResult extends SignalingResult {
|
|
2634
|
+
pushstreamurl?: string;
|
|
2635
|
+
users?: RefreshUser[];
|
|
2636
|
+
}
|
|
2637
|
+
|
|
2638
|
+
declare interface RefreshUser {
|
|
2639
|
+
userid: string;
|
|
2640
|
+
subscribe: {
|
|
2641
|
+
pullstreamurl: string;
|
|
2642
|
+
};
|
|
2643
|
+
}
|
|
2644
|
+
|
|
2645
|
+
declare interface RemoteMediaTrackInfo extends MediaTrackInfo {
|
|
2646
|
+
subscribed?: boolean;
|
|
2647
|
+
}
|
|
2648
|
+
|
|
2649
|
+
declare class RemoteStreamInfo extends default_2<StreamListener> {
|
|
2650
|
+
/**
|
|
2651
|
+
* @ignore
|
|
2652
|
+
*/
|
|
2653
|
+
static logName: string;
|
|
2654
|
+
protected audioInfo: RemoteMediaTrackInfo;
|
|
2655
|
+
protected videoLargeInfo: RemoteMediaTrackInfo;
|
|
2656
|
+
protected videoSmallInfo: RemoteMediaTrackInfo;
|
|
2657
|
+
protected screenInfo: RemoteMediaTrackInfo;
|
|
2658
|
+
protected audioVolume: number;
|
|
2659
|
+
protected audioMuted: boolean;
|
|
2660
|
+
protected userStatus?: DeviceStatus;
|
|
2661
|
+
constructor();
|
|
2662
|
+
/**
|
|
2663
|
+
* 远端流音频轨道信息
|
|
2664
|
+
* @returns
|
|
2665
|
+
*/
|
|
2666
|
+
getAudioInfo(): RemoteMediaTrackInfo;
|
|
2667
|
+
/**
|
|
2668
|
+
* 远端流视频轨道信息
|
|
2669
|
+
* @returns
|
|
2670
|
+
*/
|
|
2671
|
+
getVideoSmallInfo(): RemoteMediaTrackInfo;
|
|
2672
|
+
/**
|
|
2673
|
+
* 远端流视频轨道信息
|
|
2674
|
+
* @returns
|
|
2675
|
+
*/
|
|
2676
|
+
getVideoLargeInfo(): RemoteMediaTrackInfo;
|
|
2677
|
+
/**
|
|
2678
|
+
* 远端流屏幕共享轨道信息
|
|
2679
|
+
* @returns
|
|
2680
|
+
*/
|
|
2681
|
+
getScreenInfo(): RemoteMediaTrackInfo;
|
|
2682
|
+
/**
|
|
2683
|
+
* 远端流是否包含音频轨道
|
|
2684
|
+
* @returns
|
|
2685
|
+
*/
|
|
2686
|
+
get hasAudio(): boolean;
|
|
2687
|
+
/**
|
|
2688
|
+
* 远端流是否包含视频轨道
|
|
2689
|
+
* @returns
|
|
2690
|
+
*/
|
|
2691
|
+
get hasVideo(): boolean;
|
|
2692
|
+
/**
|
|
2693
|
+
* 远端流是否包含视频大流轨道
|
|
2694
|
+
* @returns
|
|
2695
|
+
*/
|
|
2696
|
+
get hasVideoLarge(): boolean;
|
|
2697
|
+
/**
|
|
2698
|
+
* 远端流是否包含视频小流轨道
|
|
2699
|
+
* @returns
|
|
2700
|
+
*/
|
|
2701
|
+
get hasVideoSmall(): boolean;
|
|
2702
|
+
/**
|
|
2703
|
+
* 远端流是否包含屏幕共享轨道
|
|
2704
|
+
* @returns
|
|
2705
|
+
*/
|
|
2706
|
+
get hasScreen(): boolean;
|
|
2707
|
+
/**
|
|
2708
|
+
* 是否订阅远端流音频轨道
|
|
2709
|
+
* @returns
|
|
2710
|
+
*/
|
|
2711
|
+
get isAudioSubscribing(): boolean;
|
|
2712
|
+
/**
|
|
2713
|
+
* 是否订阅远端流视频轨道
|
|
2714
|
+
* @returns
|
|
2715
|
+
*/
|
|
2716
|
+
get isVideoSubscribing(): boolean;
|
|
2717
|
+
/**
|
|
2718
|
+
* 是否订阅远端流视频大流轨道
|
|
2719
|
+
* @returns
|
|
2720
|
+
*/
|
|
2721
|
+
get isVideoLargeSubscribing(): boolean;
|
|
2722
|
+
/**
|
|
2723
|
+
* 是否订阅远端流视频小流轨道
|
|
2724
|
+
* @returns
|
|
2725
|
+
*/
|
|
2726
|
+
get isVideoSmallSubscribing(): boolean;
|
|
2727
|
+
/**
|
|
2728
|
+
* 是否订阅远端流屏幕共享轨道
|
|
2729
|
+
* @returns
|
|
2730
|
+
*/
|
|
2731
|
+
get isScreenSubscribing(): boolean;
|
|
2732
|
+
get audioCodec(): CodecType;
|
|
2733
|
+
get videoCodec(): CodecType;
|
|
2734
|
+
get audioTrackInfo(): AliRtcAudioTrack;
|
|
2735
|
+
get videoTrackInfo(): AliRtcVideoTrack;
|
|
2736
|
+
updateTracks(tracks?: TrackInfo[]): UpdateTracksResult;
|
|
2737
|
+
protected updateRemoteTrackSsrc(audioSsrc: string, videoLargeSsrc: string, videoSmallSsrc: string, screenSsrc: string): void;
|
|
2738
|
+
updateRemoteTrackSubState(option: SubscribeOptions): any;
|
|
2739
|
+
/**
|
|
2740
|
+
* 更新远端用户设备状态
|
|
2741
|
+
* @param status
|
|
2742
|
+
* @returns {boolean} 状态改变返回true,否则返回false
|
|
2743
|
+
*/
|
|
2744
|
+
updateRemoteUserDeviceStatus(status: string): boolean;
|
|
2745
|
+
}
|
|
2746
|
+
|
|
2747
|
+
declare interface RemoteSubscribeOptions {
|
|
2748
|
+
remoteUser: RemoteUser;
|
|
2749
|
+
options: SubscribeOptions;
|
|
2750
|
+
}
|
|
2751
|
+
|
|
2752
|
+
declare class RemoteUser extends User {
|
|
2753
|
+
/**
|
|
2754
|
+
* @ignore
|
|
2755
|
+
*/
|
|
2756
|
+
static logName: string;
|
|
2757
|
+
remoteCallid: string;
|
|
2758
|
+
remoteUserInfo: AliRtcRemoteUserInfo;
|
|
2759
|
+
protected localUserId: string;
|
|
2760
|
+
protected lastPubId: string;
|
|
2761
|
+
protected stream?: RemoteStream;
|
|
2762
|
+
protected screenStream?: RemoteStream;
|
|
2763
|
+
private viewMap;
|
|
2764
|
+
private audioTrack?;
|
|
2765
|
+
private audioElement?;
|
|
2766
|
+
protected subscribed: boolean;
|
|
2767
|
+
protected mediaStream?: MediaStream;
|
|
2768
|
+
protected secondaryMediaStream?: MediaStream;
|
|
2769
|
+
protected prevSubConfig?: SubConfig;
|
|
2770
|
+
protected signalingManager: SignalingManager;
|
|
2771
|
+
protected reporter: Reporter;
|
|
2772
|
+
protected webTrackingClient: WebTrackingClient;
|
|
2773
|
+
private wantSubAudio;
|
|
2774
|
+
private wantSubVideo;
|
|
2775
|
+
private wantSubScreen;
|
|
2776
|
+
private defaultVideoStreamType;
|
|
2777
|
+
private audioMuted;
|
|
2778
|
+
private audioSubState;
|
|
2779
|
+
private videoSubState;
|
|
2780
|
+
private videoLargeSubState;
|
|
2781
|
+
private videoSmallSubState;
|
|
2782
|
+
private screenSubState;
|
|
2783
|
+
streamInfo: RemoteStreamInfo;
|
|
2784
|
+
streamUrl: string;
|
|
2785
|
+
constructor(config: RemoteUserConfig);
|
|
2786
|
+
isWantSubAudio(): boolean;
|
|
2787
|
+
setWantSubAudio(value: boolean): void;
|
|
2788
|
+
isWantSubVideo(): boolean;
|
|
2789
|
+
setWantSubVideo(value: boolean): void;
|
|
2790
|
+
isWantSubScreen(): boolean;
|
|
2791
|
+
setWantSubScreen(value: boolean): void;
|
|
2792
|
+
setRemoteDefaultVideoStreamType(type: AliRtcVideoStreamType): void;
|
|
2793
|
+
setAudioMuted(value: boolean): void;
|
|
2794
|
+
getAudioMuted(): boolean;
|
|
2795
|
+
get hasAudioTrack(): boolean;
|
|
2796
|
+
get hasVideoTrack(): boolean;
|
|
2797
|
+
get hasVideoLargeTrack(): boolean;
|
|
2798
|
+
get hasVideoSmallTrack(): boolean;
|
|
2799
|
+
get hasScreenTrack(): boolean;
|
|
2800
|
+
get isAudioSubscribing(): boolean;
|
|
2801
|
+
get isVideoSubscribing(): boolean;
|
|
2802
|
+
get isVideoLargeSubscribing(): boolean;
|
|
2803
|
+
get isVideoSmallSubscribing(): boolean;
|
|
2804
|
+
get isScreenSubscribing(): boolean;
|
|
2805
|
+
get audioEnabled(): boolean;
|
|
2806
|
+
get videoEnabled(): boolean;
|
|
2807
|
+
get screenEnabled(): boolean;
|
|
2808
|
+
get getAudioTrack(): MediaStreamAudioTrack | undefined;
|
|
2809
|
+
get getCameraStream(): RemoteStream | undefined;
|
|
2810
|
+
get getScreenStream(): RemoteStream | undefined;
|
|
2811
|
+
setViewConfig(view: AliRtcLocalView, track: AliRtcVideoTrack): void;
|
|
2812
|
+
/**
|
|
2813
|
+
* 销毁
|
|
2814
|
+
* @returns {Promise<void>}
|
|
2815
|
+
*/
|
|
2816
|
+
clear(needStopSub?: boolean): Promise<void>;
|
|
2817
|
+
/**
|
|
2818
|
+
* 更新远端用户的设备状态
|
|
2819
|
+
* @param {string} status
|
|
2820
|
+
* @returns {void}
|
|
2821
|
+
*/
|
|
2822
|
+
updateRemoteUserDeviceStatus(status: string): void;
|
|
2823
|
+
/**
|
|
2824
|
+
* 更新远端用户的推流状态,已经停止推流的 tracks 要 delete,或者整体 stop
|
|
2825
|
+
* @param {string} callid
|
|
2826
|
+
* @param {string} pullStreamUrl
|
|
2827
|
+
* @param {TrackInfo[]} tracks
|
|
2828
|
+
* @returns {Promise<TrackChangeState>}
|
|
2829
|
+
*/
|
|
2830
|
+
updateRemoteTracks(callid: string, pullStreamUrl: string, _pubid: string, tracks?: TrackInfo[]): Promise<UpdateTracksResult>;
|
|
2831
|
+
/**
|
|
2832
|
+
* 订阅远端流
|
|
2833
|
+
* @param {SubscribeOptions} options
|
|
2834
|
+
* @returns {Promise<void>} 返回可播放的 MediaStream,可能为空。如果同时订阅了主流和辅流,只会返回主流对应的 MediaStream
|
|
2835
|
+
*/
|
|
2836
|
+
subscribe(options?: SubscribeOptions): Promise<void>;
|
|
2837
|
+
/**
|
|
2838
|
+
* 订阅远端流
|
|
2839
|
+
* @param {SubscribeOptions} options 订阅配置
|
|
2840
|
+
* @param {boolean} secondary 是否订阅辅流
|
|
2841
|
+
* @returns {Promise<SubscribeResult>}
|
|
2842
|
+
*/
|
|
2843
|
+
private subscribeProxy;
|
|
2844
|
+
/**
|
|
2845
|
+
* 移除对某些轨道的订阅
|
|
2846
|
+
* @param {UnSubscribeOptions} options 取消订阅轨道配置
|
|
2847
|
+
* @returns {Promise<SubscribeResult>}
|
|
2848
|
+
*/
|
|
2849
|
+
private subscribeDeleteTracks;
|
|
2850
|
+
/**
|
|
2851
|
+
* 移除对某些轨道的订阅
|
|
2852
|
+
* @param {Partial<ISubConfigItem>} deleteTrack 删除订阅配置
|
|
2853
|
+
* @returns {Promise<SubscribeResult>}
|
|
2854
|
+
*/
|
|
2855
|
+
private subscribeDeleteProxy;
|
|
2856
|
+
/**
|
|
2857
|
+
* 用保存的订阅参数恢复订阅
|
|
2858
|
+
*/
|
|
2859
|
+
restore(): void;
|
|
2860
|
+
resumeAudio(): Promise<void | undefined>;
|
|
2861
|
+
resumeVideo(videoTrack?: AliRtcVideoTrack): Promise<void>;
|
|
2862
|
+
resumePlay(): void;
|
|
2863
|
+
/**
|
|
2864
|
+
* 停止订阅远端流
|
|
2865
|
+
* @param {string} userId
|
|
2866
|
+
* @param {UnSubscribeOptions} options
|
|
2867
|
+
* @returns {Promise<void>}
|
|
2868
|
+
*/
|
|
2869
|
+
stopSubscribe(options?: UnSubscribeOptions): Promise<void>;
|
|
2870
|
+
/**
|
|
2871
|
+
* 停止对某个拉流 URL 的订阅
|
|
2872
|
+
* @param {url} pullStreamUrl
|
|
2873
|
+
* @returns {Promise<SubscribeResult>}
|
|
2874
|
+
*/
|
|
2875
|
+
private doStopSubscribe;
|
|
2876
|
+
private updateStream;
|
|
2877
|
+
private updateScreenStream;
|
|
2878
|
+
private clearStream;
|
|
2879
|
+
private clearScreenStream;
|
|
2880
|
+
/**
|
|
2881
|
+
* 尝试更新订阅
|
|
2882
|
+
* 1. 需要新增订阅的情况:想要订阅 & 没有正在订阅 & 远端有流
|
|
2883
|
+
*/
|
|
2884
|
+
updateSubscribe(): {
|
|
2885
|
+
addOption: SubscribeOptions;
|
|
2886
|
+
deleteOption: SubscribeOptions;
|
|
2887
|
+
};
|
|
2888
|
+
private handleAutoPlayFailed;
|
|
2889
|
+
private handleVideoPlayFailded;
|
|
2890
|
+
private playAudio;
|
|
2891
|
+
private stopPlayAudio;
|
|
2892
|
+
playAll(isScreen?: boolean): void;
|
|
2893
|
+
/**
|
|
2894
|
+
* 播放
|
|
2895
|
+
*/
|
|
2896
|
+
private play;
|
|
2897
|
+
stopPlayAll(isScreen?: boolean): void;
|
|
2898
|
+
/**
|
|
2899
|
+
* 是否开启声音
|
|
2900
|
+
* @param {boolean} enable
|
|
2901
|
+
* @returns {void}
|
|
2902
|
+
*/
|
|
2903
|
+
toggleAudio(enable?: boolean): void;
|
|
2904
|
+
/**
|
|
2905
|
+
* 是否开启画面
|
|
2906
|
+
* @param {boolean} enable
|
|
2907
|
+
* @returns {void}
|
|
2908
|
+
*/
|
|
2909
|
+
toggleVideo(enable?: boolean): void;
|
|
2910
|
+
/**
|
|
2911
|
+
* 是否开启画面
|
|
2912
|
+
* @param {boolean} enable
|
|
2913
|
+
* @returns {void}
|
|
2914
|
+
*/
|
|
2915
|
+
toggleScreen(enable?: boolean): void;
|
|
2916
|
+
getStats(): Promise<{
|
|
2917
|
+
audio: AliRtcRemoteAudioStats[];
|
|
2918
|
+
video: AliRtcRemoteVideoStats[];
|
|
2919
|
+
}>;
|
|
2920
|
+
/**
|
|
2921
|
+
* 开启音量检测
|
|
2922
|
+
* @param {number} interval 时间间隔
|
|
2923
|
+
*/
|
|
2924
|
+
enableAudioVolumeIndication(interval: number): void;
|
|
2925
|
+
}
|
|
2926
|
+
|
|
2927
|
+
declare interface RemoteUserConfig {
|
|
2928
|
+
userId: string;
|
|
2929
|
+
displayName: string;
|
|
2930
|
+
rtsManager: RtsManager;
|
|
2931
|
+
usersViewMap: {
|
|
2932
|
+
[key: string]: RemoteUserViewMap;
|
|
2933
|
+
};
|
|
2934
|
+
reporter: Reporter;
|
|
2935
|
+
webTrackingClient: WebTrackingClient;
|
|
2936
|
+
signalingManager: SignalingManager;
|
|
2937
|
+
localUserId: string;
|
|
2938
|
+
audioVolumeIndicationInterval: number;
|
|
2939
|
+
}
|
|
2940
|
+
|
|
2941
|
+
declare interface RemoteUserMap {
|
|
2942
|
+
[userId: string]: RemoteUser;
|
|
2943
|
+
}
|
|
2944
|
+
|
|
2945
|
+
declare interface RemoteUserStatus {
|
|
2946
|
+
userid: string;
|
|
2947
|
+
status: string;
|
|
2948
|
+
}
|
|
2949
|
+
|
|
2950
|
+
declare interface RemoteUserViewMap {
|
|
2951
|
+
cameraViews: HTMLVideoElement[];
|
|
2952
|
+
screenViews: HTMLVideoElement[];
|
|
2953
|
+
}
|
|
2954
|
+
|
|
2955
|
+
/**
|
|
2956
|
+
* 日志埋点类
|
|
2957
|
+
* 每个埋点暴露对应的接口
|
|
2958
|
+
*/
|
|
2959
|
+
declare class Reporter {
|
|
2960
|
+
protected logClient: LogClient;
|
|
2961
|
+
constructor();
|
|
2962
|
+
/**
|
|
2963
|
+
* 开始建立连接
|
|
2964
|
+
* @param authInfo
|
|
2965
|
+
*/
|
|
2966
|
+
start(info: AliRtcAuthInfo): void;
|
|
2967
|
+
/**
|
|
2968
|
+
* 断开连接
|
|
2969
|
+
*/
|
|
2970
|
+
stop(): void;
|
|
2971
|
+
/**
|
|
2972
|
+
* 加入房间成功埋点
|
|
2973
|
+
* @param {number} joinTime
|
|
2974
|
+
* @param {number} result
|
|
2975
|
+
* @param {string} tid
|
|
2976
|
+
*/
|
|
2977
|
+
reportJoin(joinTime: number, result: number, tid: string): void;
|
|
2978
|
+
/**
|
|
2979
|
+
* 调用 client.join 入会上报事件及用户等信息
|
|
2980
|
+
* @param {string} usrid 用户id
|
|
2981
|
+
* @param {string} usrn 用户名
|
|
2982
|
+
* @param {string} channelid 频道id
|
|
2983
|
+
*/
|
|
2984
|
+
reportJoinInvoked(usrid: string, usrn: string, channelid: string): void;
|
|
2985
|
+
/**
|
|
2986
|
+
* 上报ice状态变化
|
|
2987
|
+
* @param {string} calid
|
|
2988
|
+
* @param {string} icestate
|
|
2989
|
+
* @param {number} evt_seq
|
|
2990
|
+
*/
|
|
2991
|
+
reportIceState(calid: string, icestate: string, evt_seq: number): void;
|
|
2992
|
+
/**
|
|
2993
|
+
* 用户离开频道事件埋点
|
|
2994
|
+
* @param {number} leaveTime
|
|
2995
|
+
* @param {number} result
|
|
2996
|
+
* @param {string} tid
|
|
2997
|
+
*/
|
|
2998
|
+
reportLeave(leaveTime: number, result: number, tid: string): void;
|
|
2999
|
+
/**
|
|
3000
|
+
* 调用 client.leave 离会上报事件
|
|
3001
|
+
*/
|
|
3002
|
+
reportLeaveInvoked(): void;
|
|
3003
|
+
/**
|
|
3004
|
+
* 推流事件上报
|
|
3005
|
+
* @param {string} callid
|
|
3006
|
+
* @param {boolean} isLargeVideo
|
|
3007
|
+
* @param {boolean} isSmallVideo
|
|
3008
|
+
* @param {boolean} isScreenShare
|
|
3009
|
+
* @param {boolean} isAudio
|
|
3010
|
+
* @param {number} result
|
|
3011
|
+
* @param {string} tid
|
|
3012
|
+
* @param {number} pubTime
|
|
3013
|
+
*/
|
|
3014
|
+
reportPublish(callid: string, isLargeVideo: boolean, isSmallVideo: boolean, isScreenShare: boolean, isAudio: boolean, result: number | undefined, tid: string, pubTime: number): void;
|
|
3015
|
+
/**
|
|
3016
|
+
* 调用 client.publish 推流上报事件及流轨道等信息
|
|
3017
|
+
* @param {boolean} [isLargeVideo] 是否推视频大流
|
|
3018
|
+
* @param {boolean} [isSmallVideo] 是否推视频小流
|
|
3019
|
+
* @param {boolean} [isScreenShare] 是否推屏幕流
|
|
3020
|
+
* @param {boolean} [isAudio] 是否推音频流
|
|
3021
|
+
*/
|
|
3022
|
+
reportPublishInvoked(isLargeVideo?: boolean, isSmallVideo?: boolean, isScreenShare?: boolean, isAudio?: boolean): void;
|
|
3023
|
+
/**
|
|
3024
|
+
* republish事件上报
|
|
3025
|
+
* @param callid
|
|
3026
|
+
* @param islarge 是否推大流
|
|
3027
|
+
* @param isScreenShare 是否推屏幕流
|
|
3028
|
+
* @param isAudio 是否推音频流
|
|
3029
|
+
* @param result 推流结果(0成功,非0失败)
|
|
3030
|
+
* @param tid tid
|
|
3031
|
+
* @param repubTime repub耗时
|
|
3032
|
+
* @param msg 详情描述
|
|
3033
|
+
*/
|
|
3034
|
+
reportRepublish(callid: string, isLarge: boolean, isScreen: boolean, isAudio: boolean, result: number, tid: string, repubTime: number, msg: string): void;
|
|
3035
|
+
/**
|
|
3036
|
+
* 用户调用LocalStream.addTrack 或者 LocalStream.removeTrack
|
|
3037
|
+
* @param callid
|
|
3038
|
+
* @param trackType
|
|
3039
|
+
* @param state -1: remove 0: replace 1: add
|
|
3040
|
+
*/
|
|
3041
|
+
reportRepublishInvoked(callid: string, trackType: string, state: 0 | 1 | -1): void;
|
|
3042
|
+
/**
|
|
3043
|
+
* 停止推流事件上报
|
|
3044
|
+
* @param {string} callid
|
|
3045
|
+
* @param {number} unpubTime
|
|
3046
|
+
* @param {number} result
|
|
3047
|
+
* @param {string} tid
|
|
3048
|
+
*/
|
|
3049
|
+
reportUnpublish(callid: string, unpubTime: number, result: number, tid: string): void;
|
|
3050
|
+
/**
|
|
3051
|
+
* 调用 client.unpublish 停止推流上报事件
|
|
3052
|
+
*/
|
|
3053
|
+
reportUnpublishInvoked(): void;
|
|
3054
|
+
/**
|
|
3055
|
+
* 订阅事件埋点
|
|
3056
|
+
* @param {string} callid
|
|
3057
|
+
* @param {string} remoteid
|
|
3058
|
+
* @param {boolean} isLargeVideo
|
|
3059
|
+
* @param {boolean} isSmallVideo
|
|
3060
|
+
* @param {boolean} isScreenShare
|
|
3061
|
+
* @param {boolean} isAudio
|
|
3062
|
+
* @param {number} result
|
|
3063
|
+
* @param {string} tid
|
|
3064
|
+
* @param {number} subTime
|
|
3065
|
+
*/
|
|
3066
|
+
reportSubscribe(callid: string, remoteid: string, isLargeVideo: boolean, isSmallVideo: boolean, isScreenShare: boolean, isAudio: boolean, result: number, tid: string, subTime: number, usrid: string): void;
|
|
3067
|
+
/**
|
|
3068
|
+
* 调用 client.subscribe 拉流上报事件及用户信息、流轨道等信息
|
|
3069
|
+
* @param {string} rmtid 远程流所属的用户id
|
|
3070
|
+
* @param {boolean} [isLargeVideo] 是否推视频大流
|
|
3071
|
+
* @param {boolean} [isSmallVideo] 是否推视频小流
|
|
3072
|
+
* @param {boolean} [isScreenShare] 是否推屏幕流
|
|
3073
|
+
* @param {boolean} [isAudio] 是否推音频流
|
|
3074
|
+
*/
|
|
3075
|
+
reportSubscribeInvoked(rmtid?: string, isLargeVideo?: boolean, isSmallVideo?: boolean, isScreenShare?: boolean, isAudio?: boolean): void;
|
|
3076
|
+
/**
|
|
3077
|
+
* 停止订阅事件埋点
|
|
3078
|
+
* @param {string} callid
|
|
3079
|
+
* @param {string} remoteid
|
|
3080
|
+
* @param {number} unsubTime
|
|
3081
|
+
* @param {number} result
|
|
3082
|
+
* @param {string} tid
|
|
3083
|
+
*/
|
|
3084
|
+
reportUnsubscribe(callid: string, remoteid: string, unsubTime: number, result: number, tid: string): void;
|
|
3085
|
+
/**
|
|
3086
|
+
* 调用 client.unsubscribe 停止拉流上报事件
|
|
3087
|
+
* @param {string} rmtid 远程流所属的用户id
|
|
3088
|
+
*/
|
|
3089
|
+
reportUnsubscribeInvoked(rmtid?: string): void;
|
|
3090
|
+
/**
|
|
3091
|
+
* 更新角色埋点
|
|
3092
|
+
* @param {string|undefined} or 旧的角色
|
|
3093
|
+
* @param {string} nr 新的角色
|
|
3094
|
+
* @param {number} ctm 耗时
|
|
3095
|
+
* @param {number} rslt 是否成功
|
|
3096
|
+
*/
|
|
3097
|
+
reportRoleUpdate(or: string | undefined, nr: string, ctm: number, rslt: number): void;
|
|
3098
|
+
/**
|
|
3099
|
+
* 调用 client.setClientRole 更新角色上报事件
|
|
3100
|
+
* @param {string} nr 新角色值
|
|
3101
|
+
*/
|
|
3102
|
+
reportRoleUpdateInvoked(nr: string): void;
|
|
3103
|
+
/**
|
|
3104
|
+
* 设置camera videoprofile
|
|
3105
|
+
*/
|
|
3106
|
+
reportVideoProfile(profile: string): void;
|
|
3107
|
+
/**
|
|
3108
|
+
* 设置screenshare videoprofile
|
|
3109
|
+
*/
|
|
3110
|
+
reportScreenProfile(profile: string): void;
|
|
3111
|
+
/**
|
|
3112
|
+
* 错误事件埋点
|
|
3113
|
+
* @param err
|
|
3114
|
+
*/
|
|
3115
|
+
reportError(err: any): void;
|
|
3116
|
+
/**
|
|
3117
|
+
* 日志埋点
|
|
3118
|
+
* 在埋点中增加tm字段,表示发生埋点的客户端本地时间
|
|
3119
|
+
* @param {any} param 埋点内容
|
|
3120
|
+
*/
|
|
3121
|
+
protected log(param: any): void;
|
|
3122
|
+
/**
|
|
3123
|
+
* 将Object转换成string
|
|
3124
|
+
* @param {any} data
|
|
3125
|
+
* @returns {string}
|
|
3126
|
+
*/
|
|
3127
|
+
protected data2String(data: any): string;
|
|
3128
|
+
}
|
|
3129
|
+
|
|
3130
|
+
/**
|
|
3131
|
+
* RoomServerMessageCenter支持的事件
|
|
3132
|
+
*/
|
|
3133
|
+
declare interface RoomServerListener {
|
|
3134
|
+
onJoinChannelResult: (data: any) => void;
|
|
3135
|
+
onPublishResult: (code: number, tid: string, description: string) => void;
|
|
3136
|
+
onNotifyJoin: (users: JoinInfo[]) => void;
|
|
3137
|
+
onNotifyStatus: (users: RemoteUserStatus[]) => void;
|
|
3138
|
+
onLeaveResult: (code: number, tid: string) => void;
|
|
3139
|
+
onRoleUpdateResult: (code: number, tid: string, description: string) => void;
|
|
3140
|
+
onRefreshUrlResult: (data: any) => void;
|
|
3141
|
+
onNotifyLeave: (users: LeaveInfo[]) => void;
|
|
3142
|
+
onNotifyPublish: (users: PublishUser[]) => void;
|
|
3143
|
+
onStatusReport: (code: number, tid: string, description: string) => void;
|
|
3144
|
+
onBye: (reason: AliRtcOnByeType, description: string) => void;
|
|
3145
|
+
onKeepAliveRsp: () => void;
|
|
3146
|
+
onConnectFail: (err: AliRtcError) => void;
|
|
3147
|
+
onNetworkError: (err: AliRtcError) => void;
|
|
3148
|
+
onAuthInvalid: () => void;
|
|
3149
|
+
onReconnectStart: () => void;
|
|
3150
|
+
onReconnectFail: (err: AliRtcError) => void;
|
|
3151
|
+
onReconnectSuccess: (users: JoinInfo[]) => void;
|
|
3152
|
+
onError: (err: AliRtcError) => void;
|
|
3153
|
+
}
|
|
3154
|
+
|
|
3155
|
+
declare class RtsManager extends default_2<RtsManagerEventListener> {
|
|
3156
|
+
/**
|
|
3157
|
+
* @ignore
|
|
3158
|
+
*/
|
|
3159
|
+
static logName: string;
|
|
3160
|
+
private rts;
|
|
3161
|
+
private encodedInsertableStreams;
|
|
3162
|
+
private audioRedEnabled;
|
|
3163
|
+
private localStreamManager;
|
|
3164
|
+
private connecting;
|
|
3165
|
+
private connected;
|
|
3166
|
+
private connectionResolve?;
|
|
3167
|
+
connectingPromise?: Promise<unknown>;
|
|
3168
|
+
private dcResolve?;
|
|
3169
|
+
dcConnectingPromise?: Promise<unknown>;
|
|
3170
|
+
private _publishingTracks;
|
|
3171
|
+
constructor(localStreamManager: LocalStreamManager);
|
|
3172
|
+
setEncodedInsertableStreams(enable: boolean): void;
|
|
3173
|
+
setAudioRedEnabled(enable: boolean): void;
|
|
3174
|
+
destroy(): void;
|
|
3175
|
+
private startConnect;
|
|
3176
|
+
private setConnected;
|
|
3177
|
+
get isConnecting(): boolean;
|
|
3178
|
+
get isConnected(): boolean;
|
|
3179
|
+
get publishingTracks(): TrackInfo[];
|
|
3180
|
+
private getPubMsid;
|
|
3181
|
+
private updatePublishingTracks;
|
|
3182
|
+
private httpPublish;
|
|
3183
|
+
private waitPublishSender;
|
|
3184
|
+
private checkSubscribeStats;
|
|
3185
|
+
getPublishVideoStats(streamUrl: string, msid?: string): Promise<unknown>;
|
|
3186
|
+
getPublishAudioStats(streamUrl: string, msid?: string): Promise<unknown>;
|
|
3187
|
+
publishAdd(streamUrl: string, stream: LocalStream, extra?: PublishExtraParams, isResume?: boolean, retryTimes?: number, waitSender?: boolean): Promise<string>;
|
|
3188
|
+
publishDelete(streamUrl: string, options: PublishOptions): Promise<string>;
|
|
3189
|
+
publishReplace(streamUrl: string, stream: LocalStream, extra?: PublishExtraParams): Promise<string>;
|
|
3190
|
+
publishStop(streamUrl: string): Promise<string>;
|
|
3191
|
+
unpublish(): Promise<void>;
|
|
3192
|
+
/**
|
|
3193
|
+
* 获取 sub/subAdd config
|
|
3194
|
+
* @param {ISubscribeConfig | ISubConfigItem} options
|
|
3195
|
+
* @returns {Omit<ISignalConfig | ISubConfigItem, 'url'>}
|
|
3196
|
+
*/
|
|
3197
|
+
private getSubConfig;
|
|
3198
|
+
private httpSubscribe;
|
|
3199
|
+
private subscribeAdd;
|
|
3200
|
+
subscibeDelete(subscribeOptions: RemoteSubscribeOptions): Promise<{
|
|
3201
|
+
url: string;
|
|
3202
|
+
stream: any;
|
|
3203
|
+
} | undefined>;
|
|
3204
|
+
subscibeStop(streamUrl: string): Promise<void>;
|
|
3205
|
+
publish(streamUrl: string, isResume?: boolean): Promise<string>;
|
|
3206
|
+
subscribe(remoteSubscribeOptions: RemoteSubscribeOptions): Promise<{
|
|
3207
|
+
traceId: string;
|
|
3208
|
+
stream: RemoteStream;
|
|
3209
|
+
} | {
|
|
3210
|
+
url: string;
|
|
3211
|
+
stream: RemoteStream;
|
|
3212
|
+
traceId?: string | undefined;
|
|
3213
|
+
} | null>;
|
|
3214
|
+
getSubscribeVideoStats(streamUrl: string, msid?: string): Promise<unknown>;
|
|
3215
|
+
getSubscribeAudioStats(streamUrl: string, msid?: string): Promise<unknown>;
|
|
3216
|
+
sendSEI(streamUrl: string, data: ArrayBuffer, repeatCount: number, payloadType: number): Promise<void>;
|
|
3217
|
+
}
|
|
3218
|
+
|
|
3219
|
+
declare interface RtsManagerEventListener {
|
|
3220
|
+
reconnecting: () => {};
|
|
3221
|
+
disconnected: () => {};
|
|
3222
|
+
connected: () => {};
|
|
3223
|
+
subscribeexceeds: () => {};
|
|
3224
|
+
seimessage: (url: string, payloadType: number, data: ArrayBuffer) => {};
|
|
3225
|
+
}
|
|
3226
|
+
|
|
3227
|
+
declare class SignalingManager extends default_2<RoomServerListener> {
|
|
3228
|
+
protected signaling?: ISignalingInterface;
|
|
3229
|
+
protected authInfo?: AliRtcAuthInfo;
|
|
3230
|
+
protected userName?: string;
|
|
3231
|
+
protected channelProfile: AliRtcSdkChannelProfile;
|
|
3232
|
+
protected clientRole: AliRtcSdkClientRole;
|
|
3233
|
+
protected env: AliRtcEnv;
|
|
3234
|
+
protected maxConnectRetryCount?: number;
|
|
3235
|
+
constructor(channelProfile: AliRtcSdkChannelProfile, clientRole: AliRtcSdkClientRole, env?: AliRtcEnv);
|
|
3236
|
+
reset(): void;
|
|
3237
|
+
/**
|
|
3238
|
+
* 向业务信令发送入会
|
|
3239
|
+
* @param {AliRtcAuthInfo} authInfo
|
|
3240
|
+
* @returns
|
|
3241
|
+
*/
|
|
3242
|
+
join(authInfo: AliRtcAuthInfo, userName?: string, maxConnectRetryCount?: number): Promise<JoinResult>;
|
|
3243
|
+
retryJoin(): void;
|
|
3244
|
+
/**
|
|
3245
|
+
* 向业务信令发送离会
|
|
3246
|
+
* @returns
|
|
3247
|
+
*/
|
|
3248
|
+
leave(): Promise<SignalingResult>;
|
|
3249
|
+
/**
|
|
3250
|
+
* 推流
|
|
3251
|
+
* @param pubInfo
|
|
3252
|
+
* @returns
|
|
3253
|
+
*/
|
|
3254
|
+
publish(pubInfo: PublishInfo): Promise<SignalingResult>;
|
|
3255
|
+
/**
|
|
3256
|
+
* 通过透明通道发送设备状态
|
|
3257
|
+
* @param {string} status
|
|
3258
|
+
* @returns
|
|
3259
|
+
*/
|
|
3260
|
+
reportStatus(status: string): Promise<void>;
|
|
3261
|
+
/**
|
|
3262
|
+
* 切换角色
|
|
3263
|
+
* @param {AliRtcSdkClientRole} role
|
|
3264
|
+
* @returns
|
|
3265
|
+
*/
|
|
3266
|
+
setClientRole(role: AliRtcSdkClientRole): Promise<SignalingResult | undefined>;
|
|
3267
|
+
/**
|
|
3268
|
+
* 切换模式
|
|
3269
|
+
* @param {AliRtcSdkChannelProfile} channelProfile
|
|
3270
|
+
*/
|
|
3271
|
+
setChannelProfile(channelProfile: AliRtcSdkChannelProfile): void;
|
|
3272
|
+
/**
|
|
3273
|
+
* 更新推流url
|
|
3274
|
+
* @param {RefreshInfo} info
|
|
3275
|
+
* @returns
|
|
3276
|
+
*/
|
|
3277
|
+
refreshUrl(info: RefreshInfo): Promise<RefreshUrlResult>;
|
|
3278
|
+
refreshAuthInfo(authInfo: AliRtcRefreshAuthInfo): Promise<void>;
|
|
3279
|
+
/**
|
|
3280
|
+
* 监听业务信令相关的事件
|
|
3281
|
+
*/
|
|
3282
|
+
protected initSignaling(): void;
|
|
3283
|
+
/**
|
|
3284
|
+
* 收到心跳消息
|
|
3285
|
+
*/
|
|
3286
|
+
protected onKeepAliveRsp(): void;
|
|
3287
|
+
/**
|
|
3288
|
+
* 收到远端用户入会消息
|
|
3289
|
+
* @param {JoinInfo[]} users
|
|
3290
|
+
*/
|
|
3291
|
+
protected onNotifyJoin(users: JoinInfo[]): void;
|
|
3292
|
+
/**
|
|
3293
|
+
* 收到远端用户的透明通道消息
|
|
3294
|
+
* @param {RemoteUserStatus[]} users
|
|
3295
|
+
*/
|
|
3296
|
+
protected onNotifyStatus(users: RemoteUserStatus[]): void;
|
|
3297
|
+
/**
|
|
3298
|
+
* 收到远端用户的离会消息
|
|
3299
|
+
* @param {LeaveInfo[]} users
|
|
3300
|
+
*/
|
|
3301
|
+
protected onNotifyLeave(users: LeaveInfo[]): void;
|
|
3302
|
+
/**
|
|
3303
|
+
* 收到远端用户推流状态变化消息
|
|
3304
|
+
* @param {PublishInfo[]} users
|
|
3305
|
+
*/
|
|
3306
|
+
protected onNotifyPublish(users: PublishInfo[]): void;
|
|
3307
|
+
/**
|
|
3308
|
+
* 收到被踢掉消息
|
|
3309
|
+
* @param {string} reason
|
|
3310
|
+
* @param {string} description
|
|
3311
|
+
*/
|
|
3312
|
+
protected onBye(reason: AliRtcOnByeType, description: string): void;
|
|
3313
|
+
/**
|
|
3314
|
+
* 收到连接失败消息
|
|
3315
|
+
* @param {AliRtcError} err
|
|
3316
|
+
*/
|
|
3317
|
+
protected onConnectFail(err: AliRtcError): void;
|
|
3318
|
+
/**
|
|
3319
|
+
* 收到网络异常消息
|
|
3320
|
+
* @param {AliRtcError} err
|
|
3321
|
+
*/
|
|
3322
|
+
protected onNetworkError(err: AliRtcError): void;
|
|
3323
|
+
/**
|
|
3324
|
+
* 收到网络异常消息
|
|
3325
|
+
* @param {AliRtcError} _err
|
|
3326
|
+
*/
|
|
3327
|
+
protected onAuthInvalid(_err: AliRtcError): void;
|
|
3328
|
+
protected onReconnectStart(): void;
|
|
3329
|
+
/**
|
|
3330
|
+
* 收到重连成功消息
|
|
3331
|
+
* @param {JoinInfo[]} users
|
|
3332
|
+
*/
|
|
3333
|
+
protected onReconnectSuccess(users: JoinInfo[]): void;
|
|
3334
|
+
/**
|
|
3335
|
+
* 收到重连失败消息
|
|
3336
|
+
*/
|
|
3337
|
+
protected onReconnectFail(err: AliRtcError): void;
|
|
3338
|
+
/**
|
|
3339
|
+
* 收到错误消息
|
|
3340
|
+
* @param {AliRtcError} err
|
|
3341
|
+
*/
|
|
3342
|
+
protected onError(err: AliRtcError): void;
|
|
3343
|
+
}
|
|
3344
|
+
|
|
3345
|
+
declare interface SignalingResult {
|
|
3346
|
+
tid: string;
|
|
3347
|
+
code?: number;
|
|
3348
|
+
message?: string;
|
|
3349
|
+
}
|
|
3350
|
+
|
|
3351
|
+
declare interface StopPreviewConfig {
|
|
3352
|
+
videoElement?: HTMLVideoElement;
|
|
3353
|
+
primary?: boolean;
|
|
3354
|
+
screen?: boolean;
|
|
3355
|
+
}
|
|
3356
|
+
|
|
3357
|
+
declare type StopPublishOptions = StreamOptions;
|
|
3358
|
+
|
|
3359
|
+
declare interface StreamListener {
|
|
3360
|
+
[DeviceStatusChange.Remote]: (event: DeviceStatusChangeType) => void;
|
|
3361
|
+
error: (err: AliRtcError) => void;
|
|
3362
|
+
}
|
|
3363
|
+
|
|
3364
|
+
declare interface StreamOptions {
|
|
3365
|
+
audio?: boolean;
|
|
3366
|
+
video?: boolean;
|
|
3367
|
+
screen?: boolean;
|
|
3368
|
+
}
|
|
3369
|
+
|
|
3370
|
+
declare interface SubConfig {
|
|
3371
|
+
isAudioSubscribing: boolean;
|
|
3372
|
+
isVideoSubscribing: boolean;
|
|
3373
|
+
isScreenSubscribing: boolean;
|
|
3374
|
+
audioEnabled: boolean;
|
|
3375
|
+
videoEnabled: boolean;
|
|
3376
|
+
screenEnabled: boolean;
|
|
3377
|
+
}
|
|
3378
|
+
|
|
3379
|
+
declare type SubscribeOptions = StreamOptions & {
|
|
3380
|
+
vMsid?: string;
|
|
3381
|
+
};
|
|
3382
|
+
|
|
3383
|
+
declare enum TrackEvent_2 {
|
|
3384
|
+
VideoTrackEnded = "videoTrackEnded",
|
|
3385
|
+
AudioTrackEnded = "audioTrackEnded",
|
|
3386
|
+
ScreenTrackEnded = "screenTrackEnded"
|
|
3387
|
+
}
|
|
3388
|
+
|
|
3389
|
+
declare interface TrackInfo {
|
|
3390
|
+
ssrc: string;
|
|
3391
|
+
codec: string;
|
|
3392
|
+
msid?: MsidType;
|
|
3393
|
+
type: string;
|
|
3394
|
+
from?: string | undefined;
|
|
3395
|
+
userdata?: string;
|
|
3396
|
+
trackId?: string;
|
|
3397
|
+
attr?: Record<string, any>;
|
|
3398
|
+
pt?: number;
|
|
3399
|
+
}
|
|
3400
|
+
|
|
3401
|
+
declare type UnSubscribeOptions = SubscribeOptions;
|
|
3402
|
+
|
|
3403
|
+
declare interface UpdateTracksResult {
|
|
3404
|
+
restoreSub?: boolean;
|
|
3405
|
+
}
|
|
3406
|
+
|
|
3407
|
+
declare class User extends default_2<UserListener> {
|
|
3408
|
+
protected uid: string;
|
|
3409
|
+
protected name: string;
|
|
3410
|
+
protected rtsManager: RtsManager;
|
|
3411
|
+
callid: string;
|
|
3412
|
+
protected audioLevelMonitor: AudioLevelMonitor;
|
|
3413
|
+
protected audioVolumeIndicationInterval: number;
|
|
3414
|
+
constructor(userId: string, displayname: string, rtsManager: RtsManager, interval: number);
|
|
3415
|
+
get userId(): string;
|
|
3416
|
+
get displayname(): string;
|
|
3417
|
+
setUserInfo(uid: string, displayName: string): void;
|
|
3418
|
+
refreshUserInfo(uid: string): void;
|
|
3419
|
+
/**
|
|
3420
|
+
* 获取音频 level
|
|
3421
|
+
*/
|
|
3422
|
+
getAudioLevel(): number;
|
|
3423
|
+
enableAudioVolumeIndication(interval: number): void;
|
|
3424
|
+
/**
|
|
3425
|
+
* 销毁用户,清空数据
|
|
3426
|
+
*/
|
|
3427
|
+
clear(): void;
|
|
3428
|
+
}
|
|
3429
|
+
|
|
3430
|
+
declare interface UserListener {
|
|
3431
|
+
[DeviceStatusChange.Local]: (status: string) => void;
|
|
3432
|
+
[DeviceStatusChange.Remote]: (event: DeviceStatusChangeType, userId: string) => void;
|
|
3433
|
+
[ClientEventType.PullStreamStats]: (userId: string, stat: any, pullStreamUrl: string) => void;
|
|
3434
|
+
[ClientEventType.RtsSubscribeExceeds]: (userId: string, options?: SubscribeOptions) => void;
|
|
3435
|
+
[TrackEvent_2.VideoTrackEnded]: () => void;
|
|
3436
|
+
[TrackEvent_2.AudioTrackEnded]: () => void;
|
|
3437
|
+
[TrackEvent_2.ScreenTrackEnded]: () => void;
|
|
3438
|
+
remoteTrackAvailableChange: (uid: string, aliRtcAudioTrack: AliRtcAudioTrack, aliRtcVideoTrack: AliRtcVideoTrack) => void;
|
|
3439
|
+
audioSubscribeStateChanged: (uid: string, oldState: AliRtcSubscribeState, newState: AliRtcSubscribeState, elapseSinceLastState: number) => void;
|
|
3440
|
+
videoSubscribeStateChanged: (uid: string, oldState: AliRtcSubscribeState, newState: AliRtcSubscribeState, elapseSinceLastState: number) => void;
|
|
3441
|
+
screenSubscribeStateChanged: (uid: string, oldState: AliRtcSubscribeState, newState: AliRtcSubscribeState, elapseSinceLastState: number) => void;
|
|
3442
|
+
audioPublishStateChanged: (oldState: AliRtcPublishState, newState: AliRtcPublishState, elapseSinceLastState: number) => void;
|
|
3443
|
+
videoPublishStateChanged: (oldState: AliRtcPublishState, newState: AliRtcPublishState, elapseSinceLastState: number) => void;
|
|
3444
|
+
dualStreamPublishStateChanged: (oldState: AliRtcPublishState, newState: AliRtcPublishState, elapseSinceLastState: number) => void;
|
|
3445
|
+
screenPublishStateChanged: (oldState: AliRtcPublishState, newState: AliRtcPublishState, elapseSinceLastState: number) => void;
|
|
3446
|
+
localDeviceException: (localDeviceType: AliRtcEngineLocalDeviceType, localDeviceExceptionType: AliRtcEngineLocalDeviceExceptionType, description: string) => void;
|
|
3447
|
+
remoteAudioAutoPlayFail: (uid: string) => void;
|
|
3448
|
+
remoteVideoAutoPlayFail: (uid: string, track: AliRtcVideoTrack) => void;
|
|
3449
|
+
remoteSubscribeError: (error: AliRtcError) => void;
|
|
3450
|
+
}
|
|
3451
|
+
|
|
3452
|
+
declare class UserManager extends default_2<UserManagerListener> {
|
|
3453
|
+
/**
|
|
3454
|
+
* @ignore
|
|
3455
|
+
*/
|
|
3456
|
+
static logName: string;
|
|
3457
|
+
protected self: LocalUser | undefined;
|
|
3458
|
+
protected userMap: RemoteUserMap;
|
|
3459
|
+
private usersViewMap;
|
|
3460
|
+
rtsManager: RtsManager;
|
|
3461
|
+
protected localStreamManager: LocalStreamManager;
|
|
3462
|
+
protected authInfo?: AliRtcAuthInfo;
|
|
3463
|
+
protected signalingManager: SignalingManager;
|
|
3464
|
+
pluginManager: PluginManager;
|
|
3465
|
+
protected reporter: Reporter;
|
|
3466
|
+
protected webTrackingClient: WebTrackingClient;
|
|
3467
|
+
private statsMonitorId?;
|
|
3468
|
+
private autoSubAudio;
|
|
3469
|
+
private autoSubVideo;
|
|
3470
|
+
private autoSubScreen;
|
|
3471
|
+
private wantSubAudio;
|
|
3472
|
+
private wantSubVideo;
|
|
3473
|
+
private wantSubScreen;
|
|
3474
|
+
private defaultStreamType;
|
|
3475
|
+
private audioMuted;
|
|
3476
|
+
private audioVolumeIndicationInterval;
|
|
3477
|
+
private indicationTimer;
|
|
3478
|
+
constructor(config: UserManagerConfig);
|
|
3479
|
+
private addSignalingManagerListener;
|
|
3480
|
+
isAutoSubAudio(): boolean;
|
|
3481
|
+
setAutoSubAudio(value: boolean): void;
|
|
3482
|
+
isAutoSubVideo(): boolean;
|
|
3483
|
+
setAutoSubVideo(value: boolean): void;
|
|
3484
|
+
isAutoSubScreen(): boolean;
|
|
3485
|
+
setAutoSubScreen(value: boolean): void;
|
|
3486
|
+
isWantSubAudio(): boolean;
|
|
3487
|
+
setWantSubAudio(value: boolean): void;
|
|
3488
|
+
isWantSubVideo(): boolean;
|
|
3489
|
+
setWantSubVideo(value: boolean): void;
|
|
3490
|
+
isWantSubScreen(): boolean;
|
|
3491
|
+
setWantSubScreen(value: boolean): void;
|
|
3492
|
+
setRemoteDefaultVideoStreamType(type: AliRtcVideoStreamType): void;
|
|
3493
|
+
setRemoteUserVideoStreamType(userId: string, type: AliRtcVideoStreamType): void;
|
|
3494
|
+
setAudioMuted(mute: boolean): void;
|
|
3495
|
+
setLocalViewConfig(view: AliRtcLocalView, track: AliRtcVideoTrack): void;
|
|
3496
|
+
setRemoteViewConfig(uid: string, view: AliRtcLocalView, track: AliRtcVideoTrack): void;
|
|
3497
|
+
get channel(): string | undefined;
|
|
3498
|
+
get userId(): string | undefined;
|
|
3499
|
+
get remoteUsers(): RemoteUser[];
|
|
3500
|
+
/**
|
|
3501
|
+
* 获取推流对象,只能是自己
|
|
3502
|
+
*/
|
|
3503
|
+
get publisher(): LocalUser | undefined;
|
|
3504
|
+
get isSubscribing(): boolean;
|
|
3505
|
+
/**
|
|
3506
|
+
* 处理远端用户推流状态变化
|
|
3507
|
+
* @param {string} userId
|
|
3508
|
+
* @param {string} displayname
|
|
3509
|
+
* @param {string} callid
|
|
3510
|
+
* @param {string} pullStreamUrl
|
|
3511
|
+
* @param {TrackInfo[]} tracks
|
|
3512
|
+
* @returns {void}
|
|
3513
|
+
*/
|
|
3514
|
+
onRemotePublishStateChange(publishInfo: PublishUser): void;
|
|
3515
|
+
/**
|
|
3516
|
+
* 登陆成功后初始化用户管理,创建自己
|
|
3517
|
+
* @param {AliRtcAuthInfo} authInfo
|
|
3518
|
+
* @param {string} pushStreamUrl
|
|
3519
|
+
* @returns {Promise<void>}
|
|
3520
|
+
*/
|
|
3521
|
+
init(authInfo: AliRtcAuthInfo, data: JoinResult): void;
|
|
3522
|
+
/**
|
|
3523
|
+
* 离会后清除所有数据
|
|
3524
|
+
* @returns {Promise<void>}
|
|
3525
|
+
*/
|
|
3526
|
+
clear(): Promise<void>;
|
|
3527
|
+
private startStatsMonitor;
|
|
3528
|
+
private stopStatsMonitor;
|
|
3529
|
+
/**
|
|
3530
|
+
* 根据userId获取RemoteUser
|
|
3531
|
+
* @param {string} userId
|
|
3532
|
+
* @param {string} displayname
|
|
3533
|
+
* @returns {RemoteUser}
|
|
3534
|
+
*/
|
|
3535
|
+
getUser(userId: string, displayname: string): RemoteUser;
|
|
3536
|
+
/**
|
|
3537
|
+
* 添加远端用户
|
|
3538
|
+
* @param {string} userId
|
|
3539
|
+
* @param {string} displayName
|
|
3540
|
+
* @returns {void}
|
|
3541
|
+
*/
|
|
3542
|
+
addUser(userId: string, displayName: string): RemoteUser;
|
|
3543
|
+
/**
|
|
3544
|
+
* 执行添加远端用户
|
|
3545
|
+
* @param {string} userId
|
|
3546
|
+
* @param {string} displayName
|
|
3547
|
+
* @returns {RemoteUser}
|
|
3548
|
+
*/
|
|
3549
|
+
private executeAddUser;
|
|
3550
|
+
/**
|
|
3551
|
+
* 远端用户设备状态变化
|
|
3552
|
+
* @param {DeviceStatusChangeType} event
|
|
3553
|
+
* @param {string} userId
|
|
3554
|
+
*/
|
|
3555
|
+
private onRemoteDeviceStatusChange;
|
|
3556
|
+
/**
|
|
3557
|
+
* 远端流数据采集上报
|
|
3558
|
+
* @param {any} stat
|
|
3559
|
+
*/
|
|
3560
|
+
private onRemoteStatReport;
|
|
3561
|
+
/**
|
|
3562
|
+
* rts 单 PC 订阅超限
|
|
3563
|
+
*/
|
|
3564
|
+
private onSubscribeExceeds;
|
|
3565
|
+
/**
|
|
3566
|
+
* 移除远端用户
|
|
3567
|
+
* @param {LeaveInfo} user
|
|
3568
|
+
* @returns {Promise<void>}
|
|
3569
|
+
*/
|
|
3570
|
+
removeLeftUser(user: LeaveInfo): Promise<void>;
|
|
3571
|
+
/**
|
|
3572
|
+
* 更新远端用户数据
|
|
3573
|
+
* @param {JoinInfo[]} users
|
|
3574
|
+
* @returns {{joinList: JoinInfo[], leaveList: LeaveInfo[], presentList: JoinInfo[]}}
|
|
3575
|
+
*/
|
|
3576
|
+
updateUsers(users: JoinInfo[]): {
|
|
3577
|
+
joinList: JoinInfo[];
|
|
3578
|
+
leaveList: LeaveInfo[];
|
|
3579
|
+
presentList: JoinInfo[];
|
|
3580
|
+
};
|
|
3581
|
+
/**
|
|
3582
|
+
* 根据 userId 获取 RemoteUser
|
|
3583
|
+
* @param {string} userId
|
|
3584
|
+
* @returns {RemoteUser | undefined}
|
|
3585
|
+
*/
|
|
3586
|
+
getRemoteUser(userId: string): RemoteUser | undefined;
|
|
3587
|
+
/**
|
|
3588
|
+
* 更新远端用户设备信息
|
|
3589
|
+
* @param {RemoteUserStatus} user
|
|
3590
|
+
* @returns {boolean} true: 用户状态改变 false: 用户状态没有改变
|
|
3591
|
+
*/
|
|
3592
|
+
updateRemoteUserDeviceStatus(user: RemoteUserStatus): void;
|
|
3593
|
+
updateAudioWant(uid: string, sub: boolean): void;
|
|
3594
|
+
updateVideoWant(uid: string, sub: boolean): void;
|
|
3595
|
+
updateScreenWant(uid: string, sub: boolean): void;
|
|
3596
|
+
private stopIndication;
|
|
3597
|
+
private startIndication;
|
|
3598
|
+
enableAudioVolumeIndication(interval: number): void;
|
|
3599
|
+
refreshAuthInfo(authInfo: AliRtcRefreshAuthInfo): void;
|
|
3600
|
+
setEnableMediaExtensionMsg(enable: boolean): void;
|
|
3601
|
+
setAudioRedEnabled(enable: boolean): void;
|
|
3602
|
+
}
|
|
3603
|
+
|
|
3604
|
+
declare interface UserManagerConfig {
|
|
3605
|
+
reporter: Reporter;
|
|
3606
|
+
webTrackingClient: WebTrackingClient;
|
|
3607
|
+
signalingManager: SignalingManager;
|
|
3608
|
+
}
|
|
3609
|
+
|
|
3610
|
+
declare interface UserManagerListener {
|
|
3611
|
+
[ClientEventType.RtsSubscribeExceeds]: (userId: string, options?: SubscribeOptions) => void;
|
|
3612
|
+
[DeviceStatusChange.Remote]: (event: DeviceStatusChangeType, userId: string) => void;
|
|
3613
|
+
[ClientEventType.PullStreamStats]: (userId: string, stat: any, pullStreamUrl: string) => void;
|
|
3614
|
+
remoteTrackAvailableChange: (uid: string, aliRtcAudioTrack: AliRtcAudioTrack, aliRtcVideoTrack: AliRtcVideoTrack) => void;
|
|
3615
|
+
audioSubscribeStateChanged: (uid: string, oldState: AliRtcSubscribeState, newState: AliRtcSubscribeState, elapseSinceLastState: number, channel: string) => void;
|
|
3616
|
+
videoSubscribeStateChanged: (uid: string, oldState: AliRtcSubscribeState, newState: AliRtcSubscribeState, elapseSinceLastState: number, channel: string) => void;
|
|
3617
|
+
screenSubscribeStateChanged: (uid: string, oldState: AliRtcSubscribeState, newState: AliRtcSubscribeState, elapseSinceLastState: number, channel: string) => void;
|
|
3618
|
+
userAudioMuted: (uid: string, isMute: boolean) => void;
|
|
3619
|
+
userVideoMuted: (uid: string, isMute: boolean) => void;
|
|
3620
|
+
userScreenMuted: (userId: string, isMute: boolean) => void;
|
|
3621
|
+
audioVolume: (speakers: {
|
|
3622
|
+
userId: string;
|
|
3623
|
+
volume: number;
|
|
3624
|
+
}[]) => void;
|
|
3625
|
+
rtcLocalVideoStats: (stats: AliRtcLocalVideoStats[]) => void;
|
|
3626
|
+
rtcLocalAudioStats: (stats: AliRtcLocalAudioStats[]) => void;
|
|
3627
|
+
rtcRemoteVideoStats: (stats: AliRtcRemoteVideoStats[]) => void;
|
|
3628
|
+
rtcRemoteAudioStats: (stats: AliRtcRemoteAudioStats[]) => void;
|
|
3629
|
+
remoteAudioAutoPlayFail: (uid: string) => void;
|
|
3630
|
+
remoteVideoAutoPlayFail: (uid: string, track: AliRtcVideoTrack) => void;
|
|
3631
|
+
remoteSubscribeError: (error: AliRtcError) => void;
|
|
3632
|
+
}
|
|
3633
|
+
|
|
3634
|
+
declare interface VideoScaler {
|
|
3635
|
+
getVideoTrack: () => MediaStreamTrack;
|
|
3636
|
+
updateOptions: (options: VideoScalerOptions) => void;
|
|
3637
|
+
dispose: () => void;
|
|
3638
|
+
}
|
|
3639
|
+
|
|
3640
|
+
declare class VideoScalerFactory {
|
|
3641
|
+
static isSupport(): boolean;
|
|
3642
|
+
/**
|
|
3643
|
+
* 获取实例
|
|
3644
|
+
* @param {MediaStreamTrack} videoTrack
|
|
3645
|
+
* @param {IProfile} profile
|
|
3646
|
+
* @return {VideoScaler}
|
|
3647
|
+
*/
|
|
3648
|
+
static getInstance(videoTrack: MediaStreamTrack, options: VideoScalerOptions): VideoScaler;
|
|
3649
|
+
}
|
|
3650
|
+
|
|
3651
|
+
declare interface VideoScalerOptions {
|
|
3652
|
+
width: number;
|
|
3653
|
+
height: number;
|
|
3654
|
+
frameRate: number;
|
|
3655
|
+
}
|
|
3656
|
+
|
|
3657
|
+
declare enum VideoStreamSource {
|
|
3658
|
+
Camera = 0,
|
|
3659
|
+
Screen = 1,
|
|
3660
|
+
Image = 2
|
|
3661
|
+
}
|
|
3662
|
+
|
|
3663
|
+
declare interface WebTrackConfig {
|
|
3664
|
+
biz: string;
|
|
3665
|
+
extraParams?: string;
|
|
3666
|
+
}
|
|
3667
|
+
|
|
3668
|
+
declare class WebTrackingClient {
|
|
3669
|
+
protected index: number;
|
|
3670
|
+
private tracker?;
|
|
3671
|
+
private enable;
|
|
3672
|
+
private commonParams;
|
|
3673
|
+
constructor(config?: WebTrackConfig | boolean);
|
|
3674
|
+
updateAuthInfo(info: AliRtcAuthInfo): void;
|
|
3675
|
+
/**
|
|
3676
|
+
* 调用加入房间API事件
|
|
3677
|
+
* @param {AliRtcAuthInfo} authInfo 鉴权信息
|
|
3678
|
+
*/
|
|
3679
|
+
reportJoinChannel(authInfo: AliRtcAuthInfo): void;
|
|
3680
|
+
/**
|
|
3681
|
+
* @method: 调用加入房间结果
|
|
3682
|
+
* @param { rslt: 执行结果 code,0为成功,错误返回其他错误码 }
|
|
3683
|
+
* @param { message: 执行结果,成功返回 success,失败返回失败 message }
|
|
3684
|
+
* @param { ct: 耗时 }
|
|
3685
|
+
* @return {*}
|
|
3686
|
+
*/
|
|
3687
|
+
reportJoinChannelRes(rslt: number, message: string, ct: number): void;
|
|
3688
|
+
/**
|
|
3689
|
+
* 离会调用通知
|
|
3690
|
+
*/
|
|
3691
|
+
reportLeaveChannel(): void;
|
|
3692
|
+
/**
|
|
3693
|
+
* 推流成功
|
|
3694
|
+
* @param {string} calid(失败时为空)
|
|
3695
|
+
* @param {boolean} isvl 是否推大流
|
|
3696
|
+
* @param {boolean} isvs 是否推小流
|
|
3697
|
+
* @param {boolean} isvss 是否推屏幕共享流
|
|
3698
|
+
* @param {boolean} isaudio 是否推音频流
|
|
3699
|
+
* @param {number} rslt 推流结果:成功0,失败错误码
|
|
3700
|
+
* @param {string} tid 房间信令 tid
|
|
3701
|
+
* @param {number} pubtm 执行推流到推流结束信令通知结束的耗时
|
|
3702
|
+
* @param {number} est 开始时间
|
|
3703
|
+
* @param {string} dctid 使用 datachannel 的 traceId
|
|
3704
|
+
* @param {string} httptid 使用 http 建连的 traceId
|
|
3705
|
+
* @param {string} url 推流地址
|
|
3706
|
+
*/
|
|
3707
|
+
reportPush(calid: string, isvl: boolean, isvs: boolean, isvss: boolean, isaudio: boolean, rslt: number, tid: string, pubtm: number, est: number, dctid: string, httptid: string, url: string): void;
|
|
3708
|
+
/**
|
|
3709
|
+
* 拉流成功
|
|
3710
|
+
* @param {string} calid 鉴权 callid (失败为空)
|
|
3711
|
+
* @param {string} rmtid 远端用户 userId
|
|
3712
|
+
* @param {boolean} isvl 是否拉视频大流
|
|
3713
|
+
* @param {boolean} isvs 是否拉视频小流
|
|
3714
|
+
* @param {boolean} isvss 是否拉屏幕分享流
|
|
3715
|
+
* @param {boolean} isaudio 是否拉音频流
|
|
3716
|
+
* @param {number} rslt 拉流结果:成功0,失败错误码
|
|
3717
|
+
* @param {number} subtm 订阅耗时
|
|
3718
|
+
* @param {string} dctid 使用 datachannel 的 traceId
|
|
3719
|
+
* @param {string} httptid 使用 http 建连的 traceId
|
|
3720
|
+
* @param {string} url 拉流地址
|
|
3721
|
+
* @param {number} est 开始时间
|
|
3722
|
+
*/
|
|
3723
|
+
reportPull(calid: string, rmtid: string, isvl: boolean, isvs: boolean, isvss: boolean, isaudio: boolean, rslt: number, subtm: number, dctid: string, httptid: string, url: string, est: number): void;
|
|
3724
|
+
/**
|
|
3725
|
+
* 上报订阅流的音频数据
|
|
3726
|
+
* @param {string} rmtid 远端用户 userId
|
|
3727
|
+
* @param {any} stats 流数据
|
|
3728
|
+
*/
|
|
3729
|
+
reportSubscribeAudioStats(rmtid: string, stats: any): void;
|
|
3730
|
+
/**
|
|
3731
|
+
* 上报订阅流的视频数据
|
|
3732
|
+
* @param {string} rmtid 远端用户 userId
|
|
3733
|
+
* @param {any} stats 流数据
|
|
3734
|
+
*/
|
|
3735
|
+
reportSubscribeVideoStats(rmtid: string, stats: any): void;
|
|
3736
|
+
/**
|
|
3737
|
+
* webTracking 埋点上报
|
|
3738
|
+
* @param {string | number} msgId 事件标识
|
|
3739
|
+
* @param {Record<string, any>} args 事件携带参数
|
|
3740
|
+
* @param {Record<string, any>} params 单个打点携带的其他参数
|
|
3741
|
+
*/
|
|
3742
|
+
protected report(msgId: string | number | EventId, args?: Record<string, any>, params?: Record<string, any>): void;
|
|
3743
|
+
/**
|
|
3744
|
+
* 上报环境监测的结果
|
|
3745
|
+
*/
|
|
3746
|
+
static reportCheck(result: any, biz?: string): void;
|
|
3747
|
+
}
|
|
3748
|
+
|
|
3749
|
+
export { }
|