@tencentcloud/tuiroom-engine-electron 1.2.0 → 1.3.0

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/index.d.ts CHANGED
@@ -18,7 +18,7 @@ declare class TUIRoomEngine {
18
18
  private logger;
19
19
  private roomId;
20
20
  private localVideoQuality;
21
- private LocalAudioQuality;
21
+ private localAudioQuality;
22
22
  static setModule(Module: any): void;
23
23
  static once(event: string, func: Function): void;
24
24
  constructor();
@@ -34,6 +34,7 @@ declare class TUIRoomEngine {
34
34
  * @param args
35
35
  */
36
36
  private JSCallNativeFunctionPromise;
37
+ private JSCallNativeRequestFunctionPromise;
37
38
  /**
38
39
  * 登录 TUIRoomEngine
39
40
  *
@@ -66,6 +67,9 @@ declare class TUIRoomEngine {
66
67
  * @param {object} options
67
68
  * @param {string} options.userName 用户名,必填
68
69
  * @param {string} options.avatarUrl 用户头像,必填
70
+ * @param {object=} options.customInfo 用户自定义资料
71
+ * App 管理员可以通过 [即时通信 IM 控制台 > 用户自定义字段](https://console.cloud.tencent.com/im/user-data) 新增自定义资料字段
72
+ * 用户自定义字段生效以后,用户可以调用 setSelfInfo 接口设置自定义资料
69
73
  * @returns {Promise<void>}
70
74
  *
71
75
  * @example
@@ -74,10 +78,21 @@ declare class TUIRoomEngine {
74
78
  * userName: '', // 填写您的新用户名
75
79
  * avatarUrl: '', // 填写您的新头像地址
76
80
  * })
81
+ *
82
+ * // 设置当前用户用户名, 用户头像及用户自定义消息
83
+ * await TUIRoomEngine.setSelfInfo({
84
+ * userName: '', // 填写您的新用户名
85
+ * avatarUrl: '', // 填写您的新头像地址
86
+ * customInfo: { // 填写用户自定义消息
87
+ * Tag_Profile_Custom_Test: 'value1',
88
+ * Tag_Profile_Custom_profile: 'value2,
89
+ * },
90
+ * })
77
91
  */
78
92
  static setSelfInfo(options: {
79
93
  userName: string;
80
94
  avatarUrl: string;
95
+ customInfo?: Record<string, any>;
81
96
  }): Promise<void>;
82
97
  /** 获取当前用户信息接口
83
98
  * @returns {Promise<TUILoginUserInfo>} loginUserInfo
@@ -123,8 +138,6 @@ declare class TUIRoomEngine {
123
138
  * @param {number=} options.maxSeatCount 最大麦位数量 (创建房间可选参数)<br>
124
139
  * roomType 为 TUIRoomType.kConference (教育及会议场景) 时,maxSeatCount 值不做限制;
125
140
  * roomType 为 TUIRoomType.kLivingRoom (直播场景) 时,maxSeatCount 最大限制为 16;
126
- * @param {boolean=} [options.enableCDNStreaming=false] 是否开启 CDN 直播流,默认值为 false
127
- * @param {string=} [options.cdnStreamDomain=''] 直播推流域名,默认值为空
128
141
  * @returns {Promise<void>}
129
142
  *
130
143
  * @example
@@ -145,8 +158,6 @@ declare class TUIRoomEngine {
145
158
  isCameraDisableForAllUser?: boolean;
146
159
  isMessageDisableForAllUser?: boolean;
147
160
  maxSeatCount?: number;
148
- enableCDNStreaming?: boolean;
149
- cdnStreamDomain?: string;
150
161
  }): Promise<void>;
151
162
  /**
152
163
  * 进入房间接口
@@ -194,7 +205,7 @@ declare class TUIRoomEngine {
194
205
  fetchRoomInfo(): Promise<TUIRoomInfo>;
195
206
  /**
196
207
  * 更新房间的名字(仅群主或者管理员可以调用)
197
- * @param {object} options 获取当前房间的名字
208
+ * @param {object} options
198
209
  * @param {string} options.roomName 更新当前房间的名字
199
210
  * @returns {Promise<void>}
200
211
  * @example
@@ -234,7 +245,7 @@ declare class TUIRoomEngine {
234
245
  * const userList = [];
235
246
  * let result;
236
247
  * do {
237
- * result = await globalProperties.roomEngine.getUserList();
248
+ * result = await roomEngine.getUserList();
238
249
  * userList.push(...result.userInfoList);
239
250
  * } while (result.nextSequence !== 0)
240
251
  */
@@ -258,113 +269,236 @@ declare class TUIRoomEngine {
258
269
  userId: string;
259
270
  }): Promise<any>;
260
271
  /**
261
- * 设置房间麦位最大值
272
+ * 设置本地流的渲染位置
273
+ * @param {object} options 设置本地流的渲染位置的参数
274
+ * @param {TUIVideoStreamType} options.streamType 本地流类型
275
+ * @param {string} options.view streamType 对应的流渲染的 div 元素的 id
276
+ * @returns {Promise<void>}
277
+ *
278
+ * @example
279
+ * const roomEngine = new TUIRoomEngine();
280
+ *
281
+ * // 设置本地摄像头流的播放区域为 id 是 'preview-camera' 的 div 元素
282
+ * roomEngine.setLocalVideoView({
283
+ * streamType: TUIVideoStreamType.kCameraStream,
284
+ * view: 'preview-camera',
285
+ * });
286
+ *
287
+ * // 设置本地屏幕分享流的播放区域为 id 是 'preview-screen' 的 div 元素
288
+ * roomEngine.setLocalVideoView({
289
+ * streamType: TUIVideoStreamType.kScreenStream,
290
+ * view: 'preview-screen',
291
+ * });
292
+ */
293
+ setLocalVideoView(options: {
294
+ streamType: TUIVideoStreamType;
295
+ view: string;
296
+ }): void;
297
+ /**
298
+ * 打开本地摄像头,开始视频流采集
299
+ * @param {object} options 设置本地流的参数
300
+ * @returns {Promise<void>}
301
+ * @example
302
+ * const roomEngine = new TUIRoomEngine();
303
+ * await roomEngine.openLocalCamera();
304
+ */
305
+ openLocalCamera(): Promise<void>;
306
+ /**
307
+ * 关闭本地摄像头
308
+ * @returns {Promise<void>}
309
+ *
310
+ * @example
311
+ * const roomEngine = new TUIRoomEngine();
312
+ * await roomEngine.closeLocalCamera();
313
+ */
314
+ closeLocalCamera(): Promise<void>;
315
+ /**
316
+ * 打开麦克风
317
+ * @returns {Promise<void>}
318
+ *
319
+ * @example
320
+ * const roomEngine = new TUIRoomEngine();
321
+ * await roomEngine.openLocalMicrophone();
322
+ */
323
+ openLocalMicrophone(): Promise<void>;
324
+ /**
325
+ * 关闭本地麦克风, 停止采集音频流
326
+ * @returns {Promise<void>}
327
+ *
328
+ * @example
329
+ * const roomEngine = new TUIRoomEngine();
330
+ * await roomEngine.closeLocalMicrophone();
331
+ */
332
+ closeLocalMicrophone(): Promise<void>;
333
+ /**
334
+ * 设置本地视频流的编码参数
262
335
  * @param {object} options
263
- * @param {number} options.maxSeatCount 设置房间麦位最大值<br/>
264
- * roomType 为 TUIRoomType.kConference (教育及会议场景) 时,maxSeatCount 值不做限制;
265
- * roomType TUIRoomType.kLivingRoom (直播场景) 时,maxSeatCount 最大限制为 16;
336
+ * @param {TUIVideoQuality} options.quality
337
+ *
338
+ * - 360p TUIVideoQuality.kVideoQuality_360p <br/>
339
+ * - 540p TUIVideoQuality.kVideoQuality_540p <br/>
340
+ * - 720p TUIVideoQuality.kVideoQuality_720p <br/>
341
+ * - 1080p TUIVideoQuality.kVideoQuality_1080p <br/>
342
+ *
266
343
  * @returns {Promise<void>}
344
+ *
345
+ * @example
267
346
  * const roomEngine = new TUIRoomEngine();
268
- * await roomEngine.createRoom({ roomId: '12345' });
269
- * await roomEngine.setMaxSeatCount({ maxSeatCount: 16 })
347
+ * await roomEngine.updateVideoQuality({
348
+ * quality: TUIVideoQuality.kVideoQuality_360p,
349
+ * });
270
350
  */
271
- setMaxSeatCount(options: {
272
- maxSeatCount: number;
351
+ updateVideoQuality(options: {
352
+ quality: TUIVideoQuality;
273
353
  }): Promise<void>;
274
- private JSCallNativeRequestFunctionPromise;
275
354
  /**
276
- * 麦下用户可调用 takeSeat 成为麦上用户,仅麦上用户可发布本地音视频流。<br/>
277
- * roomInfo.enableSeatControl true 时,普通用户调用 takeSeat 方法需要等待主持人/管理员的同意后成为麦上用户。<br/>
278
- * roomInfo.enableSeatControl 为 false 时,普通用户调用 takeSeat 方法成功后即为麦上用户。<br/>
279
- * 主持人&管理员调用 takeSeat 成功后即为麦上用户。<br/>
280
- * 麦上用户的变更通过 TUIRoomEvents.onSeatListChanged 通知所有用户。<br/>
281
- * @param {object} options 获取麦位的参数
282
- * @param {number} options.seatIndex 麦位 index, 无麦位序号时设置为 -1
283
- * @param {number} options.timeout 超时时间。若 timeout 设置为 0,则无超时时间
284
- * @param {Function} options.requestCallback 请求回调,用来通知发起方请求被接受/拒绝/取消/超时/错误的回调
285
- * @returns {Promise<number>} <br/>
286
- * 当 roomIno.enableSeatControl 为 true,普通用户调用该接口时返回 request 结构体,普通用户可使用 request.requestId 调用 cancelRequest 接口取消上麦请求。
355
+ * 设置本地音频的参数<br/>
356
+ * @param {object} options 设置本地音频的参数
357
+ * @param {TUIAudioQuality} options.quality
358
+ *
359
+ * - TUIAudioQuality.kAudioProfileSpeech:语言模式;采样率:16k<br/>
360
+ * - TUIAudioQuality.kAudioProfileDefault:标准模式(或者默认模式);采样率:48k<br/>
361
+ * - TUIAudioQuality.kAudioProfileMusic:音乐模式;采样率:48k
362
+ *
363
+ * @returns {Promise<void>}
287
364
  *
288
365
  * @example
289
366
  * const roomEngine = new TUIRoomEngine();
367
+ * await roomEngine.updateAudioQuality({
368
+ * quality: TUIAudioQuality.kAudioProfileSpeech,
369
+ * });
370
+ */
371
+ updateAudioQuality(options: {
372
+ quality: TUIAudioQuality;
373
+ }): Promise<void>;
374
+ /**
375
+ * 开始向远端推本地视频流
376
+ * @returns {Promise<void>}
290
377
  *
291
- * // 情景一:主持人/管理员上麦
292
- * // 情景二:当 roomInfo.enableSeatControl false 时,普通用户上麦
293
- * await roomEngine.takeSeat({
294
- * seatIndex: -1,
295
- * timeout: 0,
378
+ * @example
379
+ * const roomEngine = new TUIRoomEngine();
380
+ * await roomEngine.startPushLocalVideo();
381
+ */
382
+ startPushLocalVideo(): Promise<void>;
383
+ /**
384
+ * 停止向远端推本地视频流
385
+ * @returns {Promise<void>}
386
+ *
387
+ * @example
388
+ * const roomEngine = new TUIRoomEngine();
389
+ * await roomEngine.startPushLocalVideo();
390
+ */
391
+ stopPushLocalVideo(): Promise<void>;
392
+ /**
393
+ * 开始向远端推本地音频流
394
+ * @returns {Promise<void>}
395
+ *
396
+ * @example
397
+ * const roomEngine = new TUIRoomEngine();
398
+ * await roomEngine.startPushLocalAudio();
399
+ */
400
+ startPushLocalAudio(): Promise<void>;
401
+ /**
402
+ * 停止向远端推本地音频流
403
+ * @returns {Promise<void>}
404
+ *
405
+ * @example
406
+ * const roomEngine = new TUIRoomEngine();
407
+ * await roomEngine.stopPushLocalAudio();
408
+ */
409
+ stopPushLocalAudio(): Promise<void>;
410
+ /**
411
+ * 设置远端流渲染的区域
412
+ *
413
+ * @param {object} options 设设置远端流渲染区域的参数
414
+ * @param {string} options.userId 用户 Id
415
+ * @param {TUIVideoStreamType} options.streamType 用户流类型
416
+ * @param {string} options.view 播放远端用户流的 div 元素的 id
417
+ * @returns {Promise<void>}
418
+ *
419
+ * @example
420
+ * const roomEngine = new TUIRoomEngine();
421
+ *
422
+ * // 设置远端用户视频流在 id 为 'remote_preview_camera' 的区域播放
423
+ * roomEngine.setRemoteVideoView()({
424
+ * userId: 'user_1234',
425
+ * streamType: TUIVideoStreamType.kCameraStream,
426
+ * view: 'remote_preview_camera',
296
427
  * });
297
428
  *
298
- * // 情景三:当 roomInfo.enableSeatControltrue 时,普通用户上麦
299
- * const request = await roomEngine.instance?.takeSeat({
300
- * seatIndex: -1,
301
- * timeout: 0,
302
- * requestCallback: ({ requestCallbackType, requestId, userId, code, message }) => {
303
- * switch (requestCallbackType) {
304
- * case TUIRequestCallbackType.kRequestAccepted:
305
- * // 请求被接受
306
- * break;
307
- * case TUIRequestCallbackType.kRequestRejected:
308
- * // 请求被拒绝
309
- * break;
310
- * case TUIRequestCallbackType.kRequestCancelled:
311
- * // 请求已取消
312
- * break;
313
- * case TUIRequestCallbackType.kRequestTimeout:
314
- * // 请求超时
315
- * break;
316
- * case TUIRequestCallbackType.kRequestError:
317
- * // 请求错误
318
- * break;
319
- * default:
320
- * break;
321
- * }
322
- * },
429
+ * // 设置远端用户屏幕分享流在 id'remote_preview_screen' 的区域播放
430
+ * roomEngine.setRemoteVideoView()({
431
+ * userId: 'user_1234',
432
+ * streamType: TUIVideoStreamType.kScreenStream,
433
+ * view: 'remote_preview_screen',
323
434
  * });
324
435
  */
325
- takeSeat(options: {
326
- seatIndex: number;
327
- timeout: number;
328
- requestCallback?: (callbackInfo: TUIRequestCallback) => void;
329
- }): Promise<TUIRequest>;
436
+ setRemoteVideoView(options: {
437
+ userId: string;
438
+ streamType: TUIVideoStreamType;
439
+ view: string;
440
+ }): Promise<void>;
330
441
  /**
331
- * 离开麦位
442
+ * 开始播放远端用户视频流
443
+ *
444
+ * @param {object} options 开始播放远端用户视频流的参数
445
+ * @param {string} options.userId 用户 Id
446
+ * @param {TUIVideoStreamType} options.streamType 用户流类型
332
447
  * @returns {Promise<void>}
333
448
  *
334
449
  * @example
335
450
  * const roomEngine = new TUIRoomEngine();
336
- * await roomEngine.leaveSeat();
451
+ * await roomEngine.startPlayRemoteVideo({
452
+ * userId: 'user_1234',
453
+ * streamType: TUIVideoStreamType.kCameraStream,
454
+ * });
337
455
  */
338
- leaveSeat(): Promise<void>;
456
+ startPlayRemoteVideo(options: {
457
+ userId: string;
458
+ streamType: TUIVideoStreamType;
459
+ }): Promise<void>;
339
460
  /**
340
- * 获取麦位列表
341
- * @returns {Promise<TUISeatInfo[]>}
461
+ * 停止播放远端用户视频流
462
+ *
463
+ * @param {object} options 停止播放远端用户视频流的参数
464
+ * @param {string} options.userId 用户 Id
465
+ * @param {TUIVideoStreamType} options.streamType 用户流类型<br/>
466
+ *
467
+ * - TUIVideoStreamType.kCameraStream 视频流<br/>
468
+ * - TUIVideoStreamType.kScreenStream 屏幕分享流<br/>
469
+ * - TUIVideoStreamType.kCameraStreamLow 低清视频流
470
+ *
471
+ * @returns {Promise<void>}
342
472
  *
343
473
  * @example
344
474
  * const roomEngine = new TUIRoomEngine();
345
- * const seatList = await roomEngine.getSeatList();
346
- * ;
475
+ * await roomEngine.stopPlayRemoteVideo({
476
+ * userId: 'user_1234',
477
+ * streamType: TUIVideoStreamType.kCameraStream,
478
+ * });
347
479
  */
348
- getSeatList(): Promise<TUISeatInfo[]>;
480
+ stopPlayRemoteVideo(options: {
481
+ userId: string;
482
+ streamType: TUIVideoStreamType;
483
+ }): Promise<void>;
349
484
  /**
350
- * 锁定某个麦位状态
351
- *
352
- * @param {object} options 锁定某个麦位需要的参数
353
- * @param {number} options.seatIndex 麦位索引
354
- * @param {TUISeatLockParams} options.lockParams 设备
485
+ * 停止远端用户的音频流
486
+ * @param {object} options 停止远端用户音频流的参数
487
+ * @param {string} options.userId 停止远端用户的userId
488
+ * @param {boolean} options.isMute 是否停止远端用户的音频
355
489
  * @returns {Promise<void>}
356
490
  *
357
491
  * @example
358
492
  * const roomEngine = new TUIRoomEngine();
359
- * await roomEngine.lockSeatByAdmin({
360
- * seatIndex: -1,
361
- * lockParams: TUISeatLockParams.lockVideo
493
+ * await roomEngine.muteRemoteAudioStream({
494
+ * userId: 'user_1234',
495
+ * isMute: true,
362
496
  * });
363
497
  */
364
- lockSeatByAdmin(options: {
365
- seatIndex: number;
366
- lockParams: TUISeatLockParams;
367
- }): Promise<any>;
498
+ muteRemoteAudioStream(options: {
499
+ userId: string;
500
+ isMute: boolean;
501
+ }): Promise<void>;
368
502
  /**
369
503
  * 请求远端用户打开媒体设备
370
504
  * @param {object} options 请求远端用户打开摄像头的参数
@@ -472,69 +606,6 @@ declare class TUIRoomEngine {
472
606
  userId: string;
473
607
  device: TUIMediaDevice;
474
608
  }): Promise<void>;
475
- /**
476
- * 邀请其他人上麦
477
- * @param {object} options 邀请其他人上麦的参数
478
- * @param {number} options.seatIndex 麦位 index, roomType 为 TUIRoomType.kConference 时无需关心,填 -1 即可
479
- * @param {string} options.userId 用户 Id
480
- * @param {number} options.timeout 超时时间,设置为 0 时,无超时时间
481
- * @param {Function} options.requestCallback 请求回调,用来通知发起方请求被接受/拒绝/取消/超时/错误的回调
482
- * @returns {Promise<number>} <br/>
483
- * 该接口返回 requestId,用户可使用该 requestId 调用 cancelRequest 接口取消请求
484
- *
485
- * @example
486
- * const roomEngine = new TUIRoomEngine();
487
- * const requestId = await roomEngine.takeUserOnSeatByAdmin({
488
- * seatIndex: 0,
489
- * userId: 'user_1234',
490
- * timeout: 0,
491
- * requestCallback: ({ requestCallbackType, requestId, userId, code, message }) => {
492
- * switch (requestCallbackType) {
493
- * case TUIRequestCallbackType.kRequestAccepted:
494
- * // 请求被接受
495
- * break;
496
- * case TUIRequestCallbackType.kRequestRejected:
497
- * // 请求被拒绝
498
- * break;
499
- * case TUIRequestCallbackType.kRequestCancelled:
500
- * // 请求已取消
501
- * break;
502
- * case TUIRequestCallbackType.kRequestTimeout:
503
- * // 请求超时
504
- * break;
505
- * case TUIRequestCallbackType.kRequestError:
506
- * // 请求错误
507
- * break;
508
- * default:
509
- * break;
510
- * }
511
- * },
512
- * });
513
- */
514
- takeUserOnSeatByAdmin(options: {
515
- seatIndex: number;
516
- userId: string;
517
- timeout: number;
518
- requestCallback?: (callbackInfo: TUIRequestCallback) => void;
519
- }): Promise<TUIRequest>;
520
- /**
521
- * 要求其他人下麦
522
- * @param {object} options 要求其他人下麦的参数
523
- * @param {number} options.seatIndex 麦位 index
524
- * @param {string} options.userId 用户 Id
525
- * @returns {Promise<void>}
526
- *
527
- * @example
528
- * const roomEngine = new TUIRoomEngine();
529
- * await roomEngine.kickUserOffSeatByAdmin({
530
- * seatIndex: 0,
531
- * userId: 'user_1234',
532
- * });
533
- */
534
- kickUserOffSeatByAdmin(options: {
535
- seatIndex: number;
536
- userId: string;
537
- }): Promise<void>;
538
609
  /**
539
610
  * 取消已经发出的请求
540
611
  * @param {object} options 取消已经发出请求的参数
@@ -569,243 +640,64 @@ declare class TUIRoomEngine {
569
640
  * // 拒绝远端的请求
570
641
  * await roomEngine.responseRemoteRequest({
571
642
  * requestId: '', // 请使用实际 requestId
572
- * agree: false,
573
- * });
574
- */
575
- responseRemoteRequest(options: {
576
- requestId: string;
577
- agree: boolean;
578
- }): Promise<any>;
579
- /**
580
- * 设置本地流的渲染位置
581
- * @param {object} options 设置本地流的渲染位置的参数
582
- * @param {TUIVideoStreamType} options.streamType 本地流类型
583
- * @param {string} options.view streamType 对应的流渲染的 div 元素的 id
584
- * @returns {Promise<void>}
585
- *
586
- * @example
587
- * const roomEngine = new TUIRoomEngine();
588
- *
589
- * // 设置本地摄像头流的播放区域为 id 是 'preview-camera' 的 div 元素
590
- * roomEngine.setLocalVideoView({
591
- * streamType: TUIVideoStreamType.kCameraStream,
592
- * view: 'preview-camera',
593
- * });
594
- *
595
- * // 设置本地屏幕分享流的播放区域为 id 是 'preview-screen' 的 div 元素
596
- * roomEngine.setLocalVideoView({
597
- * streamType: TUIVideoStreamType.kScreenStream,
598
- * view: 'preview-screen',
599
- * });
600
- */
601
- setLocalVideoView(options: {
602
- streamType: TUIVideoStreamType;
603
- view: string;
604
- }): void;
605
- /**
606
- * 打开本地摄像头,开始视频流采集
607
- * @param {object} options 设置本地流的参数
608
- * @returns {Promise<void>}
609
- * @example
610
- * const roomEngine = new TUIRoomEngine();
611
- * await roomEngine.openLocalCamera();
612
- */
613
- openLocalCamera(): Promise<void>;
614
- /**
615
- * 关闭本地摄像头
616
- * @returns {Promise<void>}
617
- *
618
- * @example
619
- * const roomEngine = new TUIRoomEngine();
620
- * await roomEngine.closeLocalCamera();
621
- */
622
- closeLocalCamera(): Promise<void>;
623
- /**
624
- * 打开麦克风
625
- * @returns {Promise<void>}
626
- *
627
- * @example
628
- * const roomEngine = new TUIRoomEngine();
629
- * await roomEngine.openLocalMicrophone();
630
- */
631
- openLocalMicrophone(): Promise<void>;
632
- /**
633
- * 关闭本地麦克风, 停止采集音频流
634
- * @returns {Promise<void>}
635
- *
636
- * @example
637
- * const roomEngine = new TUIRoomEngine();
638
- * await roomEngine.closeLocalMicrophone();
639
- */
640
- closeLocalMicrophone(): Promise<void>;
641
- /**
642
- * 设置本地视频流的编码参数
643
- * @param {object} options
644
- * @param {TUIVideoQuality} options.quality
645
- *
646
- * - 360p TUIVideoQuality.kVideoQuality_360p <br/>
647
- * - 540p TUIVideoQuality.kVideoQuality_540p <br/>
648
- * - 720p TUIVideoQuality.kVideoQuality_720p <br/>
649
- * - 1080p TUIVideoQuality.kVideoQuality_1080p <br/>
650
- *
651
- * @returns {Promise<void>}
652
- *
653
- * @example
654
- * const roomEngine = new TUIRoomEngine();
655
- * await roomEngine.updateVideoQuality({
656
- * quality: TUIVideoQuality.kVideoQuality_360p,
657
- * });
658
- */
659
- updateVideoQuality(options: {
660
- quality: TUIVideoQuality;
661
- }): Promise<void>;
662
- /**
663
- * 设置本地音频的参数<br/>
664
- * @param {object} options 设置本地音频的参数
665
- * @param {TUIAudioQuality} options.quality
666
- *
667
- * - TUIAudioQuality.kAudioProfileSpeech:语言模式;采样率:16k<br/>
668
- * - TUIAudioQuality.kAudioProfileDefault:标准模式(或者默认模式);采样率:48k<br/>
669
- * - TUIAudioQuality.kAudioProfileMusic:音乐模式;采样率:48k
670
- *
671
- * @returns {Promise<void>}
672
- *
673
- * @example
674
- * const roomEngine = new TUIRoomEngine();
675
- * await roomEngine.updateAudioQuality({
676
- * quality: TUIAudioQuality.kAudioProfileSpeech,
677
- * });
678
- */
679
- updateAudioQuality(options: {
680
- quality: TUIAudioQuality;
681
- }): Promise<void>;
682
- /**
683
- * 开始向远端推本地视频流
684
- * @returns {Promise<void>}
685
- *
686
- * @example
687
- * const roomEngine = new TUIRoomEngine();
688
- * await roomEngine.startPushLocalVideo();
689
- */
690
- startPushLocalVideo(): Promise<void>;
691
- /**
692
- * 停止向远端推本地视频流
693
- * @returns {Promise<void>}
694
- *
695
- * @example
696
- * const roomEngine = new TUIRoomEngine();
697
- * await roomEngine.startPushLocalVideo();
698
- */
699
- stopPushLocalVideo(): Promise<void>;
700
- /**
701
- * 开始向远端推本地音频流
702
- * @returns {Promise<void>}
703
- *
704
- * @example
705
- * const roomEngine = new TUIRoomEngine();
706
- * await roomEngine.startPushLocalAudio();
707
- */
708
- startPushLocalAudio(): Promise<void>;
709
- /**
710
- * 停止向远端推本地音频流
711
- * @returns {Promise<void>}
712
- *
713
- * @example
714
- * const roomEngine = new TUIRoomEngine();
715
- * await roomEngine.stopPushLocalAudio();
716
- */
717
- stopPushLocalAudio(): Promise<void>;
718
- /**
719
- * 设置远端流渲染的区域
720
- *
721
- * @param {object} options 设设置远端流渲染区域的参数
722
- * @param {string} options.userId 用户 Id
723
- * @param {TUIVideoStreamType} options.streamType 用户流类型
724
- * @param {string} options.view 播放远端用户流的 div 元素的 id
725
- * @returns {Promise<void>}
726
- *
727
- * @example
728
- * const roomEngine = new TUIRoomEngine();
729
- *
730
- * // 设置远端用户视频流在 id 为 'remote_preview_camera' 的区域播放
731
- * roomEngine.setRemoteVideoView()({
732
- * userId: 'user_1234',
733
- * streamType: TUIVideoStreamType.kCameraStream,
734
- * view: 'remote_preview_camera',
735
- * });
736
- *
737
- * // 设置远端用户屏幕分享流在 id 为 'remote_preview_screen' 的区域播放
738
- * roomEngine.setRemoteVideoView()({
739
- * userId: 'user_1234',
740
- * streamType: TUIVideoStreamType.kScreenStream,
741
- * view: 'remote_preview_screen',
742
- * });
743
- */
744
- setRemoteVideoView(options: {
745
- userId: string;
746
- streamType: TUIVideoStreamType;
747
- view: string;
748
- }): Promise<void>;
643
+ * agree: false,
644
+ * });
645
+ */
646
+ responseRemoteRequest(options: {
647
+ requestId: string;
648
+ agree: boolean;
649
+ }): Promise<any>;
749
650
  /**
750
- * 开始播放远端用户视频流
751
- *
752
- * @param {object} options 开始播放远端用户视频流的参数
753
- * @param {string} options.userId 用户 Id
754
- * @param {TUIVideoStreamType} options.streamType 用户流类型
651
+ * 禁止/允许所有用户打开媒体设备(此接口对于房主和管理员无效)
652
+ * @param {object} options
653
+ * @param {TUIMediaDevice} options.device 操作的媒体设备
654
+ * @param {boolean} options.isDisable 是否被禁止
755
655
  * @returns {Promise<void>}
756
- *
757
656
  * @example
758
- * const roomEngine = new TUIRoomEngine();
759
- * await roomEngine.startPlayRemoteVideo({
760
- * userId: 'user_1234',
761
- * streamType: TUIVideoStreamType.kCameraStream,
762
- * });
657
+ * // Example 1: 禁止所有用户打开麦克风
658
+ * await roomEngine.disableDeviceForAllUserByAdmin({
659
+ * device: TUIMediaDevice.kMicrophone,
660
+ * isDisable: true,
661
+ * })
662
+ * // Example 2: 允许所有用户打开麦克风
663
+ * await roomEngine.disableDeviceForAllUserByAdmin({
664
+ * device: TUIMediaDevice.kMicrophone,
665
+ * isDisable: false,
666
+ * })
763
667
  */
764
- startPlayRemoteVideo(options: {
765
- userId: string;
766
- streamType: TUIVideoStreamType;
668
+ disableDeviceForAllUserByAdmin(options: {
669
+ device: TUIMediaDevice;
670
+ isDisable: boolean;
767
671
  }): Promise<void>;
768
672
  /**
769
- * 停止播放远端用户视频流
770
- *
771
- * @param {object} options 停止播放远端用户视频流的参数
772
- * @param {string} options.userId 用户 Id
773
- * @param {TUIVideoStreamType} options.streamType 用户流类型<br/>
774
- *
775
- * - TUIVideoStreamType.kCameraStream 视频流<br/>
776
- * - TUIVideoStreamType.kScreenStream 屏幕分享流<br/>
777
- * - TUIVideoStreamType.kCameraStreamLow 低清视频流
778
- *
673
+ * 禁止/允许所有用户发送消息
674
+ * @param {object} options
675
+ * @param {boolean} options.isDisable 是否被禁止
779
676
  * @returns {Promise<void>}
780
- *
781
677
  * @example
782
- * const roomEngine = new TUIRoomEngine();
783
- * await roomEngine.stopPlayRemoteVideo({
784
- * userId: 'user_1234',
785
- * streamType: TUIVideoStreamType.kCameraStream,
786
- * });
678
+ * await roomEngine.disableSendingMessageForAllUser({
679
+ * isDisable: true,
680
+ * })
681
+
787
682
  */
788
- stopPlayRemoteVideo(options: {
789
- userId: string;
790
- streamType: TUIVideoStreamType;
683
+ disableSendingMessageForAllUser(options: {
684
+ isDisable: boolean;
791
685
  }): Promise<void>;
792
686
  /**
793
- * 停止远端用户的音频流
794
- * @param {object} options 停止远端用户音频流的参数
795
- * @param {string} options.userId 停止远端用户的userId
796
- * @param {boolean} options.isMute 是否停止远端用户的音频
687
+ * 禁止/允许某个用户发送消息
688
+ * @param {object} options
689
+ * @param {string} options.userId 用户的 Id
690
+ * @param {boolean} options.isDisable 是否被禁止
797
691
  * @returns {Promise<void>}
798
- *
799
692
  * @example
800
- * const roomEngine = new TUIRoomEngine();
801
- * await roomEngine.muteRemoteAudioStream({
693
+ * await roomEngine.disableSendingMessageByAdmin({
802
694
  * userId: 'user_1234',
803
- * isMute: true,
804
- * });
695
+ * isDisable: true,
696
+ * })
805
697
  */
806
- muteRemoteAudioStream(options: {
698
+ disableSendingMessageByAdmin(options: {
807
699
  userId: string;
808
- isMute: boolean;
700
+ isDisable: boolean;
809
701
  }): Promise<void>;
810
702
  /**
811
703
  * 改变用户的角色,仅主持人可调用该接口
@@ -848,57 +740,179 @@ declare class TUIRoomEngine {
848
740
  userId: string;
849
741
  }): Promise<void>;
850
742
  /**
851
- * 所有用户的设备是否允许被使用
852
- * @param {object} options 所有用户的设备是否被允许使用所用到的参数
853
- * @param {TUIMediaDevice} options.device 被禁用的设备
854
- * @param {boolean} options.isDisable 是否被禁用
743
+ * 设置房间麦位最大值
744
+ * @param {object} options
745
+ * @param {number} options.maxSeatCount 设置房间麦位最大值<br/>
746
+ * roomType TUIRoomType.kConference (教育及会议场景) 时,maxSeatCount 值不做限制;
747
+ * roomType 为 TUIRoomType.kLivingRoom (直播场景) 时,maxSeatCount 最大限制为 16;
855
748
  * @returns {Promise<void>}
856
- * @example
857
- * // Example 1: 禁止所有用户打开麦克风
858
- * await roomEngine.disableDeviceForAllUserByAdmin({
859
- * device: TUIMediaDevice.kMicrophone,
860
- * isDisable: true,
861
- * })
862
- * // Example 2: 允许所有用户打开麦克风
863
- * await roomEngine.disableDeviceForAllUserByAdmin({
864
- * device: TUIMediaDevice.kMicrophone,
865
- * isDisable: false,
866
- * })
749
+ * const roomEngine = new TUIRoomEngine();
750
+ * await roomEngine.createRoom({ roomId: '12345' });
751
+ * await roomEngine.setMaxSeatCount({ maxSeatCount: 16 })
867
752
  */
868
- disableDeviceForAllUserByAdmin(options: {
869
- device: TUIMediaDevice;
870
- isDisable: boolean;
753
+ setMaxSeatCount(options: {
754
+ maxSeatCount: number;
871
755
  }): Promise<void>;
872
756
  /**
873
- * 所有用户的是否允许发消息
874
- * @param {object} options 所有用户是否被允许发消息所用到的参数
875
- * @param {boolean} options.isDisable 是否被允许使用
757
+ * 获取麦位列表
758
+ * @returns {Promise<TUISeatInfo[]>}
759
+ *
760
+ * @example
761
+ * const roomEngine = new TUIRoomEngine();
762
+ * const seatList = await roomEngine.getSeatList();
763
+ * ;
764
+ */
765
+ getSeatList(): Promise<TUISeatInfo[]>;
766
+ /**
767
+ * 麦下用户可调用 takeSeat 成为麦上用户,仅麦上用户可发布本地音视频流。<br/>
768
+ * 主持人&管理员调用 takeSeat 成功后即为麦上用户。<br/>
769
+ * roomInfo.SpeechMode 为 TUISpeechMode.kFreeToSpeak 模式时,普通用户调用 takeSeat 方法成功后即为麦上用户。<br/>
770
+ * roomInfo.SpeechMode 为 TUISpeechMode.kSpeakAfterTakingSeat 模式时,普通用户调用 takeSeat 方法需要等待主持人/管理员的同意后成为麦上用户。<br/>
771
+ * 麦上用户的变更通过 TUIRoomEvents.onSeatListChanged 通知所有用户。<br/>
772
+ * @param {object} options 获取麦位的参数
773
+ * @param {number} options.seatIndex 麦位 index, 无麦位序号时设置为 -1
774
+ * @param {number} options.timeout 超时时间。若 timeout 设置为 0,则无超时时间
775
+ * @param {Function} options.requestCallback 请求回调,用来通知发起方请求被接受/拒绝/取消/超时/错误的回调
776
+ * @returns {Promise<number>} <br/>
777
+ * 该接口返回 request 结构体,当 request.requestId 不为 '' 时,用户可调用 cancelRequest 接口取消上麦请求。
778
+ *
779
+ * @example
780
+ * const roomEngine = new TUIRoomEngine();
781
+ *
782
+ * // 情景一:主持人/管理员上麦
783
+ * // 情景二:roomInfo.SpeechMode 为 TUISpeechMode.kFreeToSpeak 模式时,普通用户上麦
784
+ * await roomEngine.takeSeat({
785
+ * seatIndex: -1,
786
+ * timeout: 0,
787
+ * });
788
+ *
789
+ * // 情景三:roomInfo.SpeechMode 为 TUISpeechMode.kSpeakAfterTakingSeat 模式时,普通用户上麦
790
+ * const request = await roomEngine.instance?.takeSeat({
791
+ * seatIndex: -1,
792
+ * timeout: 0,
793
+ * requestCallback: ({ requestCallbackType, requestId, userId, code, message }) => {
794
+ * switch (requestCallbackType) {
795
+ * case TUIRequestCallbackType.kRequestAccepted:
796
+ * // 请求被接受
797
+ * break;
798
+ * case TUIRequestCallbackType.kRequestRejected:
799
+ * // 请求被拒绝
800
+ * break;
801
+ * case TUIRequestCallbackType.kRequestCancelled:
802
+ * // 请求已取消
803
+ * break;
804
+ * case TUIRequestCallbackType.kRequestTimeout:
805
+ * // 请求超时
806
+ * break;
807
+ * case TUIRequestCallbackType.kRequestError:
808
+ * // 请求错误
809
+ * break;
810
+ * default:
811
+ * break;
812
+ * }
813
+ * },
814
+ * });
815
+ */
816
+ takeSeat(options: {
817
+ seatIndex: number;
818
+ timeout: number;
819
+ requestCallback?: (callbackInfo: TUIRequestCallback) => void;
820
+ }): Promise<TUIRequest>;
821
+ /**
822
+ * 离开麦位
876
823
  * @returns {Promise<void>}
824
+ *
877
825
  * @example
878
- * await roomEngine.disableSendingMessageForAllUser({
879
- * isDisable: true,
880
- * })
881
-
826
+ * const roomEngine = new TUIRoomEngine();
827
+ * await roomEngine.leaveSeat();
882
828
  */
883
- disableSendingMessageForAllUser(options: {
884
- isDisable: boolean;
885
- }): Promise<void>;
829
+ leaveSeat(): Promise<void>;
830
+ /**
831
+ * 邀请其他人上麦(仅房间主持人和管理员可调用此方法)
832
+ * @param {object} options 邀请其他人上麦的参数
833
+ * @param {number} options.seatIndex 麦位 index, roomType 为 TUIRoomType.kConference 时无需关心,填 -1 即可
834
+ * @param {string} options.userId 用户 Id
835
+ * @param {number} options.timeout 超时时间,设置为 0 时,无超时时间
836
+ * @param {Function} options.requestCallback 请求回调,用来通知发起方请求被接受/拒绝/取消/超时/错误的回调
837
+ * @returns {Promise<number>} <br/>
838
+ * 该接口返回 requestId,用户可使用该 requestId 调用 cancelRequest 接口取消请求
839
+ *
840
+ * @example
841
+ * const roomEngine = new TUIRoomEngine();
842
+ * const requestId = await roomEngine.takeUserOnSeatByAdmin({
843
+ * seatIndex: 0,
844
+ * userId: 'user_1234',
845
+ * timeout: 0,
846
+ * requestCallback: ({ requestCallbackType, requestId, userId, code, message }) => {
847
+ * switch (requestCallbackType) {
848
+ * case TUIRequestCallbackType.kRequestAccepted:
849
+ * // 请求被接受
850
+ * break;
851
+ * case TUIRequestCallbackType.kRequestRejected:
852
+ * // 请求被拒绝
853
+ * break;
854
+ * case TUIRequestCallbackType.kRequestCancelled:
855
+ * // 请求已取消
856
+ * break;
857
+ * case TUIRequestCallbackType.kRequestTimeout:
858
+ * // 请求超时
859
+ * break;
860
+ * case TUIRequestCallbackType.kRequestError:
861
+ * // 请求错误
862
+ * break;
863
+ * default:
864
+ * break;
865
+ * }
866
+ * },
867
+ * });
868
+ */
869
+ takeUserOnSeatByAdmin(options: {
870
+ seatIndex: number;
871
+ userId: string;
872
+ timeout: number;
873
+ requestCallback?: (callbackInfo: TUIRequestCallback) => void;
874
+ }): Promise<TUIRequest>;
886
875
  /**
887
- * 特定用户是否被允许发消息
888
- * @param {object} options 特定用户的是否被允许发消息所用到的参数
889
- * @param {string} options.userId 特定用户的 userId
890
- * @param {boolean} options.isDisable 是否被允许使用
876
+ * 将其他人踢下麦(仅房间主持人和管理员可调用此方法)
877
+ * @param {object} options 要求其他人下麦的参数
878
+ * @param {number} options.seatIndex 麦位 index
879
+ * @param {string} options.userId 用户 Id
891
880
  * @returns {Promise<void>}
881
+ *
892
882
  * @example
893
- * await roomEngine.disableSendingMessageByAdmin({
894
- * userId: 'user_1234',
895
- * isDisable: true,
896
- * })
883
+ * const roomEngine = new TUIRoomEngine();
884
+ * await roomEngine.kickUserOffSeatByAdmin({
885
+ * seatIndex: 0,
886
+ * userId: 'user_1234',
887
+ * });
897
888
  */
898
- disableSendingMessageByAdmin(options: {
889
+ kickUserOffSeatByAdmin(options: {
890
+ seatIndex: number;
899
891
  userId: string;
900
- isDisable: boolean;
901
892
  }): Promise<void>;
893
+ /**
894
+ * 锁定某个麦位状态(仅房间主持人和管理员可调用此方法)
895
+ *
896
+ * @param {object} options 锁定某个麦位需要的参数
897
+ * @param {number} options.seatIndex 麦位索引
898
+ * @param {TUISeatLockParams} options.lockParams 锁麦参数
899
+ * @returns {Promise<void>}
900
+ *
901
+ * @example
902
+ * const roomEngine = new TUIRoomEngine();
903
+ * await roomEngine.lockSeatByAdmin({
904
+ * seatIndex: -1,
905
+ * lockParams: {
906
+ * lockSeat: true,
907
+ * lockVideo: true,
908
+ * lockAudio: true,
909
+ * }
910
+ * });
911
+ */
912
+ lockSeatByAdmin(options: {
913
+ seatIndex: number;
914
+ lockParams: TUISeatLockParams;
915
+ }): Promise<any>;
902
916
  /**
903
917
  * 发送文本消息
904
918
  * @param {object} options
@@ -1139,6 +1153,18 @@ declare class TUIRoomEngine {
1139
1153
  * await roomEngine.stopCameraDeviceTest();
1140
1154
  */
1141
1155
  stopCameraDeviceTest(): Promise<void>;
1156
+ /**
1157
+ * 开始进行麦克风测试
1158
+ * @param options
1159
+ * @param {number} options.interval 麦克风音量的回调时间
1160
+ */
1161
+ startMicDeviceTest(options: {
1162
+ interval: number;
1163
+ }): Promise<void>;
1164
+ /**
1165
+ * 停止进行麦克风测试
1166
+ */
1167
+ stopMicDeviceTest(): Promise<void>;
1142
1168
  /**
1143
1169
  * 获取 trtcCloud 实例
1144
1170
  * @returns {TRTCCloud} trtcCloud