@tencentcloud/tuiroom-engine-js 3.2.1 → 3.2.2

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.
@@ -0,0 +1,1502 @@
1
+ import TencentCloudChat, { ChatSDK } from '@tencentcloud/chat';
2
+ import TRTCCloud, { TRTCDeviceInfo, TRTCScreenCaptureSourceInfo } from 'trtc-cloud-js-sdk';
3
+ import { TUIRoomInfo, TUIVideoStreamType, TUIVideoQuality, TUIAudioQuality, TUIRole, TUIRoomEvents, TUIRoomType, TUISeatInfo, TUIRequestCallback, TUIMediaDevice, TUISeatLockParams, TUILoginUserInfo, TUIUserInfo, TUIRequest, TUIVideoEncoderParams, TUIResolutionMode, TUISeatMode, TUIEnterRoomOptions } from './types';
4
+ import TUIRoomDeviceManager from './modules/deviceManager';
5
+ import TUIConferenceListManager from './modules/conferenceListManager';
6
+ import TUIConferenceInvitationManager from './modules/conferenceInvitationManager';
7
+ import TUILiveListManager from './modules/liveListManager';
8
+ import TUILiveLayoutManager from './modules/liveLayoutManager';
9
+ import TUILiveConnectionManager from './modules/liveConnectionManager';
10
+ export * from './types';
11
+ export { TUIRoomDeviceManager, TUIConferenceListManager, TUIConferenceInvitationManager, TUILiveListManager, TUILiveLayoutManager, };
12
+ export { TRTCDeviceType, TRTCDeviceState, TRTCDeviceInfo, TRTCVideoMirrorType, TRTCVideoRotation, TRTCVideoFillMode, TRTCVideoStreamType, TRTCScreenCaptureSourceInfo, TRTCScreenCaptureSourceType, Rect, TRTCVideoEncParam, TRTCVideoResolution, TRTCVideoResolutionMode, TRTCVolumeInfo, TRTCLogLevel, TRTCMediaSource, TRTCMediaSourceType, TRTCMediaMixingEncParam, TRTCMediaMixingEvent, } from 'trtc-cloud-js-sdk';
13
+ export { TRTCCloud, TencentCloudChat as TIM, TencentCloudChat };
14
+ /**
15
+ * TUIRoomEngine 提供了音视频房间的能力
16
+ *
17
+ * @class TUIRoomEngine
18
+ */
19
+ declare class TUIRoomEngine {
20
+ static className: string;
21
+ private static isReady;
22
+ private roomEngineWASM;
23
+ private trtcCloud;
24
+ private deviceManager;
25
+ private deviceManagerWASM;
26
+ private conferenceListManager;
27
+ private conferenceInvitationManager;
28
+ private liveListManager;
29
+ private liveLayoutManager;
30
+ private liveConnectionManager;
31
+ private static userId;
32
+ private static sdkAppId;
33
+ private static Module;
34
+ private static shareInstance;
35
+ private logger;
36
+ private roomId;
37
+ private localVideoQuality;
38
+ private localAudioQuality;
39
+ private functionWrapperMap;
40
+ static setModule(Module: any): void;
41
+ static once(event: string, func: (...args: any[]) => void): void;
42
+ static getInstance(): TUIRoomEngine;
43
+ constructor(options?: {
44
+ isSharedInstance?: boolean;
45
+ });
46
+ /**
47
+ * @private
48
+ * 调用 TUIRoomEngineWASM 的静态方法
49
+ */
50
+ private static JSCallNativeFunctionPromise;
51
+ /**
52
+ * @private
53
+ * 调用 TUIRoomEngineWASM 的异步方法
54
+ * @param funcName
55
+ * @param args
56
+ */
57
+ private JSCallNativeFunctionPromise;
58
+ private JSCallNativeRequestFunctionPromise;
59
+ /**
60
+ * @private
61
+ * 调用 TUIRoomEngineWASM 的 CallAPI 方法
62
+ * @param funcName
63
+ * @param jsonString
64
+ */
65
+ private JSCallNativeCallAPIPromise;
66
+ /**
67
+ * 登录 TUIRoomEngine
68
+ *
69
+ * @param {object} options
70
+ * @param {number} options.sdkAppId sdkAppId <br>
71
+ * 在 [实时音视频控制台](https://console.cloud.tencent.com/trtc) 单击 **应用管理** > **创建应用** 创建新应用之后,即可在 **应用信息** 中获取 sdkAppId 信息。
72
+ * @param {string} options.userId 用户ID <br>
73
+ * 建议限制长度为32字节,只允许包含大小写英文字母(a-zA-Z)、数字(0-9)及下划线和连词符。
74
+ * @param {string} options.userSig userSig 签名 <br>
75
+ * 计算 userSig 的方式请参考 [UserSig 相关](https://cloud.tencent.com/document/product/647/17275)。
76
+ * @returns {Promise<void>}
77
+ *
78
+ * @example
79
+ * // 登录 TUIRoomEngine
80
+ * await TUIRoomEngine.login({
81
+ * sdkAppId: 0, // 填写您申请的 sdkAppId
82
+ * userId: '', // 填写您业务对应的 userId
83
+ * userSig: '', // 填写服务器或本地计算的 userSig
84
+ * })
85
+ */
86
+ static login(options: {
87
+ sdkAppId: number;
88
+ userId: string;
89
+ userSig: string;
90
+ tim?: ChatSDK;
91
+ }): Promise<void>;
92
+ /**
93
+ * 设置当前用户基本信息(用户名、用户头像)
94
+ *
95
+ * @param {object} options
96
+ * @param {string} options.userName 用户名,必填
97
+ * @param {string} options.avatarUrl 用户头像,必填
98
+ * @param {object=} options.customInfo 用户自定义资料, customInfo 字段自 v2.2.0 版本废弃
99
+ * App 管理员可以通过 [即时通信 IM 控制台 > 用户自定义字段](https://console.cloud.tencent.com/im/user-data) 新增自定义资料字段
100
+ * 用户自定义字段生效以后,用户可以调用 setSelfInfo 接口设置自定义资料
101
+ * @returns {Promise<void>}
102
+ *
103
+ * @example
104
+ * // 设置当前用户用户名及用户头像
105
+ * await TUIRoomEngine.setSelfInfo({
106
+ * userName: '', // 填写您的新用户名
107
+ * avatarUrl: '', // 填写您的新头像地址
108
+ * })
109
+ *
110
+ * // 设置当前用户用户名, 用户头像及用户自定义消息
111
+ * await TUIRoomEngine.setSelfInfo({
112
+ * userName: '', // 填写您的新用户名
113
+ * avatarUrl: '', // 填写您的新头像地址
114
+ * customInfo: { // 填写用户自定义消息
115
+ * Tag_Profile_Custom_Test: 'value1',
116
+ * Tag_Profile_Custom_profile: 'value2,
117
+ * },
118
+ * })
119
+ */
120
+ static setSelfInfo(options: {
121
+ userName: string;
122
+ avatarUrl: string;
123
+ customInfo?: Record<string, any>;
124
+ }): Promise<void>;
125
+ /** 获取当前用户信息接口
126
+ * @returns {Promise<TUILoginUserInfo>} loginUserInfo
127
+ * 该接口返回用户信息
128
+ *
129
+ * @example
130
+ * await TUIRoomEngine.getSelfInfo();
131
+ */
132
+ static getSelfInfo(): Promise<TUILoginUserInfo>;
133
+ /**
134
+ * 登出 TUIRoomEngine, 登出 TUIRoomEngine 时将销毁所有 roomEngine 实例
135
+ *
136
+ * @example
137
+ * await TUIRoomEngine.logout();
138
+ */
139
+ static logout(): Promise<void>;
140
+ /**
141
+ * 主持人创建房间,调用 createRoom 的用户为房间的所有者。创建房间时可设置房间 Id,房间名称,房间类型,发言模式以及房间是否允许加入用户开启音视频,发送消息等功能。
142
+ *
143
+ * @param {object} options
144
+ * @param {string} options.roomId 房间 Id,必填, roomId 限制长度为64字节,且仅支持以下范围的字符集:<br>
145
+ * - 大小写英文字母(a-zA-Z)
146
+ * - 数字(0-9)
147
+ * - 空格 ! # $ % & ( ) + - : ; < = . > ? @ [ ] ^ _ { } | ~ ,
148
+ * @param {string=} [options.roomName=roomId] 房间名称,默认值为 roomId,传入的值不能为空字符串
149
+ * @param {TUIRoomType=} [options.roomType=TUIRoomType.kConference] 房间类型, 默认值为 TUIRoomType.kConference <br>
150
+ * 办公协同、医疗问诊、远程会议、教育场景,roomType 设置为 TUIRoomType.kConference
151
+ * 电商直播、语聊房场景,roomType 设置为 TUIRoomType.kLive
152
+ * @param {boolean=} [options.isSeatEnabled=false] 是否开启麦位控制,默认值为 false
153
+ * @param {TUISeatMode=} [options.seatMode=TUISeatMode.kFreeToTake] 上麦模式(开启麦位控制后生效),默认值为 TUISeatMode.kFreeToTake <br>
154
+ * 自由上麦模式,台下观众可以自由上麦,无需申请,seatMode 设置为 TUISeatMode.kFreeToTake
155
+ * 申请上麦模式,台下观众上麦需要房主或者管理员同意后才能上麦,seatMode 设置为 TUISeatMode.kApplyToTake
156
+ * @param {boolean=} [options.isMicrophoneDisableForAllUser=false] 是否开启全员禁麦,默认不开启全员禁麦(创建房间可选参数)
157
+ * @param {boolean=} [options.isScreenShareDisableForAllUser=false] 是否开启禁止屏幕分享,默认不开启禁止屏幕分享权限(该属性自 v2.2.0 版本 以后支持,创建房间可选参数)
158
+ * @param {boolean=} [options.isCameraDisableForAllUser=false] 是否开启全员禁画,默认不开启全员禁画(创建房间可选参数)
159
+ * @param {boolean=} [options.isMessageDisableForAllUser=false] 是否允许成员发送消息,默认不禁止(创建房间可选参数)
160
+ * @param {number=} options.maxSeatCount 最大麦位数量 (创建房间可选参数)
161
+ * @param {string=} [options.password=''] 房间密码,(该属性自 v2.5.0 版本支持) <br>
162
+ * @param {boolean=} [options.keepOwnerOnSeat=false] 是否保持房主座位,默认不保持房主座位(该属性自 v3.1.0 版本支持)
163
+ * roomType 为 TUIRoomType.kConference (教育及会议场景) 时,maxSeatCount 值不做限制;
164
+ * roomType 为 TUIRoomType.kLive (直播场景) 时,maxSeatCount 最大限制为 16;
165
+ * @returns {Promise<void>}
166
+ *
167
+ * @example
168
+ * const roomEngine = new TUIRoomEngine();
169
+ * await roomEngine.createRoom({
170
+ * roomId: '12345', // 填入您的房间 Id, 注意房间 Id 要求为字符串类型
171
+ * roomName: 'Test Room', // 填入您的房间名称, 房间名称默认为 roomId,最长 30 字节
172
+ * roomType: TUIRoomType.kConference, // 设置房间类型为 TUIRoomType.kConference 类型
173
+ * isSeatEnabled: false, // 不开启麦位控制
174
+ * password: '1234', // 填入您的房间密码,不填入则不设置房间密码
175
+ * });
176
+ */
177
+ createRoom(options: {
178
+ roomId: string;
179
+ roomName?: string;
180
+ roomType?: TUIRoomType;
181
+ isSeatEnabled?: boolean;
182
+ seatMode?: TUISeatMode;
183
+ isMicrophoneDisableForAllUser?: boolean;
184
+ isScreenShareDisableForAllUser?: boolean;
185
+ isCameraDisableForAllUser?: boolean;
186
+ isMessageDisableForAllUser?: boolean;
187
+ maxSeatCount?: number;
188
+ password?: string;
189
+ keepOwnerOnSeat?: boolean;
190
+ }): Promise<void>;
191
+ /**
192
+ * 进入房间接口
193
+ * @param {object} options
194
+ * @param {string} options.roomId 房间号,字符串类型
195
+ * @param {TUIRoomType} options.roomType 房间类型, 默认值为 TUIRoomType.kConference (自 v2.3.0 支持)
196
+ * @param {TUIEnterRoomOptions} options.options 进入房间的可选参数 (自 v2.5.0 支持)
197
+ * @returns {Promise<TUIRoomInfo>} roomInfo
198
+ * 该接口返回当前房间信息
199
+ *
200
+ * @example
201
+ * const roomEngine = new TUIRoomEngine();
202
+ * const roomDetailInfo = await roomEngine.enterRoom({
203
+ * roomId: '12345',
204
+ * roomType: TUIRoomType.kConference, // 设置房间类型为 TUIRoomType.kConference 类型
205
+ * options: {
206
+ * password: '1234',
207
+ * }
208
+ * });
209
+ */
210
+ enterRoom(options: {
211
+ roomId: string;
212
+ roomType: TUIRoomType;
213
+ options?: TUIEnterRoomOptions;
214
+ }): Promise<TUIRoomInfo>;
215
+ /**
216
+ * 解散房间接口,解散房间必须由房间所有者发起,解散房间之后房间不可进入
217
+ * @returns {Promise<void>}
218
+ *
219
+ * @example
220
+ * const roomEngine = new TUIRoomEngine();
221
+ * await roomEngine.destroyRoom();
222
+ */
223
+ destroyRoom(): Promise<void>;
224
+ /**
225
+ * 离开房间接口,用户在执行 enterRoom 之后可通过 exitRoom 离开房间
226
+ * @returns {Promise<void>}
227
+ *
228
+ * @example
229
+ * const roomEngine = new TUIRoomEngine();
230
+ * await roomEngine.exitRoom();
231
+ */
232
+ exitRoom(): Promise<void>;
233
+ /**
234
+ * 获取房间信息
235
+ * @param {object} options
236
+ * @param {string} options.roomId 要获取信息的房间Id。
237
+ * @param {TUIRoomType} options.roomType 要获取信息的房间类型。
238
+ * @returns {Promise<TUIRoomInfo>} roomInfo
239
+ * @example
240
+ * const roomEngine = new TUIRoomEngine();
241
+ * const roomInfo = await roomEngine.fetchRoomInfo({
242
+ * roomId: '12345',
243
+ * roomType: TUIRoomType.kConference,
244
+ * });
245
+ */
246
+ fetchRoomInfo(options?: {
247
+ roomId: string;
248
+ roomType: TUIRoomType;
249
+ }): Promise<TUIRoomInfo>;
250
+ /**
251
+ * 更新房间的名字(仅群主或者管理员可以调用)
252
+ * @param {object} options
253
+ * @param {string} options.roomName 更新当前房间的名字
254
+ * @returns {Promise<void>}
255
+ * @example
256
+ * const roomEngine = new TUIRoomEngine();
257
+ * await roomEngine.createRoom({ roomId: '12345' });
258
+ * await roomEngine.updateRoomNameByAdmin({ roomName: '新的名字' });
259
+ */
260
+ updateRoomNameByAdmin(options: {
261
+ roomName: string;
262
+ }): Promise<void>;
263
+ /**
264
+ * 更新房间上麦模式(仅群主或者管理员可以调用)
265
+ * 房间上麦模式更新后,roomEngine 会通过 TUIRoomEvents.onRoomSeatModeChanged 回调通知房间内用户
266
+ * @since v2.0.0
267
+ * @param {object} options
268
+ * @param {TUISeatMode} options.seatMode 发言类型
269
+ * @returns {Promise<void>}
270
+ *
271
+ * @example
272
+ * const roomEngine = new TUIRoomEngine();
273
+ * await roomEngine.updateRoomSeatModeByAdmin({
274
+ * seatMode: TUISeatMode.kApplyToTake, // 更新为申请上麦模式
275
+ * });
276
+ */
277
+ updateRoomSeatModeByAdmin(options: {
278
+ seatMode: TUISeatMode;
279
+ }): Promise<void>;
280
+ /**
281
+ * 更新房间密码(仅群主或者管理员可以调用)
282
+ *
283
+ * @since v2.5.0
284
+ * @param {object} options
285
+ * @param {string} options.password 房间密码,传入空字符串则代表关闭房间密码
286
+ * @returns {Promise<void>}
287
+ *
288
+ * @example
289
+ * const roomEngine = new TUIRoomEngine();
290
+ * await roomEngine.updateRoomPasswordByAdmin({
291
+ * password: '1234', // 更新密码为 1234
292
+ * });
293
+ */
294
+ updateRoomPasswordByAdmin(options: {
295
+ password: string;
296
+ }): Promise<void>;
297
+ /**
298
+ * 获取当前房间用户列表,注意该接口一次拉取的用户列表量最大为 50 个
299
+ *
300
+ * @param {object=} options 获取用户列表的参数
301
+ * @param {number=} options.nextSequence 偏移量,默认从 0 开始拉取用户<br/>
302
+ * @return {Promise<object>} result
303
+ * result.nextSequence 下一次拉取群组用户的偏移量,如果 nextSequence 为 0 则代表 userList 全部拉下来了
304
+ * result.userInfoList 本次拉取的 userList
305
+ *
306
+ * @example
307
+ * const roomEngine = new TUIRoomEngine();
308
+ * const userList = [];
309
+ * let result;
310
+ * let nextSequence = 0;
311
+ * do {
312
+ * result = await roomEngine.getUserList({ nextSequence });
313
+ * userList.push(...result.userInfoList);
314
+ * nextSequence = result.nextSequence;
315
+ * } while (nextSequence !== 0)
316
+ */
317
+ getUserList(options?: {
318
+ nextSequence?: number;
319
+ }): Promise<{
320
+ nextSequence: number;
321
+ userInfoList: Array<TUIUserInfo>;
322
+ }>;
323
+ /**
324
+ * 获取用户的详细信息
325
+ * @param {object} options 获取用户信息的参数
326
+ * @param {string} options.userId 根据 userId 获取该用户的详细信息
327
+ * @returns Promise<TUIUserInfo> userInfo
328
+ * 该接口返回指定用户的用户信息
329
+ *
330
+ * @example
331
+ * const roomEngine = new TUIRoomEngine();
332
+ * const userInfo = await roomEngine.getUserInfo({
333
+ * userId: 'user_12345',
334
+ * });
335
+ */
336
+ getUserInfo(options: {
337
+ userId: string;
338
+ }): Promise<any>;
339
+ /**
340
+ * 设置用户的自定义信息,该接口需要在进房后调用;
341
+ * 主持人可以设置自己,管理员及普通用户的自定义信息;
342
+ * 管理员可以设置自己及普通用户的自定义信息;
343
+ * 普通用户仅可以设置自己的自定义信息;
344
+ * @param {object} options 设置用户的自定义信息
345
+ * @param {string} options.userId 用户 userId
346
+ * @param {object} options.customInfo 用户自定义信息
347
+ *
348
+ * @example
349
+ * const roomEngine = new TUIRoomEngine();
350
+ * await roomEngine.setCustomInfoForUser({
351
+ * userId: 'user_12345',
352
+ * customInfo: {
353
+ * 'key1': 'value1',
354
+ * 'key2': 'value2',
355
+ * }
356
+ * });
357
+ */
358
+ setCustomInfoForUser(options: {
359
+ userId: string;
360
+ customInfo: Record<string, string>;
361
+ }): Promise<void>;
362
+ /**
363
+ * 设置房间的自定义信息,该接口仅主播进房后调用
364
+ * @since v3.1.0
365
+ * @param {object} options 设置房间自定义信息
366
+ * @param {string} options.metadata 自定义信息
367
+ *
368
+ * @example
369
+ * const roomEngine = new TUIRoomEngine();
370
+ * await roomEngine.setRoomMetadataByAdmin({
371
+ * metadata: JSON.stringify({key1: "value1", key2: "value2"}), // value 只能是 string
372
+ * });
373
+ */
374
+ setRoomMetadataByAdmin(options: {
375
+ metadata: string;
376
+ }): Promise<void>;
377
+ /**
378
+ * 获取房间的自定义信息
379
+ * @since v3.1.0
380
+ * @param {object} options 获取房间自定义信息
381
+ * @param {Array<string>} options.keys 自定义信息的 key 数组
382
+ *
383
+ * @example
384
+ * const roomEngine = new TUIRoomEngine();
385
+ * const result = await roomEngine.getRoomMetadata({
386
+ * keys: ["key1", "key2"] // key 只能是 string
387
+ * });
388
+ */
389
+ getRoomMetadata(options: {
390
+ keys: Array<string>;
391
+ }): Promise<any>;
392
+ /**
393
+ * 设置本地视频流的渲染位置
394
+ * @param {object} options 设置本地视频流的渲染位置的参数
395
+ * @param {string | Array<string> | null} options.view 本地视频流的渲染位置,如果传入 null 则不预览摄像头画面,但不影响摄像头采集,会正常推流。
396
+ * @returns {Promise<void>}
397
+ * @desc 自 v1.6.1 版本起,setLocalVideoView 不再需要传入 streamType 参数
398
+ *
399
+ * @example
400
+ * const roomEngine = new TUIRoomEngine();
401
+ *
402
+ * // 设置本地摄像头流的播放区域为 id 是 'preview-camera' 的 div 元素
403
+ * roomEngine.setLocalVideoView({
404
+ * view: 'preview-camera',
405
+ * });
406
+ */
407
+ setLocalVideoView(options: {
408
+ view: string | Array<string> | null;
409
+ streamType?: TUIVideoStreamType;
410
+ }): void;
411
+ /**
412
+ * 打开本地摄像头,开始视频流采集
413
+ * @param {object} options 设置本地流的参数
414
+ * @returns {Promise<void>}
415
+ * @example
416
+ * const roomEngine = new TUIRoomEngine();
417
+ *
418
+ * // 桌面端打开摄像头
419
+ * await roomEngine.openLocalCamera();
420
+ *
421
+ * // 移动端使用前置摄像头打开视频预览
422
+ * await roomEngine.openLocalCamera({ isFrontCamera: true });
423
+ * // 移动端使用后置摄像头打开视频预览
424
+ * await roomEngine.openLocalCamera({ isFrontCamera: false });
425
+ */
426
+ openLocalCamera(options?: {
427
+ isFrontCamera?: boolean;
428
+ }): Promise<void>;
429
+ /**
430
+ * 关闭本地摄像头
431
+ * @returns {Promise<void>}
432
+ *
433
+ * @example
434
+ * const roomEngine = new TUIRoomEngine();
435
+ * await roomEngine.closeLocalCamera();
436
+ */
437
+ closeLocalCamera(): Promise<void>;
438
+ /**
439
+ * 打开麦克风
440
+ * @returns {Promise<void>}
441
+ *
442
+ * @example
443
+ * const roomEngine = new TUIRoomEngine();
444
+ * await roomEngine.openLocalMicrophone();
445
+ */
446
+ openLocalMicrophone(): Promise<void>;
447
+ /**
448
+ * 关闭本地麦克风, 停止采集音频流
449
+ * @returns {Promise<void>}
450
+ *
451
+ * @example
452
+ * const roomEngine = new TUIRoomEngine();
453
+ * await roomEngine.closeLocalMicrophone();
454
+ */
455
+ closeLocalMicrophone(): Promise<void>;
456
+ /**
457
+ * 设置本地视频流的编码参数
458
+ * @param {object} options
459
+ * @param {TUIVideoQuality} options.quality
460
+ *
461
+ * - 360p TUIVideoQuality.kVideoQuality_360p <br/>
462
+ * - 540p TUIVideoQuality.kVideoQuality_540p <br/>
463
+ * - 720p TUIVideoQuality.kVideoQuality_720p <br/>
464
+ * - 1080p TUIVideoQuality.kVideoQuality_1080p <br/>
465
+ *
466
+ * @returns {Promise<void>}
467
+ *
468
+ * @example
469
+ * const roomEngine = new TUIRoomEngine();
470
+ * await roomEngine.updateVideoQuality({
471
+ * quality: TUIVideoQuality.kVideoQuality_360p,
472
+ * });
473
+ */
474
+ updateVideoQuality(options: {
475
+ quality: TUIVideoQuality;
476
+ }): Promise<void>;
477
+ /**
478
+ * 设置本地视频流的分辨率模式
479
+ * @param {object} options
480
+ * @param {TUIVideoStreamType} options.streamType
481
+ * @param {TUIResolutionMode} options.resolutionMode
482
+ *
483
+ * @returns {Promise<void>}
484
+ *
485
+ * @example
486
+ * const roomEngine = new TUIRoomEngine();
487
+ * await roomEngine.setVideoResolutionMode({
488
+ * type: TUIVideoStreamType.kCameraStream,
489
+ * resolutionMode: TUIResolutionMode.kResolutionMode_Landscape,
490
+ * });
491
+ */
492
+ setVideoResolutionMode(options: {
493
+ streamType: TUIVideoStreamType;
494
+ resolutionMode: TUIResolutionMode;
495
+ }): Promise<void>;
496
+ /**
497
+ * 设置本地视频流的详细编码参数
498
+ * @param {object} options
499
+ * @param {TUIVideoStreamType} options.streamType
500
+ * @param {TUIVideoEncoderParams} options.encoderParams
501
+ * @returns {Promise<void>}
502
+ *
503
+ * @example
504
+ * const roomEngine = new TUIRoomEngine();
505
+ * await roomEngine.updateVideoQualityEx({
506
+ * streamType: TUIVideoStreamType.kCameraStream,
507
+ * encoderParams: {
508
+ * videoResolution: TUIVideoQuality.kVideoQuality_720p,
509
+ * fps: 15,
510
+ * bitrate: 2000,
511
+ * resMode: TUIResolutionMode.kResolutionMode_Landscape,
512
+ * }
513
+ * });
514
+ */
515
+ updateVideoQualityEx(options: {
516
+ streamType: TUIVideoStreamType;
517
+ encoderParams: TUIVideoEncoderParams;
518
+ }): Promise<void>;
519
+ /**
520
+ * 设置本地音频的参数<br/>
521
+ * @param {object} options 设置本地音频的参数
522
+ * @param {TUIAudioQuality} options.quality
523
+ *
524
+ * - TUIAudioQuality.kAudioProfileSpeech:语言模式;采样率:16k<br/>
525
+ * - TUIAudioQuality.kAudioProfileDefault:标准模式(或者默认模式);采样率:48k<br/>
526
+ * - TUIAudioQuality.kAudioProfileMusic:音乐模式;采样率:48k
527
+ *
528
+ * @returns {Promise<void>}
529
+ *
530
+ * @example
531
+ * const roomEngine = new TUIRoomEngine();
532
+ * await roomEngine.updateAudioQuality({
533
+ * quality: TUIAudioQuality.kAudioProfileSpeech,
534
+ * });
535
+ */
536
+ updateAudioQuality(options: {
537
+ quality: TUIAudioQuality;
538
+ }): Promise<void>;
539
+ /**
540
+ * 开始向远端推本地视频流
541
+ * @returns {Promise<void>}
542
+ *
543
+ * @example
544
+ * const roomEngine = new TUIRoomEngine();
545
+ * await roomEngine.startPushLocalVideo();
546
+ */
547
+ startPushLocalVideo(): Promise<void>;
548
+ /**
549
+ * 停止向远端推本地视频流
550
+ * @returns {Promise<void>}
551
+ *
552
+ * @example
553
+ * const roomEngine = new TUIRoomEngine();
554
+ * await roomEngine.startPushLocalVideo();
555
+ */
556
+ stopPushLocalVideo(): Promise<void>;
557
+ /**
558
+ * 开始向远端推本地音频流
559
+ * @returns {Promise<void>}
560
+ *
561
+ * @example
562
+ * const roomEngine = new TUIRoomEngine();
563
+ * await roomEngine.muteLocalAudio();
564
+ * @since 1.5.1
565
+ */
566
+ muteLocalAudio(): Promise<void>;
567
+ /**
568
+ * 停止向远端推本地音频流
569
+ * @returns {Promise<void>}
570
+ *
571
+ * @example
572
+ * const roomEngine = new TUIRoomEngine();
573
+ * await roomEngine.unmuteLocalAudio();
574
+ * @since 1.5.1
575
+ */
576
+ unmuteLocalAudio(): Promise<void>;
577
+ /**
578
+ * 设置远端流渲染的区域
579
+ *
580
+ * @param {object} options 设设置远端流渲染区域的参数
581
+ * @param {string} options.userId 用户 Id
582
+ * @param {TUIVideoStreamType} options.streamType 用户流类型
583
+ * @param {string | Array<string>} options.view 播放远端用户流的 div 元素的 id
584
+ * @returns {Promise<void>}
585
+ *
586
+ * @example
587
+ * const roomEngine = new TUIRoomEngine();
588
+ *
589
+ * // 设置远端用户视频流在 id 为 'remote_preview_camera' 的区域播放
590
+ * roomEngine.setRemoteVideoView()({
591
+ * userId: 'user_1234',
592
+ * streamType: TUIVideoStreamType.kCameraStream,
593
+ * view: 'remote_preview_camera',
594
+ * });
595
+ *
596
+ * // 设置远端用户屏幕分享流在 id 为 'remote_preview_screen' 的区域播放
597
+ * roomEngine.setRemoteVideoView()({
598
+ * userId: 'user_1234',
599
+ * streamType: TUIVideoStreamType.kScreenStream,
600
+ * view: 'remote_preview_screen',
601
+ * });
602
+ */
603
+ setRemoteVideoView(options: {
604
+ userId: string;
605
+ streamType: TUIVideoStreamType;
606
+ view: string | Array<string>;
607
+ }): Promise<void>;
608
+ /**
609
+ * 开始播放远端用户视频流
610
+ *
611
+ * @param {object} options 开始播放远端用户视频流的参数
612
+ * @param {string} options.userId 用户 Id
613
+ * @param {TUIVideoStreamType} options.streamType 用户流类型
614
+ * @returns {Promise<void>}
615
+ *
616
+ * @example
617
+ * const roomEngine = new TUIRoomEngine();
618
+ * await roomEngine.startPlayRemoteVideo({
619
+ * userId: 'user_1234',
620
+ * streamType: TUIVideoStreamType.kCameraStream,
621
+ * });
622
+ */
623
+ startPlayRemoteVideo(options: {
624
+ userId: string;
625
+ streamType: TUIVideoStreamType;
626
+ }): Promise<void>;
627
+ /**
628
+ * 停止播放远端用户视频流
629
+ *
630
+ * @param {object} options 停止播放远端用户视频流的参数
631
+ * @param {string} options.userId 用户 Id
632
+ * @param {TUIVideoStreamType} options.streamType 用户流类型<br/>
633
+ *
634
+ * - TUIVideoStreamType.kCameraStream 视频流<br/>
635
+ * - TUIVideoStreamType.kScreenStream 屏幕分享流<br/>
636
+ * - TUIVideoStreamType.kCameraStreamLow 低清视频流
637
+ *
638
+ * @returns {Promise<void>}
639
+ *
640
+ * @example
641
+ * const roomEngine = new TUIRoomEngine();
642
+ * await roomEngine.stopPlayRemoteVideo({
643
+ * userId: 'user_1234',
644
+ * streamType: TUIVideoStreamType.kCameraStream,
645
+ * });
646
+ */
647
+ stopPlayRemoteVideo(options: {
648
+ userId: string;
649
+ streamType: TUIVideoStreamType;
650
+ }): Promise<void>;
651
+ /**
652
+ * 停止远端用户的音频流
653
+ * @param {object} options 停止远端用户音频流的参数
654
+ * @param {string} options.userId 停止远端用户的userId
655
+ * @param {boolean} options.isMute 是否停止远端用户的音频
656
+ * @returns {Promise<void>}
657
+ *
658
+ * @example
659
+ * const roomEngine = new TUIRoomEngine();
660
+ * await roomEngine.muteRemoteAudioStream({
661
+ * userId: 'user_1234',
662
+ * isMute: true,
663
+ * });
664
+ */
665
+ muteRemoteAudioStream(options: {
666
+ userId: string;
667
+ isMute: boolean;
668
+ }): Promise<void>;
669
+ /**
670
+ * 请求远端用户打开媒体设备
671
+ * @param {object} options 请求远端用户打开摄像头的参数
672
+ * @param {string} options.userId 用户 Id
673
+ * @param {TUIMediaDevice} options.device 请求的设备
674
+ * @param {number} options.timeout 超时时间。若 timeout 设置为 0 ,则无超时时间
675
+ * @param {Function} 请求回调,用来通知发起方请求被接受/拒绝/取消/超时/错误的回调
676
+ * @return {Promise<TUIRequest>} <br/>
677
+ * 该接口返回 request 结构体,当 request.requestId 不为 '' 时,用户可调用 cancelRequest 接口取消请求。
678
+ *
679
+ * @example
680
+ * const roomEngine = new TUIRoomEngine();
681
+ * const request = roomEngine.openRemoteDeviceByAdmin({
682
+ * userId: 'user_1234',
683
+ * device: TUIMediaDevice.kMicrophone //请求的设备为麦克风
684
+ * timeout: 0,
685
+ * requestCallback: ({ requestCallbackType, requestId, userId, code, message }) => {
686
+ * switch (requestCallbackType) {
687
+ * case TUIRequestCallbackType.kRequestAccepted:
688
+ * // 请求被接受
689
+ * break;
690
+ * case TUIRequestCallbackType.kRequestRejected:
691
+ * // 请求被拒绝
692
+ * break;
693
+ * case TUIRequestCallbackType.kRequestCancelled:
694
+ * // 请求已取消
695
+ * break;
696
+ * case TUIRequestCallbackType.kRequestTimeout:
697
+ * // 请求超时
698
+ * break;
699
+ * case TUIRequestCallbackType.kRequestError:
700
+ * // 请求错误
701
+ * break;
702
+ * default:
703
+ * break;
704
+ * }
705
+ * },
706
+ * });
707
+ */
708
+ openRemoteDeviceByAdmin(options: {
709
+ userId: string;
710
+ device: TUIMediaDevice;
711
+ timeout: number;
712
+ requestCallback?: (callbackInfo: TUIRequestCallback) => void;
713
+ }): Promise<TUIRequest>;
714
+ /**
715
+ * 参会者向主持人申请打开设备
716
+ *
717
+ * @param {object} options 请求远端用户打开摄像头的参数
718
+ * @param {TUIMediaDevice} options.device 请求的设备
719
+ * @param {number} options.timeout 超时时间。若 timeout 设置为 0 ,则无超时时间
720
+ * @param {Function} 请求回调,用来通知发起方请求被接受/拒绝/取消/超时/错误的回调
721
+ * @return {Promise<TUIRequest>} <br/>
722
+ * 该接口返回 request 结构体,当 request.requestId 不为 '' 时,用户可调用 cancelRequest 接口取消请求。
723
+ *
724
+ * @example
725
+ * const roomEngine = new TUIRoomEngine();
726
+ * const request = roomEngine.applyToAdminToOpenLocalDevice({
727
+ * device: TUIMediaDevice.kMicrophone, //请求打开麦克风
728
+ * timeout: 0,
729
+ * requestCallback: ({ requestCallbackType, requestId, userId, code, message }) => {
730
+ * switch (requestCallbackType) {
731
+ * case TUIRequestCallbackType.kRequestAccepted:
732
+ * // 请求被接受
733
+ * break;
734
+ * case TUIRequestCallbackType.kRequestRejected:
735
+ * // 请求被拒绝
736
+ * break;
737
+ * case TUIRequestCallbackType.kRequestCancelled:
738
+ * // 请求已取消
739
+ * break;
740
+ * case TUIRequestCallbackType.kRequestTimeout:
741
+ * // 请求超时
742
+ * break;
743
+ * case TUIRequestCallbackType.kRequestError:
744
+ * // 请求错误
745
+ * break;
746
+ * default:
747
+ * break;
748
+ * }
749
+ * },
750
+ * });
751
+ */
752
+ applyToAdminToOpenLocalDevice(options: {
753
+ device: TUIMediaDevice;
754
+ timeout: number;
755
+ requestCallback?: (callbackInfo: TUIRequestCallback) => void;
756
+ }): Promise<TUIRequest>;
757
+ /**
758
+ * 关闭远端用户媒体设备
759
+ *
760
+ * @param {object} options 关闭远端用户摄像头的参数
761
+ * @param {string} options.userId 用户 Id
762
+ * @param {TUIMediaDevice} options.device 用户 Id
763
+ * @returns {Promise<void>}
764
+ *
765
+ * @example
766
+ * const roomEngine = new TUIRoomEngine();
767
+ * await roomEngine.closeRemoteDeviceByAdmin({
768
+ * userId: 'user_1234',
769
+ * device: TUIMediaDevice.kMicrophone, //关闭掉麦克风
770
+ * });
771
+ */
772
+ closeRemoteDeviceByAdmin(options: {
773
+ userId: string;
774
+ device: TUIMediaDevice;
775
+ }): Promise<void>;
776
+ /**
777
+ * 取消已经发出的请求
778
+ * @param {object} options 取消已经发出请求的参数
779
+ * @param {string} options.requestId 请求 Id
780
+ * @returns {Promise<void>}
781
+ *
782
+ * @example
783
+ * const roomEngine = new TUIRoomEngine();
784
+ * await roomEngine.cancelRequest({
785
+ * requestId: '', // 请使用实际 requestId
786
+ * });
787
+ */
788
+ cancelRequest(options: {
789
+ requestId: string;
790
+ }): Promise<void>;
791
+ /**
792
+ * 回复远端用户的请求
793
+ * @param {object} options 回复远端用户的请求的参数
794
+ * @param {string} options.requestId 请求 Id
795
+ * @param {boolean} options.agree 是否同意
796
+ * @returns {Promise<void>}
797
+ *
798
+ * @example
799
+ * const roomEngine = new TUIRoomEngine();
800
+ *
801
+ * // 同意远端的请求
802
+ * await roomEngine.responseRemoteRequest({
803
+ * requestId: '', // 请使用实际 requestId
804
+ * agree: true,
805
+ * });
806
+ *
807
+ * // 拒绝远端的请求
808
+ * await roomEngine.responseRemoteRequest({
809
+ * requestId: '', // 请使用实际 requestId
810
+ * agree: false,
811
+ * });
812
+ */
813
+ responseRemoteRequest(options: {
814
+ requestId: string;
815
+ agree: boolean;
816
+ }): Promise<any>;
817
+ /**
818
+ * 禁止/允许所有用户打开媒体设备(此接口对于房主和管理员无效)
819
+ * @param {object} options
820
+ * @param {TUIMediaDevice} options.device 操作的媒体设备
821
+ * @param {boolean} options.isDisable 是否被禁止
822
+ * @returns {Promise<void>}
823
+ * @example
824
+ * // Example 1: 禁止所有用户打开麦克风
825
+ * await roomEngine.disableDeviceForAllUserByAdmin({
826
+ * device: TUIMediaDevice.kMicrophone,
827
+ * isDisable: true,
828
+ * })
829
+ * // Example 2: 允许所有用户打开麦克风
830
+ * await roomEngine.disableDeviceForAllUserByAdmin({
831
+ * device: TUIMediaDevice.kMicrophone,
832
+ * isDisable: false,
833
+ * })
834
+ */
835
+ disableDeviceForAllUserByAdmin(options: {
836
+ device: TUIMediaDevice;
837
+ isDisable: boolean;
838
+ }): Promise<void>;
839
+ /**
840
+ * 禁止/允许所有用户发送消息
841
+ * @param {object} options
842
+ * @param {boolean} options.isDisable 是否被禁止
843
+ * @returns {Promise<void>}
844
+ * @example
845
+ * await roomEngine.disableSendingMessageForAllUser({
846
+ * isDisable: true,
847
+ * })
848
+
849
+ */
850
+ disableSendingMessageForAllUser(options: {
851
+ isDisable: boolean;
852
+ }): Promise<void>;
853
+ /**
854
+ * 禁止/允许某个用户发送消息
855
+ * @param {object} options
856
+ * @param {string} options.userId 用户的 Id
857
+ * @param {boolean} options.isDisable 是否被禁止
858
+ * @returns {Promise<void>}
859
+ * @example
860
+ * await roomEngine.disableSendingMessageByAdmin({
861
+ * userId: 'user_1234',
862
+ * isDisable: true,
863
+ * })
864
+ */
865
+ disableSendingMessageByAdmin(options: {
866
+ userId: string;
867
+ isDisable: boolean;
868
+ }): Promise<void>;
869
+ /**
870
+ * 改变用户的角色,仅主持人可调用该接口
871
+ * @param {object} options 改变用户的角色,仅主持人可调用该接口的参数
872
+ * @param {string} options.userId 用户 Id
873
+ * @param {TUIRole} options.userRole 用户角色
874
+ * @returns {Promise<void>}
875
+ *
876
+ * @example
877
+ * const roomEngine = new TUIRoomEngine();
878
+ * // 将房间移交给用户 user_1234
879
+ * await roomEngine.changeUserRole({
880
+ * userId: 'user_1234',
881
+ * userRole: TUIRole.kRoomOwner,
882
+ * });
883
+ *
884
+ * // 将用户 user_1234 设置为房间管理员
885
+ * await roomEngine.changeUserRole({
886
+ * userId: 'user_1234',
887
+ * userRole: TUIRole.kAdministrator,
888
+ * });
889
+ */
890
+ changeUserRole(options: {
891
+ userId: string;
892
+ userRole: TUIRole;
893
+ }): Promise<void>;
894
+ /**
895
+ * 修改房间内用户名称
896
+ * @since v2.5.0
897
+ * @param {object} options 修改房间内用户名称,普通成员可修改自己的,管理员可修改自己和普通成员的。
898
+ * @param {string} options.userId 用户 Id
899
+ * @param {string} options.nameCard 房间内用户名称
900
+ * @returns {Promise<void>}
901
+ *
902
+ * @example
903
+ * const roomEngine = new TUIRoomEngine();
904
+ * // 修改房间内用户名称
905
+ * await roomEngine.changeUserNameCard({
906
+ * userId: 'user_1234',
907
+ * nameCard: 'jack',
908
+ * });
909
+ *
910
+ */
911
+ changeUserNameCard(options: {
912
+ userId: string;
913
+ nameCard: string;
914
+ }): Promise<void>;
915
+ /**
916
+ * 将用户踢出房间,仅主持人和管理员可调用该接口
917
+ * @param {object} options
918
+ * @param {string} options.userId 用户 Id
919
+ * @returns {Promise<void>}
920
+ *
921
+ * @example
922
+ * const roomEngine = new TUIRoomEngine();
923
+ * await roomEngine.kickRemoteUserOutOfRoom({
924
+ * userId: 'user_1234',
925
+ * });
926
+ */
927
+ kickRemoteUserOutOfRoom(options: {
928
+ userId: string;
929
+ }): Promise<void>;
930
+ /**
931
+ * 获取麦位列表
932
+ * @returns {Promise<TUISeatInfo[]>}
933
+ *
934
+ * @example
935
+ * const roomEngine = new TUIRoomEngine();
936
+ * const seatList = await roomEngine.getSeatList();
937
+ * ;
938
+ */
939
+ getSeatList(): Promise<TUISeatInfo[]>;
940
+ /**
941
+ * 麦下用户可调用 takeSeat 成为麦上用户,仅麦上用户可发布本地音视频流。<br/>
942
+ * 主持人&管理员调用 takeSeat 成功后即为麦上用户。<br/>
943
+ * roomInfo.seatMode 为 TUISeatMode.kFreeToTake 模式时,普通用户调用 takeSeat 方法成功后即为麦上用户。<br/>
944
+ * roomInfo.seatMode 为 TUISeatMode.kApplyToTake 模式时,普通用户调用 takeSeat 方法需要等待主持人/管理员的同意后成为麦上用户。<br/>
945
+ * 麦上用户的变更通过 TUIRoomEvents.onSeatListChanged 通知所有用户。<br/>
946
+ * @param {object} options 获取麦位的参数
947
+ * @param {number} options.seatIndex 麦位 index, 无麦位序号时设置为 -1
948
+ * @param {number} options.timeout 超时时间。若 timeout 设置为 0,则无超时时间
949
+ * @param {Function} options.requestCallback 请求回调,用来通知发起方请求被接受/拒绝/取消/超时/错误的回调
950
+ * @returns {Promise<TUIRequest>} <br/>
951
+ * 该接口返回 request 结构体,当 request.requestId 不为 '' 时,用户可调用 cancelRequest 接口取消上麦请求。
952
+ *
953
+ * @example
954
+ * const roomEngine = new TUIRoomEngine();
955
+ *
956
+ * // 情景一:主持人/管理员上麦
957
+ * // 情景二:roomInfo.seatMode 为 TUISeatMode.kFreeToTake 模式时,普通用户上麦
958
+ * await roomEngine.takeSeat({
959
+ * seatIndex: -1,
960
+ * timeout: 0,
961
+ * });
962
+ *
963
+ * // 情景三:roomInfo.seatMode 为 TUISeatMode.kApplyToTake 模式时,普通用户上麦
964
+ * const request = await roomEngine.instance?.takeSeat({
965
+ * seatIndex: -1,
966
+ * timeout: 0,
967
+ * requestCallback: ({ requestCallbackType, requestId, userId, code, message }) => {
968
+ * switch (requestCallbackType) {
969
+ * case TUIRequestCallbackType.kRequestAccepted:
970
+ * // 请求被接受
971
+ * break;
972
+ * case TUIRequestCallbackType.kRequestRejected:
973
+ * // 请求被拒绝
974
+ * break;
975
+ * case TUIRequestCallbackType.kRequestCancelled:
976
+ * // 请求已取消
977
+ * break;
978
+ * case TUIRequestCallbackType.kRequestTimeout:
979
+ * // 请求超时
980
+ * break;
981
+ * case TUIRequestCallbackType.kRequestError:
982
+ * // 请求错误
983
+ * break;
984
+ * default:
985
+ * break;
986
+ * }
987
+ * },
988
+ * });
989
+ */
990
+ takeSeat(options: {
991
+ seatIndex: number;
992
+ timeout: number;
993
+ requestCallback?: (callbackInfo: TUIRequestCallback) => void;
994
+ }): Promise<TUIRequest>;
995
+ /**
996
+ * 离开麦位
997
+ * @returns {Promise<void>}
998
+ *
999
+ * @example
1000
+ * const roomEngine = new TUIRoomEngine();
1001
+ * await roomEngine.leaveSeat();
1002
+ */
1003
+ leaveSeat(): Promise<void>;
1004
+ /**
1005
+ * 移麦
1006
+ *
1007
+ * 移麦成功后,SDK会通过 onSeatListChanged 回调通知房间内用户。
1008
+ *
1009
+ * @param {number} options.targetSeatIndex 移麦目标麦位 index, 移麦成功后您将会在此麦位上。
1010
+ * @returns {Promise<void>}
1011
+ * @example
1012
+ * const roomEngine = new TUIRoomEngine();
1013
+ * await roomEngine.moveToSeat({ targetSeatIndex: 1 });
1014
+ */
1015
+ moveToSeat(options: {
1016
+ targetSeatIndex: number;
1017
+ }): Promise<void>;
1018
+ /**
1019
+ * 邀请其他人上麦(仅房间主持人和管理员可调用此方法)
1020
+ * @param {object} options 邀请其他人上麦的参数
1021
+ * @param {number} options.seatIndex 麦位 index, roomType 为 TUIRoomType.kConference 时无需关心,填 -1 即可
1022
+ * @param {string} options.userId 用户 Id
1023
+ * @param {number} options.timeout 超时时间,设置为 0 时,无超时时间
1024
+ * @param {Function} options.requestCallback 请求回调,用来通知发起方请求被接受/拒绝/取消/超时/错误的回调
1025
+ * @returns {Promise<TUIRequest>} <br/>
1026
+ * 该接口返回 request 结构体,当 request.requestId 不为 '' 时,用户可调用 cancelRequest 接口取消请求。
1027
+ *
1028
+ * @example
1029
+ * const roomEngine = new TUIRoomEngine();
1030
+ * const request = await roomEngine.takeUserOnSeatByAdmin({
1031
+ * seatIndex: 0,
1032
+ * userId: 'user_1234',
1033
+ * timeout: 0,
1034
+ * requestCallback: ({ requestCallbackType, requestId, userId, code, message }) => {
1035
+ * switch (requestCallbackType) {
1036
+ * case TUIRequestCallbackType.kRequestAccepted:
1037
+ * // 请求被接受
1038
+ * break;
1039
+ * case TUIRequestCallbackType.kRequestRejected:
1040
+ * // 请求被拒绝
1041
+ * break;
1042
+ * case TUIRequestCallbackType.kRequestCancelled:
1043
+ * // 请求已取消
1044
+ * break;
1045
+ * case TUIRequestCallbackType.kRequestTimeout:
1046
+ * // 请求超时
1047
+ * break;
1048
+ * case TUIRequestCallbackType.kRequestError:
1049
+ * // 请求错误
1050
+ * break;
1051
+ * default:
1052
+ * break;
1053
+ * }
1054
+ * },
1055
+ * });
1056
+ */
1057
+ takeUserOnSeatByAdmin(options: {
1058
+ seatIndex: number;
1059
+ userId: string;
1060
+ timeout: number;
1061
+ requestCallback?: (callbackInfo: TUIRequestCallback) => void;
1062
+ }): Promise<TUIRequest>;
1063
+ /**
1064
+ * 将其他人踢下麦(仅房间主持人和管理员可调用此方法)
1065
+ * @param {object} options 要求其他人下麦的参数
1066
+ * @param {number} options.seatIndex 麦位 index
1067
+ * @param {string} options.userId 用户 Id
1068
+ * @returns {Promise<void>}
1069
+ *
1070
+ * @example
1071
+ * const roomEngine = new TUIRoomEngine();
1072
+ * await roomEngine.kickUserOffSeatByAdmin({
1073
+ * seatIndex: 0,
1074
+ * userId: 'user_1234',
1075
+ * });
1076
+ */
1077
+ kickUserOffSeatByAdmin(options: {
1078
+ seatIndex: number;
1079
+ userId: string;
1080
+ }): Promise<void>;
1081
+ /**
1082
+ * 锁定某个麦位状态(仅房间主持人和管理员可调用此方法)
1083
+ *
1084
+ * @param {object} options 锁定某个麦位需要的参数
1085
+ * @param {number} options.seatIndex 麦位索引
1086
+ * @param {TUISeatLockParams} options.lockParams 锁麦参数
1087
+ * @returns {Promise<void>}
1088
+ *
1089
+ * @example
1090
+ * const roomEngine = new TUIRoomEngine();
1091
+ * await roomEngine.lockSeatByAdmin({
1092
+ * seatIndex: -1,
1093
+ * lockParams: {
1094
+ * lockSeat: true,
1095
+ * lockVideo: true,
1096
+ * lockAudio: true,
1097
+ * }
1098
+ * });
1099
+ */
1100
+ lockSeatByAdmin(options: {
1101
+ seatIndex: number;
1102
+ lockParams: TUISeatLockParams;
1103
+ }): Promise<any>;
1104
+ /**
1105
+ * 主持人/管理员 获取房间内申请上麦用户的请求列表
1106
+ * @returns {Promise<TUIRequest[]>}
1107
+ *
1108
+ * @example
1109
+ * const roomEngine = new TUIRoomEngine();
1110
+ * const seatList = await roomEngine.getSeatApplicationList();
1111
+ * ;
1112
+ */
1113
+ getSeatApplicationList(): Promise<TUIRequest[]>;
1114
+ /**
1115
+ * @since v3.1.0
1116
+ * 发送文本消息
1117
+ * @param {object} options
1118
+ * @param {string} options.textContent 文本消息内容
1119
+ * @param {object} options.extensionInfo 扩展信息
1120
+ * @returns {Promise<void>}
1121
+ *
1122
+ * @example
1123
+ * const roomEngine = new TUIRoomEngine();
1124
+ * await roomEngine.sendTextMessage({
1125
+ * textContent: 'hello, everyone',
1126
+ * extensionInfo: {}
1127
+ * });
1128
+ */
1129
+ sendTextMessage(options: {
1130
+ textContent: string;
1131
+ extensionInfo: object;
1132
+ }): Promise<void>;
1133
+ /**
1134
+ * @since v3.1.0
1135
+ * 发送自定义消息
1136
+ * @param {object} options
1137
+ * @param {string} options.businessId 业务 Id
1138
+ * @param {string} options.data 自定义消息内容
1139
+ * @returns {Promise<void>}
1140
+ *
1141
+ * @example
1142
+ * const roomEngine = new TUIRoomEngine();
1143
+ * await roomEngine.sendCustomMessage({
1144
+ * businessId: '111',
1145
+ * data: '{"msg":"test"}',
1146
+ * });
1147
+ */
1148
+ sendCustomMessage(options: {
1149
+ businessId: string;
1150
+ data: string;
1151
+ }): Promise<void>;
1152
+ /**
1153
+ * 开始屏幕共享
1154
+ * @param {object=} options
1155
+ * @param {boolean=} [options.screenAudio=false] web 端屏幕共享是否可选共享系统声音, screenAudio 默认值为 false
1156
+ * @param {string=} options.view 非必填,本地预览屏幕分享的 dom 元素的 id
1157
+ * @returns {Promise<void>}
1158
+ *
1159
+ * @example
1160
+ * const roomEngine = new TUIRoomEngine();
1161
+ * // example 1: 开始屏幕分享
1162
+ * await roomEngine.startScreenSharing();
1163
+ * // example 2: 开始屏幕分享(可采集系统音频)
1164
+ * await roomEngine.startScreenSharing({ screenAudio: true });
1165
+ * // example 3: 开始屏幕分享并在本地预览
1166
+ * await roomEngine.startScreenSharing({ view: 'screen-preview' });
1167
+ */
1168
+ startScreenSharing(options?: {
1169
+ screenAudio?: boolean;
1170
+ view?: string;
1171
+ }): Promise<void>;
1172
+ /**
1173
+ * 停止屏幕共享
1174
+ * @returns {Promise<void>}
1175
+ *
1176
+ * @example
1177
+ * const roomEngine = new TUIRoomEngine();
1178
+ * await roomEngine.stopScreenSharing();
1179
+ */
1180
+ stopScreenSharing(): Promise<void>;
1181
+ /**
1182
+ * 开始屏幕共享 Electron
1183
+ * @param {object} options Electron 开始屏幕共享参数
1184
+ * @param {string} options.targetId 分享窗口 id, 可从 getScreenSharingTarget 获取
1185
+ * @param {string=} options.view 非必填,本地预览屏幕分享的 dom 元素的 id
1186
+ * @returns {Promise<void>}
1187
+ *
1188
+ * @example
1189
+ * const roomEngine = new TUIRoomEngine();
1190
+ * // example 1: 开始屏幕共享
1191
+ * await roomEngine.startScreenSharingElectron({ targetId: 'xxx' });
1192
+ * // example 2: 开始屏幕共享并在本地预览
1193
+ * await roomEngine.startScreenSharingElectron({ targetId: 'xxx', view: 'screen-preview' });
1194
+ *
1195
+ */
1196
+ startScreenSharingElectron(options: {
1197
+ targetId: string;
1198
+ view?: string;
1199
+ } | string): Promise<void>;
1200
+ /**
1201
+ * 停止屏幕共享 Electron
1202
+ * @returns {Promise<void>}
1203
+ *
1204
+ * @example
1205
+ * const roomEngine = new TUIRoomEngine();
1206
+ * await roomEngine.stopScreenSharingElectron();
1207
+ */
1208
+ stopScreenSharingElectron(): Promise<void>;
1209
+ /**
1210
+ * 获取屏幕分享列表 Electron
1211
+ * @returns {Promise<void>}
1212
+ *
1213
+ * @example
1214
+ * const roomEngine = new TUIRoomEngine();
1215
+ * const screenList = await roomEngine.getScreenSharingTarget();
1216
+ */
1217
+ getScreenSharingTarget(): Promise<Array<TRTCScreenCaptureSourceInfo>>;
1218
+ /**
1219
+ * 切换屏幕分享窗口 Electron
1220
+ * @param {object} options Electron 切换屏幕分享窗口参数
1221
+ * @param {string} options.targetId 分享窗口 id, 可从 getScreenSharingTarget 获取
1222
+ *
1223
+ * @returns {Promise<void>}
1224
+ *
1225
+ * @example
1226
+ * const roomEngine = new TUIRoomEngine();
1227
+ * await roomEngine.selectScreenSharingTarget({ targetId: 'xxx' });
1228
+ */
1229
+ selectScreenSharingTarget(options: {
1230
+ targetId: string;
1231
+ } | string): Promise<void>;
1232
+ private handleCatchErrorFunction;
1233
+ /**
1234
+ * 监听 roomEngine 的事件
1235
+ * @param event TUIRoomEvents
1236
+ * @param func function
1237
+ * @returns {void}
1238
+ *
1239
+ * @example
1240
+ * const roomEngine = new TUIRoomEngine();
1241
+ * roomEngine.on(event, func);
1242
+ */
1243
+ on(event: TUIRoomEvents, func: (...args: any[]) => void): void;
1244
+ private observerFunction;
1245
+ private supportForDeprecatedEvents;
1246
+ /**
1247
+ * 取消监听 roomEngine 的事件
1248
+ * @param event TUIRoomEvents
1249
+ * @param func function
1250
+ * @returns {void}
1251
+ *
1252
+ * @example
1253
+ * const roomEngine = new TUIRoomEngine();
1254
+ * roomEngine.off(event, func);
1255
+ */
1256
+ off(event: string, func: (...args: any[]) => void): void;
1257
+ private handleTrtcCloudBindEvent;
1258
+ private handleTrtcAutoPlayFailedEvent;
1259
+ /**
1260
+ * 获取摄像头设备列表<br>
1261
+ * @returns {Promise<TRTCDeviceInfo[]>} 摄像头列表
1262
+ * @example
1263
+ * const roomEngine = new TUIRoomEngine();
1264
+ * const cameralist = await roomEngine.getCameraDevicesList();
1265
+ * for (i = 0; i < cameralist.length; i++) {
1266
+ * var camera = cameralist[i];
1267
+ * console.info("camera deviceName: " + camera.deviceName + " deviceId:" + camera.deviceId);
1268
+ * }
1269
+ */
1270
+ getCameraDevicesList(): Promise<any>;
1271
+ /**
1272
+ * 获取麦克风设备列表<br>
1273
+ * @returns {Promise<TRTCDeviceInfo[]>} 麦克风列表
1274
+ * @example
1275
+ * const roomEngine = new TUIRoomEngine();
1276
+ * const micList = await roomEngine.getMicDevicesList();
1277
+ * for (i = 0; i < micList.length; i++) {
1278
+ * var mic = micList[i];
1279
+ * console.info("mic deviceName: " + mic.deviceName + " deviceId:" + mic.deviceId);
1280
+ * }
1281
+ */
1282
+ getMicDevicesList(): Promise<any>;
1283
+ /**
1284
+ * 获取扬声器设备列表<br>
1285
+ * @returns {Promise<TRTCDeviceInfo[]>} 扬声器列表
1286
+ * @example
1287
+ * const roomEngine = new TUIRoomEngine();
1288
+ * const speakerList = await roomEngine.getSpeakerDevicesList();
1289
+ * for (i = 0; i < speakerList.length; i++) {
1290
+ * var speaker = speakerList[i];
1291
+ * console.info("speaker deviceName: " + speaker.deviceName + " deviceId:" + speaker.deviceId);
1292
+ * }
1293
+ */
1294
+ getSpeakerDevicesList(): Promise<any>;
1295
+ /**
1296
+ * 设置要使用的摄像头设备<br>
1297
+ * @param {Object} options
1298
+ * @param {String} options.deviceId - 从 getCameraDevicesList 中得到的设备 ID
1299
+ * @returns {Promise<void>}
1300
+ * @example
1301
+ * const roomEngine = new TUIRoomEngine();
1302
+ * await roomEngine.setCurrentCameraDevice({ deviceId: '' });
1303
+ */
1304
+ setCurrentCameraDevice(options: {
1305
+ deviceId: string;
1306
+ }): Promise<void>;
1307
+ /**
1308
+ * 切换前后置摄像头,该接口只适用于移动端浏览器
1309
+ * @param {Object} options
1310
+ * @param {boolean} options.isFrontCamera 是否切换为前置摄像头
1311
+ *
1312
+ * // 移动端切换为前置摄像头
1313
+ * await roomEngine.switchCamera({ isFrontCamera: true });
1314
+ * // 移动端切换为后置摄像头
1315
+ * await roomEngine.switchCamera({ isFrontCamera: false });
1316
+ */
1317
+ switchCamera(options: {
1318
+ isFrontCamera: boolean;
1319
+ }): Promise<void>;
1320
+ /**
1321
+ * 设置要使用的麦克风设备<br>
1322
+ * @param {Object} options
1323
+ * @param {String} options.deviceId - 从 getMicDevicesList 中得到的设备 ID
1324
+ * @returns {Promise<void>}
1325
+ * @example
1326
+ * const roomEngine = new TUIRoomEngine();
1327
+ * await roomEngine.setCurrentMicDevice({ deviceId: '' });
1328
+ */
1329
+ setCurrentMicDevice(options: {
1330
+ deviceId: string;
1331
+ }): Promise<void>;
1332
+ /**
1333
+ * 设置要使用的扬声器设备<br>
1334
+ * @param {Object} options
1335
+ * @param {String} options.deviceId - 从 getSpeakerDevicesList 中得到的设备 ID
1336
+ * @returns {Promise<void>}
1337
+ * @example
1338
+ * const roomEngine = new TUIRoomEngine();
1339
+ * await roomEngine.setCurrentSpeakerDevice({ deviceId: '' });
1340
+ */
1341
+ setCurrentSpeakerDevice(options: {
1342
+ deviceId: string;
1343
+ }): Promise<void>;
1344
+ /**
1345
+ * 获取当前正在使用的摄像头设备
1346
+ * @returns {TRTCDeviceInfo} 设备信息,能获取设备 ID 和设备名称
1347
+ * @example
1348
+ * const roomEngine = new TUIRoomEngine();
1349
+ * const currentCameraDevice = roomEngine.getCurrentCameraDevice();
1350
+ */
1351
+ getCurrentCameraDevice(): TRTCDeviceInfo;
1352
+ /**
1353
+ * 获取当前正在使用的麦克风设备
1354
+ * @returns {TRTCDeviceInfo} 设备信息,能获取设备 ID 和设备名称
1355
+ * @example
1356
+ * const roomEngine = new TUIRoomEngine();
1357
+ * const currentMicDevice = roomEngine.getCurrentMicDevice();
1358
+ */
1359
+ getCurrentMicDevice(): TRTCDeviceInfo;
1360
+ /**
1361
+ * 获取当前正在使用的扬声器设备
1362
+ * @returns {TRTCDeviceInfo} 设备信息,能获取设备 ID 和设备名称
1363
+ * @example
1364
+ * const roomEngine = new TUIRoomEngine();
1365
+ * const currentSpeakerDevice = roomEngine.getCurrentSpeakerDevice();
1366
+ */
1367
+ getCurrentSpeakerDevice(): TRTCDeviceInfo;
1368
+ /**
1369
+ * 开始进行摄像头测试
1370
+ * @param {string} view 显示摄像头测试的视频区域, 传入的 view 为承载预览画面 div 元素的 id
1371
+ * @returns {Promise<void>}
1372
+ *
1373
+ * @example
1374
+ * const roomEngine = new TUIRoomEngine();
1375
+ * await roomEngine.startCameraDeviceTest({ view: 'test-preview' });
1376
+ */
1377
+ startCameraDeviceTest(options: {
1378
+ view: string;
1379
+ }): Promise<void>;
1380
+ /**
1381
+ * 停止摄像头测试
1382
+ * @returns {void}
1383
+ * @example
1384
+ * const roomEngine = new TUIRoomEngine();
1385
+ * await roomEngine.stopCameraDeviceTest();
1386
+ */
1387
+ stopCameraDeviceTest(): Promise<void>;
1388
+ /**
1389
+ * 开始进行麦克风测试
1390
+ * @param options
1391
+ * @param {number} options.interval 麦克风音量的回调时间
1392
+ *
1393
+ * @example
1394
+ * const roomEngine = new TUIRoomEngine();
1395
+ * await roomEngine.startMicDeviceTest({interval: 200});
1396
+ */
1397
+ startMicDeviceTest(options: {
1398
+ interval: number;
1399
+ }): Promise<void>;
1400
+ /**
1401
+ * 停止进行麦克风测试
1402
+ * @example
1403
+ * const roomEngine = new TUIRoomEngine();
1404
+ * await roomEngine.stopMicDeviceTest();
1405
+ */
1406
+ stopMicDeviceTest(): Promise<void>;
1407
+ /**
1408
+ * v2.1.0 版本起支持使用 getMediaDeviceManager 获取 deviceManager 模块
1409
+ * @since v2.1.0
1410
+ * @example
1411
+ * // 获取设备管理模块
1412
+ * const deviceManager = roomEngine.getMediaDeviceManager();
1413
+ *
1414
+ * @returns {TUIRoomDeviceManager} deviceManager
1415
+ */
1416
+ getMediaDeviceManager(): TUIRoomDeviceManager;
1417
+ /**
1418
+ * v2.5.0 版本起支持使用 getConferenceListManager 获取 conferenceListManager 模块
1419
+ * @since v2.5.0
1420
+ *
1421
+ * @example
1422
+ * // 获取会议列表
1423
+ * const conferenceListManager = roomEngine.getConferenceListManager();
1424
+ *
1425
+ * @returns {TUIConferenceListManager} conferenceListManager
1426
+ */
1427
+ getConferenceListManager(): TUIConferenceListManager;
1428
+ /**
1429
+ * v3.0.0 版本起支持 getLiveListManager 获取 TUILiveListManager 模块
1430
+ *
1431
+ * @since v3.0.0
1432
+ * @returns {TUILiveListManager}
1433
+ *
1434
+ * @example
1435
+ * const roomEngine = new TUIRoomEngine();
1436
+ * const liveListManager = roomEngine.getLiveListManager();
1437
+ */
1438
+ getLiveListManager(): TUILiveListManager;
1439
+ /**
1440
+ * v3.0.0 版本起支持 getLiveLayoutManager 获取 TUILiveLayoutManager 模块
1441
+ *
1442
+ * @since v3.0.0
1443
+ * @returns {TUILiveLayoutManager}
1444
+ *
1445
+ * @example
1446
+ * const roomEngine = new TUIRoomEngine();
1447
+ * const liveLayoutManager = roomEngine.getLiveLayoutManager();
1448
+ */
1449
+ getLiveLayoutManager(): TUILiveLayoutManager;
1450
+ /**
1451
+ * v3.2.0 版本起支持 getLiveConnectionManager 获取 TUILiveConnectionManager 模块
1452
+ *
1453
+ * @since v3.2.0
1454
+ * @returns {TUILiveConnectionManager}
1455
+ *
1456
+ * @example
1457
+ * const roomEngine = new TUIRoomEngine();
1458
+ * const liveConnectionManager = roomEngine.getLiveConnectionManager();
1459
+ */
1460
+ getLiveConnectionManager(): TUILiveConnectionManager;
1461
+ /**
1462
+ * v2.6.0 版本起支持使用 getConferenceInvitationManager 获取 conferenceInvitation 模块
1463
+ * @since v2.6.0
1464
+ *
1465
+ * @example
1466
+ * //获取会中邀请
1467
+ * const conferenceInvitationManager = roomEngine.getConferenceInvitationManager();
1468
+ *
1469
+ * @returns {TUIConferenceInvitationManager} conferenceInvitationManager
1470
+ */
1471
+ getConferenceInvitationManager(): TUIConferenceInvitationManager;
1472
+ /**
1473
+ * 获取 trtcCloud 实例
1474
+ * @returns {TRTCCloud} trtcCloud
1475
+ * web 端 trtcCloud 能力请查看:https://web.sdk.qcloud.com/trtc/webrtc/trtcCloud/doc/TRTCCloud.html
1476
+ *
1477
+ * @example
1478
+ * const roomEngine = new TUIRoomEngine();
1479
+ * const trtcCloud = roomEngine.getTRTCCloud();
1480
+ */
1481
+ getTRTCCloud(): TRTCCloud;
1482
+ /**
1483
+ * 获取 tim 实例
1484
+ * @returns {TIM} tim
1485
+ * web 端 tim 能力请查看:https://web.sdk.qcloud.com/im/doc/zh-cn/SDK.html
1486
+ *
1487
+ * @example
1488
+ * const roomEngine = new TUIRoomEngine();
1489
+ * const tim = roomEngine.getTIM();
1490
+ */
1491
+ getTIM(): ChatSDK;
1492
+ destroy(): void;
1493
+ /**
1494
+ * 实验性接口
1495
+ * @private
1496
+ * @param jsonStr jason 字符串
1497
+ * @returns
1498
+ */
1499
+ static callExperimentalAPI(jsonStr: string): Promise<void>;
1500
+ private static handleSetFramework;
1501
+ }
1502
+ export default TUIRoomEngine;