trtc-electron-sdk 10.3.8-beta.4 → 10.3.8-beta.7

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/liteav/trtc.d.ts CHANGED
@@ -54,7 +54,17 @@ declare class TRTCCloud extends EventEmitter {
54
54
  */
55
55
  static destroyTRTCShareInstance(): void;
56
56
  /**
57
- * 获取配置对象, 可用来打开 debug 模式
57
+ * 获取 TRTC 配置对象
58
+ *
59
+ * 可以通过 TRTC 配置对象 {@link TRTCConfig} 打开 debug 模式
60
+ *
61
+ * @example
62
+ * // Enable 'debug' mode
63
+ * const TRTCCloud = require('trtc-electron-sdk');
64
+ * const rtcCloud = new TRTCCloud();
65
+ * rtcCloud.getConfigObject().setDebugMode(true);
66
+ *
67
+ * @returns {TRTCConfig}
58
68
  */
59
69
  getConfigObject(): import("./Render/util").Config;
60
70
  setExternalRenderEnabled(enabled: boolean): void;
@@ -194,11 +204,11 @@ declare class TRTCCloud extends EventEmitter {
194
204
  /**
195
205
  * 3.3 用户是否开启摄像头视频
196
206
  *
197
- * 当您收到 onUserVideoAvailable(userId, YES) 通知时,代表该路画面已经有可用的视频数据帧到达。
207
+ * 当您收到 onUserVideoAvailable(userId, 1) 通知时,代表该路画面已经有可用的视频数据帧到达。
198
208
  * 之后,您需要调用 [startRemoteView()]{@link TRTCCloud#startRemoteView} 接口加载该用户的远程画面。
199
209
  * 再之后,您还会收到名为 onFirstVideoFrame(userId) 的首帧画面渲染回调。
200
210
  *
201
- * 当您收到了 onUserVideoAvailable(userId, NO) 通知时,代表该路远程画面已经被关闭,这可能是
211
+ * 当您收到了 onUserVideoAvailable(userId, 0) 通知时,代表该路远程画面已经被关闭,这可能是
202
212
  * 由于该用户调用了 [muteLocalVideo()]{@link TRTCCloud#muteLocalVideo} 或 [stopLocalPreview()]{@link TRTCCloud#stopLocalPreview} 所致。
203
213
  *
204
214
  * @event TRTCCallback#onUserVideoAvailable
@@ -209,7 +219,7 @@ declare class TRTCCloud extends EventEmitter {
209
219
  /**
210
220
  * 3.4 用户是否开启了辅路画面(TRTCVideoStreamTypeSub,一般用于屏幕分享)
211
221
  *
212
- * 注意:显示辅路画面使用的函数是 [startRemoteSubStreamView()]{@link TRTCCloud#startRemoteSubStreamView} 而非 [startRemoteView()]{@link TRTCCloud#startRemoteView}。
222
+ * 注意:显示辅路画面使用的函数是[startRemoteView()]{@link TRTCCloud#startRemoteView}, 从 8.0 版本开始已不再推荐使用 [startRemoteSubStreamView()]{@link TRTCCloud#startRemoteSubStreamView}。
213
223
  *
214
224
  * @event TRTCCallback#onUserSubStreamAvailable
215
225
  * @param {String} userId - 用户标识
@@ -598,7 +608,7 @@ declare class TRTCCloud extends EventEmitter {
598
608
  * - ERR_AUDIO_PLUGIN_INSTALL_FAILED (-1332) :安装音频驱动插件失败
599
609
  */
600
610
  handleOnSystemAudioLoopbackError(errCode: number): void;
601
- handleOnVideoSizeChange(userId: string, streamType: number, width: number, height: number): void;
611
+ handleVideoSizeChange(userId: string, streamType: number, width: number, height: number): void;
602
612
  /**
603
613
  * 1.1 进入房间
604
614
  *
@@ -661,7 +671,7 @@ declare class TRTCCloud extends EventEmitter {
661
671
  *
662
672
  * @param {TRTCSwitchRoomParam} params 房间切换参数,请参考 {@link TRTCSwitchRoomParam}
663
673
  *
664
- * 接口调用结果会通过 TRTCCloudListener 中的 onSwitchRoom(errCode, errMsg) 回调通知给您。
674
+ * 接口调用结果会通过 onSwitchRoom(errCode, errMsg) 事件回调通知给您。
665
675
  */
666
676
  switchRoom(params: TRTCSwitchRoomParam): void;
667
677
  /**
@@ -690,13 +700,13 @@ declare class TRTCCloud extends EventEmitter {
690
700
  * <pre>
691
701
  * 房间 001 房间 002
692
702
  * ------------- ------------
693
- * 跨房连麦前:| 主播 A | | 主播 B |
703
+ * 跨房连麦前: | 主播 A | | 主播 B |
694
704
  * | 观众 U V W | | 观众 X Y Z |
695
705
  * ------------- ------------
696
706
  *
697
707
  * 房间 001 房间 002
698
708
  * ------------- ------------
699
- * 跨房连麦后:| 主播 A B | | 主播 B A |
709
+ * 跨房连麦后: | 主播 A B | | 主播 B A |
700
710
  * | 观众 U V W | | 观众 X Y Z |
701
711
  * ------------- ------------
702
712
  * </pre>
@@ -809,6 +819,8 @@ declare class TRTCCloud extends EventEmitter {
809
819
  *
810
820
  * 参考文档:[云端混流转码](https://cloud.tencent.com/document/product/647/16827)。
811
821
  *
822
+ * 注意:混流转码为收费功能,调用接口将产生云端混流转码费用,详见 [云端混流转码计费说明](https://cloud.tencent.com/document/product/647/49446)。
823
+ *
812
824
  * @note 关于云端混流的注意事项:
813
825
  * - 云端转码会引入一定的 CDN 观看延时,大概会增加1 - 2秒。
814
826
  * - 调用该函数的用户,会将连麦中的多路画面混合到自己当前这路画面中。
@@ -830,7 +842,7 @@ declare class TRTCCloud extends EventEmitter {
830
842
  * @param {String} config.streamId - 输出到 CDN 上的直播流 ID
831
843
  * @param {TRTCMixUser[]} config.mixUsersArray - 每一路子画面的位置信息
832
844
  * @param {String} config.mixUsersArray[].userId - 参与混流的 userId
833
- * @param {String} config.mixUsersArray[].roomId - 参与混流的 roomId,跨房流传入的实际 roomId,当前房间流传入 roomId = null
845
+ * @param {String} config.mixUsersArray[].roomId - 参与混流的 roomId,跨房流传入的实际 roomId。当前房间流,请传入空字符串(roomId = '')。
834
846
  * @param {Rect} config.mixUsersArray[].rect - 图层位置坐标以及大小,左上角为坐标原点(0,0) (绝对像素值)
835
847
  * @param {Number} config.mixUsersArray[].rect.left - 图层位置的左坐标
836
848
  * @param {Number} config.mixUsersArray[].rect.top - 图层位置的上坐标
@@ -855,16 +867,23 @@ declare class TRTCCloud extends EventEmitter {
855
867
  */
856
868
  stopLocalPreview(): void;
857
869
  /**
858
- * 3.3 是否屏蔽自己的视频画面
870
+ * 3.3 暂停/恢复发布本地的视频流
859
871
  *
860
- * 当屏蔽本地视频后,房间里的其它成员将会收到 onUserVideoAvailable 回调通知
861
- * @param {Boolean} mute - true:屏蔽;false:开启,默认值:false
872
+ * 该接口可以暂停(或恢复)发布本地的视频画面,暂停之后,同一房间中的其他用户将无法继续看到自己画面。
873
+ * 该接口在指定 TRTCVideoStreamTypeBig 时等效于 start/stopLocalPreview 这两个接口,但具有更好的响应速度。
874
+ * 因为 start/stopLocalPreview 需要打开和关闭摄像头,而打开和关闭摄像头都是硬件设备相关的操作,非常耗时。
875
+ * 相比之下,muteLocalVideo 只需要在软件层面对数据流进行暂停或者放行即可,因此效率更高,也更适合需要频繁打开关闭的场景。
876
+ * 当暂停/恢复发布指定 TRTCVideoStreamTypeBig 后,同一房间中的其他用户将会收到 onUserVideoAvailable 回调通知。
877
+ * 当暂停/恢复发布指定 TRTCVideoStreamTypeSub 后,同一房间中的其他用户将会收到 onUserSubStreamAvailable 回调通知。
878
+ *
879
+ * @param {Boolean} mute - true:屏蔽;false:开启,默认值:false
880
+ * @param {TRTCVideoStreamType} streamType - 要暂停/恢复的视频流类型, 仅支持 TRTCVideoStreamTypeBig 和 TRTCVideoStreamTypeSub
862
881
  */
863
882
  muteLocalVideo(mute: boolean, streamType?: TRTCVideoStreamType): void;
864
883
  /**
865
884
  * 3.4 开始显示远端视频画面
866
885
  *
867
- * 在收到 SDK 的 onUserVideoAvailable(userId, true) 通知时,可以获知该远程用户开启了视频,
886
+ * 在收到 SDK 的 onUserVideoAvailable(userId, 1) 通知时,可以获知该远程用户开启了视频,
868
887
  * 此后调用 startRemoteView(userId) 接口加载该用户的远程画面时,可以用 loading 动画优化加载过程中的等待体验。
869
888
  * 待该用户的首帧画面开始显示时,您会收到 onFirstVideoFrame(userId) 事件回调。
870
889
  *
@@ -953,7 +972,7 @@ declare class TRTCCloud extends EventEmitter {
953
972
  */
954
973
  setLocalViewFillMode(mode: TRTCVideoFillMode): void;
955
974
  /**
956
- * 3.13 设置远端图像的渲染模式
975
+ * 3.13 设置远端画面的渲染模式
957
976
  *
958
977
  * @param {String} userId - 用户 ID
959
978
  * @param {TRTCVideoStreamType} streamType - 视频流类型
@@ -1116,7 +1135,11 @@ declare class TRTCCloud extends EventEmitter {
1116
1135
  */
1117
1136
  muteRemoteAudio(userId: string, mute: boolean): void;
1118
1137
  /**
1119
- * 4.5 静音掉所有用户的声音,同时不再拉取该远端用户的音频数据流
1138
+ * 4.5 静音/取消静音所有远端用户的音频流
1139
+ *
1140
+ * 当您静音所有用户的远端音频时,SDK 会停止播放所有来自远端的音频流,同时也会停止拉取所有用户的音频数据。
1141
+ *
1142
+ * 注意:该接口支持您在进入房间(enterRoom)前调用,暂停状态会在退出房间(exitRoom)在之后会被重置。
1120
1143
  *
1121
1144
  * @param {Boolean} mute - true:静音;false:非静音
1122
1145
  */
@@ -1164,9 +1187,10 @@ declare class TRTCCloud extends EventEmitter {
1164
1187
  * 我们在 Demo 中有一个音量大小的提示条,就是基于这个接口实现的。
1165
1188
  * 如希望打开此功能,请在 startLocalAudio() 之前调用。
1166
1189
  *
1167
- * @param {Number} interval - 设置 onUserVoiceVolume 回调的触发间隔,单位为ms,最小间隔为100ms,如果小于等于0则会关闭回调,建议设置为300ms
1190
+ * @param {Number} interval - 设置 onUserVoiceVolume 回调的触发间隔,单位为ms,最小间隔为100ms,如果小于等于0则会关闭回调,建议设置为300ms
1191
+ * @param {Boolean} enableVad - true: 打开人声检测;false: 关闭人声检测。目前仅 windows 支持。
1168
1192
  */
1169
- enableAudioVolumeEvaluation(interval: number): void;
1193
+ enableAudioVolumeEvaluation(interval: number, enableVad?: boolean): void;
1170
1194
  /**
1171
1195
  * 4.12 开始录音
1172
1196
  *
@@ -1205,11 +1229,18 @@ declare class TRTCCloud extends EventEmitter {
1205
1229
  * - TRTCAudioQualityMusic: 音乐模式:采样率:48k
1206
1230
  */
1207
1231
  setAudioQuality(quality: TRTCAudioQuality): void;
1232
+ /**
1233
+ * 4.15 废弃接口:设置麦克风的音量大小
1234
+ *
1235
+ * @deprecated 从 TRTCSDK6.9 后该接口已被废弃,请使用 setAudioCaptureVolume 接口替代。
1236
+ * @param {Number} volume - 音量大小,100为正常音量,取值范围为0 - 200。
1237
+ */
1238
+ setMicVolumeOnMixing(volume: number): void;
1208
1239
  /**
1209
1240
  * 5.1 获取摄像头设备列表
1210
1241
  *
1211
1242
  * @example
1212
- * var cameralist = this.rtcCloud.getCameraDevicesList();
1243
+ * var cameralist = rtcCloud.getCameraDevicesList();
1213
1244
  * for (i=0;i<cameralist.length;i++) {
1214
1245
  * var camera = cameralist[i];
1215
1246
  * console.info("camera deviceName: " + camera.deviceName + " deviceId:" + camera.deviceId);
@@ -1233,7 +1264,7 @@ declare class TRTCCloud extends EventEmitter {
1233
1264
  * 6.1 获取麦克风设备列表
1234
1265
  *
1235
1266
  * @example
1236
- * var miclist = this.rtcCloud.getMicDevicesList();
1267
+ * var miclist = rtcCloud.getMicDevicesList();
1237
1268
  * for (i=0;i<miclist.length;i++) {
1238
1269
  * var mic = miclist[i];
1239
1270
  * console.info("mic deviceName: " + mic.deviceName + " deviceId:" + mic.deviceId);
@@ -1285,7 +1316,7 @@ declare class TRTCCloud extends EventEmitter {
1285
1316
  * 6.8 获取扬声器设备列表
1286
1317
  *
1287
1318
  * @example
1288
- * var speakerlist = this.rtcCloud.getSpeakerDevicesList();
1319
+ * var speakerlist = rtcCloud.getSpeakerDevicesList();
1289
1320
  * for (i=0;i<speakerlist.length;i++) {
1290
1321
  * var speaker = speakerlist[i];
1291
1322
  * console.info("mic deviceName: " + speaker.deviceName + " deviceId:" + speaker.deviceId);
@@ -1308,10 +1339,6 @@ declare class TRTCCloud extends EventEmitter {
1308
1339
  /**
1309
1340
  * 6.11 获取系统当前扬声器设备音量
1310
1341
  *
1311
- * 注意:
1312
- * - SDK6.7 及以下版本,windows 查询的不是系统扬声器的音量大小,mac 是查询系统扬声器音量大小
1313
- * - SDK6.8 及以上版本,windows 和 mac 查询的都是系统扬声器的音量大小
1314
- *
1315
1342
  * @return {Number} 扬声器音量,范围0 - 100
1316
1343
  */
1317
1344
  getCurrentSpeakerVolume(): any;
@@ -1319,8 +1346,6 @@ declare class TRTCCloud extends EventEmitter {
1319
1346
  * 6.12 设置系统当前扬声器设备音量
1320
1347
  *
1321
1348
  * 注意:该接口的功能是调节系统播放音量,如果用户直接调节系统设置的播放音量时,该接口的设置结果会被用户的操作所覆盖。
1322
- * - SDK6.7 及以下版本,windows 设置的不是系统扬声器的音量大小,mac 是设置系统扬声器音量大小
1323
- * - SDK6.8 及以上版本,windows 和 mac 设置的都是系统扬声器的音量大小
1324
1349
  *
1325
1350
  * @param {Number} volume - 设置的扬声器音量,范围0 - 100
1326
1351
  */
@@ -1426,7 +1451,7 @@ declare class TRTCCloud extends EventEmitter {
1426
1451
  * 8.5 枚举可共享的窗口列表
1427
1452
  *
1428
1453
  * 如果您要给您的 App 增加屏幕分享功能,一般需要先显示一个窗口选择界面,这样用户可以选择希望分享的窗口。
1429
- * 通过如下函数,您可以获得可分享窗口的 ID、类型、窗口名称以及缩略图。
1454
+ * 通过此函数,您可以获得可分享窗口的 ID、类型、窗口名称以及缩略图。
1430
1455
  * 拿到这些信息后,您就可以实现一个窗口选择界面,当然,您也可以使用我们在 Demo 源码中已经实现好的一个界面。
1431
1456
  *
1432
1457
  * 注意:返回的列表中包括屏幕和应用窗口,屏幕会在列表的前面几个元素中。
@@ -1471,7 +1496,7 @@ declare class TRTCCloud extends EventEmitter {
1471
1496
  */
1472
1497
  selectScreenCaptureTarget(source: TRTCScreenCaptureSourceInfo | number, captureRect: Rect | string, property: TRTCScreenCaptureProperty | string, deprecatedCaptureRect?: Rect, captureMouse?: boolean, highlightWindow?: boolean): any;
1473
1498
  /**
1474
- * 8.7 启动屏幕分享,支持选择使用主路或辅路进行屏幕分享。(暂不支持 mac 平台预览界面)
1499
+ * 8.7 启动屏幕分享,支持选择使用主路或辅路进行屏幕分享。
1475
1500
  *
1476
1501
  * 注意:
1477
1502
  * 一个用户同时最多只能上传一条主路(TRTCVideoStreamTypeBig)画面和一条辅路(TRTCVideoStreamTypeSub)画面,
@@ -1495,12 +1520,14 @@ declare class TRTCCloud extends EventEmitter {
1495
1520
  */
1496
1521
  stopScreenCapture(): void;
1497
1522
  /**
1498
- * 8.11 设置辅流(屏幕分享)的编码器参数
1523
+ * 8.11 设置屏幕分享(即辅路)的视频编码参数
1499
1524
  *
1500
- * - setVideoEncoderParam() 用于设置远端主路画面(TRTCVideoStreamTypeBig,一般用于摄像头)的编码参数。
1501
- * - setSubStreamEncoderParam() 用于设置远端辅路画面(TRTCVideoStreamTypeSub,一般用于屏幕分享)的编码参数。
1525
+ * 该接口可以设定远端用户所看到的屏幕分享(即辅路)的画面质量,同时也能决定云端录制出的视频文件中屏幕分享的画面质量。 请注意如下两个接口的差异:
1526
+ * - setVideoEncoderParam() 用于设置主路画面(TRTCVideoStreamTypeBig,一般用于摄像头)的视频编码参数。
1527
+ * - setSubStreamEncoderParam() 用于设置辅路画面(TRTCVideoStreamTypeSub,一般用于屏幕分享)的视频编码参数。
1502
1528
  *
1503
- * 该设置决定了远端用户看到的画面质量,同时也是云端录制出的视频文件的画面质量。
1529
+ * 注意:
1530
+ * 即使您使用主路传输屏幕分享(在调用 startScreenCapture 时设置 type=TRTCVideoStreamTypeBig),依然要使用 setSubStreamEncoderParam 设定屏幕分享的编码参数,而不要使用 setVideoEncoderParam 。
1504
1531
  *
1505
1532
  * @param {TRTCVideoEncParam} params - 辅流(屏幕分享)编码参数
1506
1533
  * @param {TRTCVideoResolution} params.videoResolution - 视频分辨率
@@ -1773,7 +1800,13 @@ declare class TRTCCloud extends EventEmitter {
1773
1800
  */
1774
1801
  seekMusicToPosInTime(id: number, pts: number): any;
1775
1802
  /**
1776
- * 11.19 设置背景音乐的音量大小,播放背景音乐混音时使用,用来控制背景音音量大小
1803
+ * 11.19 设置所有背景音乐的本地音量和远端音量的大小
1804
+ *
1805
+ * 该接口可以设置所有背景音乐的本地音量和远端音量。
1806
+ * - 本地音量:即主播本地可以听到的背景音乐的音量大小。
1807
+ * - 远端音量:即观众端可以听到的背景音乐的音量大小。
1808
+ *
1809
+ * 注意:如果将 volume 设置成 100 之后感觉音量还是太小,可以将 volume 最大设置成 150,但超过 100 的 volume 会有爆音的风险,请谨慎操作。
1777
1810
  *
1778
1811
  * @param {Number} volume - 音量大小,100为正常音量,取值范围为0 - 200。
1779
1812
  */
@@ -1886,15 +1919,7 @@ declare class TRTCCloud extends EventEmitter {
1886
1919
  */
1887
1920
  stopSpeedTest(): void;
1888
1921
  /**
1889
- * 13.3 设置 SDK 使用的音频设备根据跟随系统默认设备
1890
- *
1891
- * @param {TRTCDeviceType} deviceType - 设备类型
1892
- * @param {Boolean} enable - 是否跟随系统默认的音频设备。 true:跟随, 当系统默认音频设备发生改变时,SDK 立即切换音频设备; false:不跟随, 只有当 SDK 使用的音频设备被移除后或插入新的音频设备为系统默认设备时,SDK 才切换至系统默认的音频设备。
1893
- *
1894
- */
1895
- enableFollowingDefaultAudioDevice(deviceType: TRTCDeviceType, enable: boolean): void;
1896
- /**
1897
- * 13.4 开始进行摄像头测试
1922
+ * 13.3 开始进行摄像头测试
1898
1923
  *
1899
1924
  * 会触发 onFirstVideoFrame 回调接口
1900
1925
  *
@@ -1904,25 +1929,26 @@ declare class TRTCCloud extends EventEmitter {
1904
1929
  */
1905
1930
  startCameraDeviceTest(view: HTMLElement): void;
1906
1931
  /**
1907
- * 13.5 停止摄像头测试
1932
+ * 13.4 停止摄像头测试
1908
1933
  */
1909
1934
  stopCameraDeviceTest(): void;
1910
1935
  /**
1911
- * 13.6 开始进行麦克风测试
1936
+ * 13.5 开始进行麦克风测试
1912
1937
  *
1913
1938
  * 回调接口 onTestMicVolume 获取测试数据
1914
1939
  *
1915
1940
  * 该方法测试麦克风是否能正常工作,volume 的取值范围为0 - 100。
1916
1941
  *
1917
1942
  * @param {Number} interval - 反馈音量提示的时间间隔(ms),建议设置到大于 200 毫秒
1943
+ * @param {Boolean} playback - 是否开启回播麦克风声音,开启后用户测试麦克风时会听到自己的声音。默认值 true
1918
1944
  */
1919
- startMicDeviceTest(interval: number): void;
1945
+ startMicDeviceTest(interval: number, playback?: boolean): void;
1920
1946
  /**
1921
- * 13.7 停止麦克风测试
1947
+ * 13.6 停止麦克风测试
1922
1948
  */
1923
1949
  stopMicDeviceTest(): void;
1924
1950
  /**
1925
- * 13.8 开始进行扬声器测试
1951
+ * 13.7 开始进行扬声器测试
1926
1952
  *
1927
1953
  * 回调接口 onTestSpeakerVolume 获取测试数据
1928
1954
  *
@@ -1932,7 +1958,7 @@ declare class TRTCCloud extends EventEmitter {
1932
1958
  */
1933
1959
  startSpeakerDeviceTest(testAudioFilePath: string): void;
1934
1960
  /**
1935
- * 13.9 停止扬声器测试
1961
+ * 13.8 停止扬声器测试
1936
1962
  */
1937
1963
  stopSpeakerDeviceTest(): void;
1938
1964
  /**
@@ -1992,13 +2018,6 @@ declare class TRTCCloud extends EventEmitter {
1992
2018
  * @param {String} jsonStr - 接口及参数描述的 JSON 字符串
1993
2019
  */
1994
2020
  callExperimentalAPI(jsonStr: string): void;
1995
- /**
1996
- * 从 TRTCSDK6.9 后该接口已被废弃
1997
- *
1998
- * @deprecated 从 TRTCSDK6.9 后该接口已被废弃,请使用 setAudioCaptureVolume 接口替代。
1999
- * @param {Number} volume - 音量大小,100为正常音量,取值范围为0 - 200。
2000
- */
2001
- setMicVolumeOnMixing(volume: number): void;
2002
2021
  addLocalVideoRenderCallback(): void;
2003
2022
  addRemoteVideoRenderCallback(userId: string): void;
2004
2023
  /**
package/liteav/trtc.js CHANGED
@@ -108,6 +108,38 @@ let formatLogParams = function (params) {
108
108
  }
109
109
  return logParamsStr;
110
110
  };
111
+ const getComponentNO = function () {
112
+ var _a;
113
+ let componentName = '';
114
+ // @ts-ignore
115
+ if (global.__TRTCElectron && global.__TRTCElectron.componentName) {
116
+ // @ts-ignore
117
+ componentName = global.__TRTCElectron.componentName;
118
+ }
119
+ else {
120
+ const jsonStr = (_a = global.localStorage) === null || _a === void 0 ? void 0 : _a.getItem('__TRTCElectron');
121
+ if (jsonStr) {
122
+ try {
123
+ const jsonObj = JSON.parse(jsonStr);
124
+ if (jsonObj.componentName && typeof jsonObj.componentName === 'string') {
125
+ componentName = jsonObj.componentName;
126
+ }
127
+ }
128
+ catch (error) {
129
+ console.warn('trtc: localstorage TRTCElectron parse error.', error);
130
+ }
131
+ }
132
+ }
133
+ let componentNO = '';
134
+ switch (componentName) {
135
+ case 'TUIRoom':
136
+ componentNO = '5';
137
+ break;
138
+ default:
139
+ break;
140
+ }
141
+ return componentNO;
142
+ };
111
143
  let trtcCloudInstance = null;
112
144
  let oriRtcCloud = null;
113
145
  const renderModePixelFormatMap = new Map();
@@ -134,7 +166,8 @@ renderModePixelFormatMap.set(8, trtc_define_1.TRTCVideoPixelFormat.TRTCVideoPixe
134
166
  class TRTCCloud extends events_1.EventEmitter {
135
167
  constructor() {
136
168
  super();
137
- oriRtcCloud = new trtc.NodeRTCCloud(pkg.version);
169
+ const componentNO = getComponentNO();
170
+ oriRtcCloud = new trtc.NodeRTCCloud(pkg.version, componentNO);
138
171
  this.rtcCloud = Object.assign({}, oriRtcCloud, {
139
172
  onlineLog: undefined
140
173
  });
@@ -193,7 +226,17 @@ class TRTCCloud extends events_1.EventEmitter {
193
226
  }
194
227
  }
195
228
  /**
196
- * 获取配置对象, 可用来打开 debug 模式
229
+ * 获取 TRTC 配置对象
230
+ *
231
+ * 可以通过 TRTC 配置对象 {@link TRTCConfig} 打开 debug 模式
232
+ *
233
+ * @example
234
+ * // Enable 'debug' mode
235
+ * const TRTCCloud = require('trtc-electron-sdk');
236
+ * const rtcCloud = new TRTCCloud();
237
+ * rtcCloud.getConfigObject().setDebugMode(true);
238
+ *
239
+ * @returns {TRTCConfig}
197
240
  */
198
241
  getConfigObject() {
199
242
  return util_1.config;
@@ -377,8 +420,6 @@ class TRTCCloud extends events_1.EventEmitter {
377
420
  case 'onSystemAudioLoopbackError':
378
421
  this.handleOnSystemAudioLoopbackError(int32_1);
379
422
  break;
380
- case 'onVideoSizeChange':
381
- this.handleOnVideoSizeChange(string_1, int32_1, int32_2, int32_3);
382
423
  default:
383
424
  break;
384
425
  }
@@ -563,11 +604,11 @@ class TRTCCloud extends events_1.EventEmitter {
563
604
  /**
564
605
  * 3.3 用户是否开启摄像头视频
565
606
  *
566
- * 当您收到 onUserVideoAvailable(userId, YES) 通知时,代表该路画面已经有可用的视频数据帧到达。
607
+ * 当您收到 onUserVideoAvailable(userId, 1) 通知时,代表该路画面已经有可用的视频数据帧到达。
567
608
  * 之后,您需要调用 [startRemoteView()]{@link TRTCCloud#startRemoteView} 接口加载该用户的远程画面。
568
609
  * 再之后,您还会收到名为 onFirstVideoFrame(userId) 的首帧画面渲染回调。
569
610
  *
570
- * 当您收到了 onUserVideoAvailable(userId, NO) 通知时,代表该路远程画面已经被关闭,这可能是
611
+ * 当您收到了 onUserVideoAvailable(userId, 0) 通知时,代表该路远程画面已经被关闭,这可能是
571
612
  * 由于该用户调用了 [muteLocalVideo()]{@link TRTCCloud#muteLocalVideo} 或 [stopLocalPreview()]{@link TRTCCloud#stopLocalPreview} 所致。
572
613
  *
573
614
  * @event TRTCCallback#onUserVideoAvailable
@@ -593,7 +634,7 @@ class TRTCCloud extends events_1.EventEmitter {
593
634
  /**
594
635
  * 3.4 用户是否开启了辅路画面(TRTCVideoStreamTypeSub,一般用于屏幕分享)
595
636
  *
596
- * 注意:显示辅路画面使用的函数是 [startRemoteSubStreamView()]{@link TRTCCloud#startRemoteSubStreamView} 而非 [startRemoteView()]{@link TRTCCloud#startRemoteView}。
637
+ * 注意:显示辅路画面使用的函数是[startRemoteView()]{@link TRTCCloud#startRemoteView}, 从 8.0 版本开始已不再推荐使用 [startRemoteSubStreamView()]{@link TRTCCloud#startRemoteSubStreamView}。
597
638
  *
598
639
  * @event TRTCCallback#onUserSubStreamAvailable
599
640
  * @param {String} userId - 用户标识
@@ -1039,8 +1080,9 @@ class TRTCCloud extends events_1.EventEmitter {
1039
1080
  * @event TRTCCallback#onScreenCaptureStarted
1040
1081
  */
1041
1082
  handleOnScreenCaptureStarted() {
1083
+ console.debug('trtc:onScreenCaptureStarted');
1042
1084
  this.isScreenCapturing = true;
1043
- // 只有在 Buffer 为 null 时才新建,否则只能在 onVideoSizeChange 事件中重新申请 Buffer
1085
+ // 只有在 Buffer 为 null 时才新建,否则只能在 handleVideoSizeChange 事件中重新申请 Buffer
1044
1086
  if (!screenVideoBuffer.buffer) {
1045
1087
  screenVideoBuffer.userId = '';
1046
1088
  screenVideoBuffer.streamType = this.screenCaptureStreamType;
@@ -1049,6 +1091,7 @@ class TRTCCloud extends events_1.EventEmitter {
1049
1091
  screenVideoBuffer.width = DEFAULT_VIDEO_WIDTH;
1050
1092
  screenVideoBuffer.height = DEFAULT_VIDEO_HEIGHT;
1051
1093
  this.rtcCloud.setSubVideoBuffer('', screenVideoBuffer.buffer, screenVideoBuffer.streamType, screenVideoBuffer.width, screenVideoBuffer.height, screenVideoBuffer.pixelFormat);
1094
+ console.debug('trtc:onScreenCaptureStarted alloc add screenVideoBuffer', screenVideoBuffer);
1052
1095
  }
1053
1096
  this.fire('onScreenCaptureStarted');
1054
1097
  }
@@ -1077,10 +1120,12 @@ class TRTCCloud extends events_1.EventEmitter {
1077
1120
  * @param {Number} reason - 停止原因,0:表示用户主动停止;1:表示屏幕分享窗口被关闭
1078
1121
  */
1079
1122
  handleOnScreenCaptureStopped(reason) {
1123
+ console.debug('trtc:onScreenCaptureStopped', reason);
1080
1124
  if (this.isScreenCapturing) {
1081
1125
  if (screenVideoBuffer.buffer) {
1082
1126
  this.rtcCloud.setSubVideoBuffer('', screenVideoBuffer.buffer, screenVideoBuffer.streamType, 0, 0, screenVideoBuffer.pixelFormat);
1083
1127
  screenVideoBuffer.buffer = null;
1128
+ console.debug('trtc:onScreenCaptureStopped delete screenVideoBuffer', screenVideoBuffer);
1084
1129
  }
1085
1130
  this.isScreenCapturing = false;
1086
1131
  }
@@ -1173,7 +1218,8 @@ class TRTCCloud extends events_1.EventEmitter {
1173
1218
  handleOnSystemAudioLoopbackError(errCode) {
1174
1219
  this.fire('onSystemAudioLoopbackError', errCode);
1175
1220
  }
1176
- handleOnVideoSizeChange(userId, streamType, width, height) {
1221
+ handleVideoSizeChange(userId, streamType, width, height) {
1222
+ console.debug('trtc:handleVideoSizeChange', userId, streamType, width, height);
1177
1223
  if (userId && userId !== CAMERA_DEVICE_TEST_ID) {
1178
1224
  if (streamType !== trtc_define_1.TRTCVideoStreamType.TRTCVideoStreamTypeSub) {
1179
1225
  const videoBufferInfo = remoteVideoBufferMap.get(userId);
@@ -1187,7 +1233,7 @@ class TRTCCloud extends events_1.EventEmitter {
1187
1233
  }
1188
1234
  }
1189
1235
  else {
1190
- console.error(`trtc:onVideoSizeChange error: ${userId} ${streamType} buffer not exist`);
1236
+ console.error(`trtc:handleVideoSizeChange error: ${userId} ${streamType} buffer not exist`);
1191
1237
  }
1192
1238
  }
1193
1239
  else {
@@ -1334,7 +1380,7 @@ class TRTCCloud extends events_1.EventEmitter {
1334
1380
  *
1335
1381
  * @param {TRTCSwitchRoomParam} params 房间切换参数,请参考 {@link TRTCSwitchRoomParam}
1336
1382
  *
1337
- * 接口调用结果会通过 TRTCCloudListener 中的 onSwitchRoom(errCode, errMsg) 回调通知给您。
1383
+ * 接口调用结果会通过 onSwitchRoom(errCode, errMsg) 事件回调通知给您。
1338
1384
  */
1339
1385
  switchRoom(params) {
1340
1386
  this.rtcCloud.switchRoom(params.roomId, params.strRoomId, params.userSig, params.privateMapKey);
@@ -1367,13 +1413,13 @@ class TRTCCloud extends events_1.EventEmitter {
1367
1413
  * <pre>
1368
1414
  * 房间 001 房间 002
1369
1415
  * ------------- ------------
1370
- * 跨房连麦前:| 主播 A | | 主播 B |
1416
+ * 跨房连麦前: | 主播 A | | 主播 B |
1371
1417
  * | 观众 U V W | | 观众 X Y Z |
1372
1418
  * ------------- ------------
1373
1419
  *
1374
1420
  * 房间 001 房间 002
1375
1421
  * ------------- ------------
1376
- * 跨房连麦后:| 主播 A B | | 主播 B A |
1422
+ * 跨房连麦后: | 主播 A B | | 主播 B A |
1377
1423
  * | 观众 U V W | | 观众 X Y Z |
1378
1424
  * ------------- ------------
1379
1425
  * </pre>
@@ -1510,6 +1556,8 @@ class TRTCCloud extends events_1.EventEmitter {
1510
1556
  *
1511
1557
  * 参考文档:[云端混流转码](https://cloud.tencent.com/document/product/647/16827)。
1512
1558
  *
1559
+ * 注意:混流转码为收费功能,调用接口将产生云端混流转码费用,详见 [云端混流转码计费说明](https://cloud.tencent.com/document/product/647/49446)。
1560
+ *
1513
1561
  * @note 关于云端混流的注意事项:
1514
1562
  * - 云端转码会引入一定的 CDN 观看延时,大概会增加1 - 2秒。
1515
1563
  * - 调用该函数的用户,会将连麦中的多路画面混合到自己当前这路画面中。
@@ -1531,7 +1579,7 @@ class TRTCCloud extends events_1.EventEmitter {
1531
1579
  * @param {String} config.streamId - 输出到 CDN 上的直播流 ID
1532
1580
  * @param {TRTCMixUser[]} config.mixUsersArray - 每一路子画面的位置信息
1533
1581
  * @param {String} config.mixUsersArray[].userId - 参与混流的 userId
1534
- * @param {String} config.mixUsersArray[].roomId - 参与混流的 roomId,跨房流传入的实际 roomId,当前房间流传入 roomId = null
1582
+ * @param {String} config.mixUsersArray[].roomId - 参与混流的 roomId,跨房流传入的实际 roomId。当前房间流,请传入空字符串(roomId = '')。
1535
1583
  * @param {Rect} config.mixUsersArray[].rect - 图层位置坐标以及大小,左上角为坐标原点(0,0) (绝对像素值)
1536
1584
  * @param {Number} config.mixUsersArray[].rect.left - 图层位置的左坐标
1537
1585
  * @param {Number} config.mixUsersArray[].rect.top - 图层位置的上坐标
@@ -1600,7 +1648,7 @@ class TRTCCloud extends events_1.EventEmitter {
1600
1648
  }
1601
1649
  // view 为 null 时,可能启动了自定义渲染,所以 Buffer 还是要创建,否则自定义渲染就拿不到数据;
1602
1650
  // view 非 null 时,当然必须创建 Buffer
1603
- // 只有在 Buffer 为 null 时才新建,否则只能在 onVideoSizeChange 事件中重新申请 Buffer
1651
+ // 只有在 Buffer 为 null 时才新建,否则只能在 handleVideoSizeChange 事件中重新申请 Buffer
1604
1652
  if (!localVideoBuffer.buffer) {
1605
1653
  localVideoBuffer.streamType = trtc_define_1.TRTCVideoStreamType.TRTCVideoStreamTypeBig;
1606
1654
  localVideoBuffer.buffer = (0, util_1.allocBuffer)(DEFAULT_VIDEO_WIDTH * DEFAULT_VIDEO_HEIGHT * this.pixelLength, localVideoBuffer.userId, localVideoBuffer.streamType);
@@ -1632,10 +1680,17 @@ class TRTCCloud extends events_1.EventEmitter {
1632
1680
  }
1633
1681
  }
1634
1682
  /**
1635
- * 3.3 是否屏蔽自己的视频画面
1683
+ * 3.3 暂停/恢复发布本地的视频流
1636
1684
  *
1637
- * 当屏蔽本地视频后,房间里的其它成员将会收到 onUserVideoAvailable 回调通知
1638
- * @param {Boolean} mute - true:屏蔽;false:开启,默认值:false
1685
+ * 该接口可以暂停(或恢复)发布本地的视频画面,暂停之后,同一房间中的其他用户将无法继续看到自己画面。
1686
+ * 该接口在指定 TRTCVideoStreamTypeBig 时等效于 start/stopLocalPreview 这两个接口,但具有更好的响应速度。
1687
+ * 因为 start/stopLocalPreview 需要打开和关闭摄像头,而打开和关闭摄像头都是硬件设备相关的操作,非常耗时。
1688
+ * 相比之下,muteLocalVideo 只需要在软件层面对数据流进行暂停或者放行即可,因此效率更高,也更适合需要频繁打开关闭的场景。
1689
+ * 当暂停/恢复发布指定 TRTCVideoStreamTypeBig 后,同一房间中的其他用户将会收到 onUserVideoAvailable 回调通知。
1690
+ * 当暂停/恢复发布指定 TRTCVideoStreamTypeSub 后,同一房间中的其他用户将会收到 onUserSubStreamAvailable 回调通知。
1691
+ *
1692
+ * @param {Boolean} mute - true:屏蔽;false:开启,默认值:false
1693
+ * @param {TRTCVideoStreamType} streamType - 要暂停/恢复的视频流类型, 仅支持 TRTCVideoStreamTypeBig 和 TRTCVideoStreamTypeSub
1639
1694
  */
1640
1695
  muteLocalVideo(mute, streamType) {
1641
1696
  let newStreamType = streamType;
@@ -1647,7 +1702,7 @@ class TRTCCloud extends events_1.EventEmitter {
1647
1702
  /**
1648
1703
  * 3.4 开始显示远端视频画面
1649
1704
  *
1650
- * 在收到 SDK 的 onUserVideoAvailable(userId, true) 通知时,可以获知该远程用户开启了视频,
1705
+ * 在收到 SDK 的 onUserVideoAvailable(userId, 1) 通知时,可以获知该远程用户开启了视频,
1651
1706
  * 此后调用 startRemoteView(userId) 接口加载该用户的远程画面时,可以用 loading 动画优化加载过程中的等待体验。
1652
1707
  * 待该用户的首帧画面开始显示时,您会收到 onFirstVideoFrame(userId) 事件回调。
1653
1708
  *
@@ -1682,14 +1737,14 @@ class TRTCCloud extends events_1.EventEmitter {
1682
1737
  };
1683
1738
  if (streamType !== trtc_define_1.TRTCVideoStreamType.TRTCVideoStreamTypeSub) {
1684
1739
  if (!remoteVideoBufferMap.get(userId)) {
1685
- // Buffer 不存在时才新建,否则只能在 onVideoSizeChange 事件中重新申请 Buffer
1740
+ // Buffer 不存在时才新建,否则只能在 handleVideoSizeChange 事件中重新申请 Buffer
1686
1741
  remoteVideoBufferMap.set(userId, videoBufferInfo);
1687
1742
  this.rtcCloud.setRemoteVideoBuffer(userId, videoBufferInfo.buffer, videoBufferInfo.streamType, videoBufferInfo.width, videoBufferInfo.height, videoBufferInfo.pixelFormat);
1688
1743
  }
1689
1744
  }
1690
1745
  else {
1691
1746
  // 远端屏幕分享
1692
- // Buffer 为 null 时才新建,否则只能在 onVideoSizeChange 事件中重新申请 Buffer
1747
+ // Buffer 为 null 时才新建,否则只能在 handleVideoSizeChange 事件中重新申请 Buffer
1693
1748
  if (!screenVideoBuffer.buffer) {
1694
1749
  Object.assign(screenVideoBuffer, videoBufferInfo);
1695
1750
  this.rtcCloud.setSubVideoBuffer(screenVideoBuffer.userId, screenVideoBuffer.buffer, screenVideoBuffer.streamType, screenVideoBuffer.width, screenVideoBuffer.height, screenVideoBuffer.pixelFormat);
@@ -1855,7 +1910,7 @@ class TRTCCloud extends events_1.EventEmitter {
1855
1910
  }
1856
1911
  }
1857
1912
  /**
1858
- * 3.13 设置远端图像的渲染模式
1913
+ * 3.13 设置远端画面的渲染模式
1859
1914
  *
1860
1915
  * @param {String} userId - 用户 ID
1861
1916
  * @param {TRTCVideoStreamType} streamType - 视频流类型
@@ -2097,7 +2152,11 @@ class TRTCCloud extends events_1.EventEmitter {
2097
2152
  this.rtcCloud.muteRemoteAudio(userId, mute);
2098
2153
  }
2099
2154
  /**
2100
- * 4.5 静音掉所有用户的声音,同时不再拉取该远端用户的音频数据流
2155
+ * 4.5 静音/取消静音所有远端用户的音频流
2156
+ *
2157
+ * 当您静音所有用户的远端音频时,SDK 会停止播放所有来自远端的音频流,同时也会停止拉取所有用户的音频数据。
2158
+ *
2159
+ * 注意:该接口支持您在进入房间(enterRoom)前调用,暂停状态会在退出房间(exitRoom)在之后会被重置。
2101
2160
  *
2102
2161
  * @param {Boolean} mute - true:静音;false:非静音
2103
2162
  */
@@ -2157,10 +2216,11 @@ class TRTCCloud extends events_1.EventEmitter {
2157
2216
  * 我们在 Demo 中有一个音量大小的提示条,就是基于这个接口实现的。
2158
2217
  * 如希望打开此功能,请在 startLocalAudio() 之前调用。
2159
2218
  *
2160
- * @param {Number} interval - 设置 onUserVoiceVolume 回调的触发间隔,单位为ms,最小间隔为100ms,如果小于等于0则会关闭回调,建议设置为300ms
2219
+ * @param {Number} interval - 设置 onUserVoiceVolume 回调的触发间隔,单位为ms,最小间隔为100ms,如果小于等于0则会关闭回调,建议设置为300ms
2220
+ * @param {Boolean} enableVad - true: 打开人声检测;false: 关闭人声检测。目前仅 windows 支持。
2161
2221
  */
2162
- enableAudioVolumeEvaluation(interval) {
2163
- this.rtcCloud.enableAudioVolumeEvaluation(interval);
2222
+ enableAudioVolumeEvaluation(interval, enableVad = false) {
2223
+ this.rtcCloud.enableAudioVolumeEvaluation(interval, enableVad);
2164
2224
  }
2165
2225
  /**
2166
2226
  * 4.12 开始录音
@@ -2215,6 +2275,15 @@ class TRTCCloud extends events_1.EventEmitter {
2215
2275
  setAudioQuality(quality) {
2216
2276
  this.audioQuality = quality;
2217
2277
  }
2278
+ /**
2279
+ * 4.15 废弃接口:设置麦克风的音量大小
2280
+ *
2281
+ * @deprecated 从 TRTCSDK6.9 后该接口已被废弃,请使用 setAudioCaptureVolume 接口替代。
2282
+ * @param {Number} volume - 音量大小,100为正常音量,取值范围为0 - 200。
2283
+ */
2284
+ setMicVolumeOnMixing(volume) {
2285
+ this.setAudioCaptureVolume(volume);
2286
+ }
2218
2287
  /////////////////////////////////////////////////////////////////////////////////
2219
2288
  //
2220
2289
  // (五)摄像头相关接口函数
@@ -2224,7 +2293,7 @@ class TRTCCloud extends events_1.EventEmitter {
2224
2293
  * 5.1 获取摄像头设备列表
2225
2294
  *
2226
2295
  * @example
2227
- * var cameralist = this.rtcCloud.getCameraDevicesList();
2296
+ * var cameralist = rtcCloud.getCameraDevicesList();
2228
2297
  * for (i=0;i<cameralist.length;i++) {
2229
2298
  * var camera = cameralist[i];
2230
2299
  * console.info("camera deviceName: " + camera.deviceName + " deviceId:" + camera.deviceId);
@@ -2259,7 +2328,7 @@ class TRTCCloud extends events_1.EventEmitter {
2259
2328
  * 6.1 获取麦克风设备列表
2260
2329
  *
2261
2330
  * @example
2262
- * var miclist = this.rtcCloud.getMicDevicesList();
2331
+ * var miclist = rtcCloud.getMicDevicesList();
2263
2332
  * for (i=0;i<miclist.length;i++) {
2264
2333
  * var mic = miclist[i];
2265
2334
  * console.info("mic deviceName: " + mic.deviceName + " deviceId:" + mic.deviceId);
@@ -2325,7 +2394,7 @@ class TRTCCloud extends events_1.EventEmitter {
2325
2394
  * 6.8 获取扬声器设备列表
2326
2395
  *
2327
2396
  * @example
2328
- * var speakerlist = this.rtcCloud.getSpeakerDevicesList();
2397
+ * var speakerlist = rtcCloud.getSpeakerDevicesList();
2329
2398
  * for (i=0;i<speakerlist.length;i++) {
2330
2399
  * var speaker = speakerlist[i];
2331
2400
  * console.info("mic deviceName: " + speaker.deviceName + " deviceId:" + speaker.deviceId);
@@ -2354,10 +2423,6 @@ class TRTCCloud extends events_1.EventEmitter {
2354
2423
  /**
2355
2424
  * 6.11 获取系统当前扬声器设备音量
2356
2425
  *
2357
- * 注意:
2358
- * - SDK6.7 及以下版本,windows 查询的不是系统扬声器的音量大小,mac 是查询系统扬声器音量大小
2359
- * - SDK6.8 及以上版本,windows 和 mac 查询的都是系统扬声器的音量大小
2360
- *
2361
2426
  * @return {Number} 扬声器音量,范围0 - 100
2362
2427
  */
2363
2428
  getCurrentSpeakerVolume() {
@@ -2367,8 +2432,6 @@ class TRTCCloud extends events_1.EventEmitter {
2367
2432
  * 6.12 设置系统当前扬声器设备音量
2368
2433
  *
2369
2434
  * 注意:该接口的功能是调节系统播放音量,如果用户直接调节系统设置的播放音量时,该接口的设置结果会被用户的操作所覆盖。
2370
- * - SDK6.7 及以下版本,windows 设置的不是系统扬声器的音量大小,mac 是设置系统扬声器音量大小
2371
- * - SDK6.8 及以上版本,windows 和 mac 设置的都是系统扬声器的音量大小
2372
2435
  *
2373
2436
  * @param {Number} volume - 设置的扬声器音量,范围0 - 100
2374
2437
  */
@@ -2518,7 +2581,7 @@ class TRTCCloud extends events_1.EventEmitter {
2518
2581
  * 8.5 枚举可共享的窗口列表
2519
2582
  *
2520
2583
  * 如果您要给您的 App 增加屏幕分享功能,一般需要先显示一个窗口选择界面,这样用户可以选择希望分享的窗口。
2521
- * 通过如下函数,您可以获得可分享窗口的 ID、类型、窗口名称以及缩略图。
2584
+ * 通过此函数,您可以获得可分享窗口的 ID、类型、窗口名称以及缩略图。
2522
2585
  * 拿到这些信息后,您就可以实现一个窗口选择界面,当然,您也可以使用我们在 Demo 源码中已经实现好的一个界面。
2523
2586
  *
2524
2587
  * 注意:返回的列表中包括屏幕和应用窗口,屏幕会在列表的前面几个元素中。
@@ -2564,6 +2627,7 @@ class TRTCCloud extends events_1.EventEmitter {
2564
2627
  * @param {Boolean} highlightWindow - 指定是否高亮正在共享的窗口,以及当捕获图像被遮挡时高亮遮挡窗口提示用户移走遮挡
2565
2628
  */
2566
2629
  selectScreenCaptureTarget(source, captureRect, property, deprecatedCaptureRect, captureMouse, highlightWindow) {
2630
+ console.debug('trtc:selectScreenCaptureTarget:', source, captureRect, property, deprecatedCaptureRect, captureMouse, highlightWindow);
2567
2631
  if (source.sourceId && captureRect instanceof trtc_define_1.Rect && property instanceof trtc_define_1.TRTCScreenCaptureProperty) {
2568
2632
  const realSource = source;
2569
2633
  return this.rtcCloud.selectScreenCaptureTarget(realSource.type, realSource.sourceId, realSource.sourceName, realSource.isMinimizeWindow, captureRect.left, captureRect.top, captureRect.right, captureRect.bottom, property.enableCaptureMouse, property.enableHighLight, property.enableHighPerformance, property.highLightColor, property.highLightWidth, property.enableCaptureChildWindow);
@@ -2583,7 +2647,7 @@ class TRTCCloud extends events_1.EventEmitter {
2583
2647
  }
2584
2648
  }
2585
2649
  /**
2586
- * 8.7 启动屏幕分享,支持选择使用主路或辅路进行屏幕分享。(暂不支持 mac 平台预览界面)
2650
+ * 8.7 启动屏幕分享,支持选择使用主路或辅路进行屏幕分享。
2587
2651
  *
2588
2652
  * 注意:
2589
2653
  * 一个用户同时最多只能上传一条主路(TRTCVideoStreamTypeBig)画面和一条辅路(TRTCVideoStreamTypeSub)画面,
@@ -2642,12 +2706,14 @@ class TRTCCloud extends events_1.EventEmitter {
2642
2706
  this.screenCaptureStreamType = trtc_define_1.TRTCVideoStreamType.TRTCVideoStreamTypeSub;
2643
2707
  }
2644
2708
  /**
2645
- * 8.11 设置辅流(屏幕分享)的编码器参数
2709
+ * 8.11 设置屏幕分享(即辅路)的视频编码参数
2646
2710
  *
2647
- * - setVideoEncoderParam() 用于设置远端主路画面(TRTCVideoStreamTypeBig,一般用于摄像头)的编码参数。
2648
- * - setSubStreamEncoderParam() 用于设置远端辅路画面(TRTCVideoStreamTypeSub,一般用于屏幕分享)的编码参数。
2711
+ * 该接口可以设定远端用户所看到的屏幕分享(即辅路)的画面质量,同时也能决定云端录制出的视频文件中屏幕分享的画面质量。 请注意如下两个接口的差异:
2712
+ * - setVideoEncoderParam() 用于设置主路画面(TRTCVideoStreamTypeBig,一般用于摄像头)的视频编码参数。
2713
+ * - setSubStreamEncoderParam() 用于设置辅路画面(TRTCVideoStreamTypeSub,一般用于屏幕分享)的视频编码参数。
2649
2714
  *
2650
- * 该设置决定了远端用户看到的画面质量,同时也是云端录制出的视频文件的画面质量。
2715
+ * 注意:
2716
+ * 即使您使用主路传输屏幕分享(在调用 startScreenCapture 时设置 type=TRTCVideoStreamTypeBig),依然要使用 setSubStreamEncoderParam 设定屏幕分享的编码参数,而不要使用 setVideoEncoderParam 。
2651
2717
  *
2652
2718
  * @param {TRTCVideoEncParam} params - 辅流(屏幕分享)编码参数
2653
2719
  * @param {TRTCVideoResolution} params.videoResolution - 视频分辨率
@@ -3062,7 +3128,13 @@ class TRTCCloud extends events_1.EventEmitter {
3062
3128
  return this.rtcCloud.seekMusicToPosInTime(id, pts);
3063
3129
  }
3064
3130
  /**
3065
- * 11.19 设置背景音乐的音量大小,播放背景音乐混音时使用,用来控制背景音音量大小
3131
+ * 11.19 设置所有背景音乐的本地音量和远端音量的大小
3132
+ *
3133
+ * 该接口可以设置所有背景音乐的本地音量和远端音量。
3134
+ * - 本地音量:即主播本地可以听到的背景音乐的音量大小。
3135
+ * - 远端音量:即观众端可以听到的背景音乐的音量大小。
3136
+ *
3137
+ * 注意:如果将 volume 设置成 100 之后感觉音量还是太小,可以将 volume 最大设置成 150,但超过 100 的 volume 会有爆音的风险,请谨慎操作。
3066
3138
  *
3067
3139
  * @param {Number} volume - 音量大小,100为正常音量,取值范围为0 - 200。
3068
3140
  */
@@ -3231,17 +3303,7 @@ class TRTCCloud extends events_1.EventEmitter {
3231
3303
  this.rtcCloud.stopSpeedTest();
3232
3304
  }
3233
3305
  /**
3234
- * 13.3 设置 SDK 使用的音频设备根据跟随系统默认设备
3235
- *
3236
- * @param {TRTCDeviceType} deviceType - 设备类型
3237
- * @param {Boolean} enable - 是否跟随系统默认的音频设备。 true:跟随, 当系统默认音频设备发生改变时,SDK 立即切换音频设备; false:不跟随, 只有当 SDK 使用的音频设备被移除后或插入新的音频设备为系统默认设备时,SDK 才切换至系统默认的音频设备。
3238
- *
3239
- */
3240
- enableFollowingDefaultAudioDevice(deviceType, enable) {
3241
- this.rtcCloud.enableFollowingDefaultAudioDevice(deviceType, enable);
3242
- }
3243
- /**
3244
- * 13.4 开始进行摄像头测试
3306
+ * 13.3 开始进行摄像头测试
3245
3307
  *
3246
3308
  * 会触发 onFirstVideoFrame 回调接口
3247
3309
  *
@@ -3252,12 +3314,12 @@ class TRTCCloud extends events_1.EventEmitter {
3252
3314
  startCameraDeviceTest(view) {
3253
3315
  if (view !== undefined) {
3254
3316
  if (view !== null) {
3255
- let key = this.getKey(CAMERA_DEVICE_TEST_VIEW, trtc_define_1.TRTCVideoStreamType.TRTCVideoStreamTypeBig);
3317
+ const key = this.getKey(CAMERA_DEVICE_TEST_VIEW, trtc_define_1.TRTCVideoStreamType.TRTCVideoStreamTypeBig);
3256
3318
  this._initRender(key, view);
3257
3319
  const renderer = this.streams.get(key);
3258
3320
  renderer.setContentMode(trtc_define_1.TRTCVideoFillMode.TRTCVideoFillMode_Fill);
3259
3321
  }
3260
- // Buffer 为 null 时才新建,否则只能在 onVideoSizeChange 事件中重新申请 Buffer
3322
+ // Buffer 为 null 时才新建,否则只能在 handleVideoSizeChange 事件中重新申请 Buffer
3261
3323
  if (!cameraTestVideoBuffer.buffer) {
3262
3324
  const streamType = trtc_define_1.TRTCVideoStreamType.TRTCVideoStreamTypeBig;
3263
3325
  cameraTestVideoBuffer.streamType = streamType;
@@ -3267,9 +3329,14 @@ class TRTCCloud extends events_1.EventEmitter {
3267
3329
  cameraTestVideoBuffer.height = DEFAULT_VIDEO_HEIGHT;
3268
3330
  this.rtcCloud.setCameraTestVideoBuffer(cameraTestVideoBuffer.buffer, cameraTestVideoBuffer.width, cameraTestVideoBuffer.height, cameraTestVideoBuffer.pixelFormat);
3269
3331
  }
3270
- this.rtcCloud.startCameraDeviceTest((id, type, width, height, timestamp, rotation) => {
3332
+ this.rtcCloud.startCameraDeviceTest((id, type, width, height, timestamp, rotation, valid) => {
3271
3333
  if (this.enableRenderFrame) {
3272
- this._onRenderFrame(id, type, width, height, timestamp, rotation, cameraTestVideoBuffer.buffer);
3334
+ if (valid === 1) {
3335
+ this._onRenderFrame(id, type, width, height, timestamp, rotation, cameraTestVideoBuffer.buffer);
3336
+ }
3337
+ else {
3338
+ this.handleVideoSizeChange(id, type, width, height);
3339
+ }
3273
3340
  }
3274
3341
  });
3275
3342
  }
@@ -3278,7 +3345,7 @@ class TRTCCloud extends events_1.EventEmitter {
3278
3345
  }
3279
3346
  }
3280
3347
  /**
3281
- * 13.5 停止摄像头测试
3348
+ * 13.4 停止摄像头测试
3282
3349
  */
3283
3350
  stopCameraDeviceTest() {
3284
3351
  let key = this.getKey(CAMERA_DEVICE_TEST_VIEW, trtc_define_1.TRTCVideoStreamType.TRTCVideoStreamTypeBig);
@@ -3293,25 +3360,26 @@ class TRTCCloud extends events_1.EventEmitter {
3293
3360
  }
3294
3361
  }
3295
3362
  /**
3296
- * 13.6 开始进行麦克风测试
3363
+ * 13.5 开始进行麦克风测试
3297
3364
  *
3298
3365
  * 回调接口 onTestMicVolume 获取测试数据
3299
3366
  *
3300
3367
  * 该方法测试麦克风是否能正常工作,volume 的取值范围为0 - 100。
3301
3368
  *
3302
3369
  * @param {Number} interval - 反馈音量提示的时间间隔(ms),建议设置到大于 200 毫秒
3370
+ * @param {Boolean} playback - 是否开启回播麦克风声音,开启后用户测试麦克风时会听到自己的声音。默认值 true
3303
3371
  */
3304
- startMicDeviceTest(interval) {
3305
- this.rtcCloud.startMicDeviceTest(interval);
3372
+ startMicDeviceTest(interval, playback = true) {
3373
+ this.rtcCloud.startMicDeviceTest(interval, playback);
3306
3374
  }
3307
3375
  /**
3308
- * 13.7 停止麦克风测试
3376
+ * 13.6 停止麦克风测试
3309
3377
  */
3310
3378
  stopMicDeviceTest() {
3311
3379
  this.rtcCloud.stopMicDeviceTest();
3312
3380
  }
3313
3381
  /**
3314
- * 13.8 开始进行扬声器测试
3382
+ * 13.7 开始进行扬声器测试
3315
3383
  *
3316
3384
  * 回调接口 onTestSpeakerVolume 获取测试数据
3317
3385
  *
@@ -3324,7 +3392,7 @@ class TRTCCloud extends events_1.EventEmitter {
3324
3392
  this.rtcCloud.startSpeakerDeviceTest(testAudioFilePath);
3325
3393
  }
3326
3394
  /**
3327
- * 13.9 停止扬声器测试
3395
+ * 13.8 停止扬声器测试
3328
3396
  */
3329
3397
  stopSpeakerDeviceTest() {
3330
3398
  this.rtcCloud.stopSpeakerDeviceTest();
@@ -3413,25 +3481,16 @@ class TRTCCloud extends events_1.EventEmitter {
3413
3481
  // (十五) 废弃接口函数
3414
3482
  //
3415
3483
  /////////////////////////////////////////////////////////////////////////////////
3416
- /**
3417
- * 从 TRTCSDK6.9 后该接口已被废弃
3418
- *
3419
- * @deprecated 从 TRTCSDK6.9 后该接口已被废弃,请使用 setAudioCaptureVolume 接口替代。
3420
- * @param {Number} volume - 音量大小,100为正常音量,取值范围为0 - 200。
3421
- */
3422
- setMicVolumeOnMixing(volume) {
3423
- this.setAudioCaptureVolume(volume);
3424
- }
3425
3484
  ///------------------------内部方法-----------------------------
3426
3485
  addLocalVideoRenderCallback() {
3427
- if ([1, 2, 5].indexOf(this.renderMode) !== -1) {
3428
- this.pixelformate = trtc_define_1.TRTCVideoPixelFormat.TRTCVideoPixelFormat_I420;
3429
- this.pixelLength = 1.5;
3430
- }
3431
- else if (this.isExternalRenderEnabled || [3, 4, 6].indexOf(this.renderMode) !== -1) {
3486
+ if (this.isExternalRenderEnabled || [3, 4, 6].indexOf(this.renderMode) !== -1) {
3432
3487
  this.pixelformate = trtc_define_1.TRTCVideoPixelFormat.TRTCVideoPixelFormat_RGBA32;
3433
3488
  this.pixelLength = 4;
3434
3489
  }
3490
+ else if ([1, 2, 5].indexOf(this.renderMode) !== -1) {
3491
+ this.pixelformate = trtc_define_1.TRTCVideoPixelFormat.TRTCVideoPixelFormat_I420;
3492
+ this.pixelLength = 1.5;
3493
+ }
3435
3494
  else if ([7, 8].indexOf(this.renderMode) !== -1) {
3436
3495
  this.pixelformate = trtc_define_1.TRTCVideoPixelFormat.TRTCVideoPixelFormat_BGRA32;
3437
3496
  this.pixelLength = 4;
@@ -3440,24 +3499,31 @@ class TRTCCloud extends events_1.EventEmitter {
3440
3499
  console.error('trtc: not supported renderMode:', this.renderMode);
3441
3500
  return;
3442
3501
  }
3443
- this.rtcCloud.addLocalVideoRenderCallback((id, type, width, height, timestamp, rotation) => {
3444
- if (this.isScreenCapturing && this.screenCaptureStreamType === type) {
3445
- this._onRenderFrame(id, type, width, height, timestamp, rotation, screenVideoBuffer.buffer);
3446
- }
3447
- else {
3448
- this._onRenderFrame(id, type, width, height, timestamp, rotation, localVideoBuffer.buffer);
3502
+ this.rtcCloud.addLocalVideoRenderCallback((id, type, width, height, timestamp, rotation, valid) => {
3503
+ if (this.enableRenderFrame) {
3504
+ if (valid === 1) {
3505
+ if (this.isScreenCapturing && this.screenCaptureStreamType === type) {
3506
+ this._onRenderFrame(id, type, width, height, timestamp, rotation, screenVideoBuffer.buffer);
3507
+ }
3508
+ else {
3509
+ this._onRenderFrame(id, type, width, height, timestamp, rotation, localVideoBuffer.buffer);
3510
+ }
3511
+ }
3512
+ else {
3513
+ this.handleVideoSizeChange(id, type, width, height);
3514
+ }
3449
3515
  }
3450
3516
  }, this.pixelformate);
3451
3517
  }
3452
3518
  addRemoteVideoRenderCallback(userId) {
3453
- if ([1, 2, 5].indexOf(this.renderMode) !== -1) {
3454
- this.pixelformate = trtc_define_1.TRTCVideoPixelFormat.TRTCVideoPixelFormat_I420;
3455
- this.pixelLength = 1.5;
3456
- }
3457
- else if (this.isExternalRenderEnabled || [3, 4, 6].indexOf(this.renderMode) !== -1) {
3519
+ if (this.isExternalRenderEnabled || [3, 4, 6].indexOf(this.renderMode) !== -1) {
3458
3520
  this.pixelformate = trtc_define_1.TRTCVideoPixelFormat.TRTCVideoPixelFormat_RGBA32;
3459
3521
  this.pixelLength = 4;
3460
3522
  }
3523
+ else if ([1, 2, 5].indexOf(this.renderMode) !== -1) {
3524
+ this.pixelformate = trtc_define_1.TRTCVideoPixelFormat.TRTCVideoPixelFormat_I420;
3525
+ this.pixelLength = 1.5;
3526
+ }
3461
3527
  else if ([7, 8].indexOf(this.renderMode) !== -1) {
3462
3528
  this.pixelformate = trtc_define_1.TRTCVideoPixelFormat.TRTCVideoPixelFormat_BGRA32;
3463
3529
  this.pixelLength = 4;
@@ -3466,13 +3532,20 @@ class TRTCCloud extends events_1.EventEmitter {
3466
3532
  console.error('trtc: not supported renderMode:', this.renderMode);
3467
3533
  return;
3468
3534
  }
3469
- this.rtcCloud.addRemoteVideoRenderCallback(userId, (id, type, width, height, timestamp, rotation) => {
3470
- const videoBufferInfo = remoteVideoBufferMap.get(id);
3471
- if (videoBufferInfo && videoBufferInfo.streamType === type) {
3472
- this._onRenderFrame(id, type, width, height, timestamp, rotation, videoBufferInfo.buffer);
3473
- }
3474
- else {
3475
- this._onRenderFrame(id, type, width, height, timestamp, rotation, screenVideoBuffer.buffer);
3535
+ this.rtcCloud.addRemoteVideoRenderCallback(userId, (id, type, width, height, timestamp, rotation, valid) => {
3536
+ if (this.enableRenderFrame) {
3537
+ if (valid === 1) {
3538
+ const videoBufferInfo = remoteVideoBufferMap.get(id);
3539
+ if (videoBufferInfo && videoBufferInfo.streamType === type) {
3540
+ this._onRenderFrame(id, type, width, height, timestamp, rotation, videoBufferInfo.buffer);
3541
+ }
3542
+ else {
3543
+ this._onRenderFrame(id, type, width, height, timestamp, rotation, screenVideoBuffer.buffer);
3544
+ }
3545
+ }
3546
+ else {
3547
+ this.handleVideoSizeChange(id, type, width, height);
3548
+ }
3476
3549
  }
3477
3550
  }, this.pixelformate);
3478
3551
  }
@@ -3500,14 +3573,14 @@ class TRTCCloud extends events_1.EventEmitter {
3500
3573
  this.streams.forEach((value, key, map) => {
3501
3574
  oldStreams.set(key, value);
3502
3575
  });
3503
- if ([1, 2, 5].indexOf(mode) !== -1) {
3504
- this.pixelformate = trtc_define_1.TRTCVideoPixelFormat.TRTCVideoPixelFormat_I420;
3505
- this.pixelLength = 1.5;
3506
- }
3507
- else if (this.isExternalRenderEnabled || [3, 4, 6].indexOf(mode) !== -1) {
3576
+ if (this.isExternalRenderEnabled || [3, 4, 6].indexOf(mode) !== -1) {
3508
3577
  this.pixelformate = trtc_define_1.TRTCVideoPixelFormat.TRTCVideoPixelFormat_RGBA32;
3509
3578
  this.pixelLength = 4;
3510
3579
  }
3580
+ else if ([1, 2, 5].indexOf(mode) !== -1) {
3581
+ this.pixelformate = trtc_define_1.TRTCVideoPixelFormat.TRTCVideoPixelFormat_I420;
3582
+ this.pixelLength = 1.5;
3583
+ }
3511
3584
  else {
3512
3585
  // 7,8
3513
3586
  this.pixelformate = trtc_define_1.TRTCVideoPixelFormat.TRTCVideoPixelFormat_BGRA32;
@@ -3871,7 +3944,7 @@ class TRTCCloud extends events_1.EventEmitter {
3871
3944
  }
3872
3945
  else if (format == trtc_define_1.TRTCVideoPixelFormat.TRTCVideoPixelFormat_BGRA32) {
3873
3946
  if (this.renderMode !== 3) {
3874
- videoframe.data = this._YUV2RGBA(width, height, data);
3947
+ videoframe.data = this._YUV2RGBA(width, height, data.buffer || data);
3875
3948
  videoframe.length = width * height * 4;
3876
3949
  callback(userid, streamType, videoframe);
3877
3950
  }
@@ -63,10 +63,7 @@ export declare enum TRTCVideoPixelFormat {
63
63
  TRTCVideoPixelFormat_Unknown = 0,
64
64
  TRTCVideoPixelFormat_I420 = 1,
65
65
  TRTCVideoPixelFormat_BGRA32 = 3,
66
- /** RGBA */
67
- TRTCVideoPixelFormat_RGBA32 = 5,
68
- /** H264 */
69
- TRTCVideoPixelFormat_H264 = 6
66
+ TRTCVideoPixelFormat_RGBA32 = 5
70
67
  }
71
68
  export declare enum TRTCVideoBufferType {
72
69
  TRTCVideoBufferType_Unknown = 0,
@@ -377,12 +374,14 @@ export declare class TRTCQualityInfo {
377
374
  *
378
375
  * @param {String} userId - 说话者的 userId,字符编码格式是 UTF-8
379
376
  * @param {Number} volume - 说话者的音量, 取值范围0 - 100
377
+ * @param {Number} vad - 是否检测到人声。0:非人声 1:人声 -1: 不支持检测 (mac 平台暂不支持)
380
378
  *
381
379
  */
382
380
  export declare class TRTCVolumeInfo {
383
381
  userId: string;
384
382
  volume: number;
385
- constructor(userId?: string, volume?: number);
383
+ vad: number;
384
+ constructor(userId?: string, volume?: number, vad?: number);
386
385
  }
387
386
  /**
388
387
  * 5.7 测速参数
@@ -590,7 +589,7 @@ export declare class TRTCAudioRecordingParams {
590
589
  constructor(filePath?: null | string, recordingContent?: TRTCAudioRecordingContent);
591
590
  }
592
591
  /**
593
- * 5.14 音效
592
+ * 5.16 音效
594
593
  *
595
594
  * @param {Number} effectId - 【字段含义】音效 ID<br>
596
595
  * 【特殊说明】SDK 允许播放多路音效,因此需要音效 ID 进行标记,用于控制音效的开始、停止、音量等
@@ -257,9 +257,8 @@ const TRTCVideoPixelFormat_HACK_JSDOC = {
257
257
  // TRTCVideoPixelFormat_Texture_2D: 2,
258
258
  /** BGRA32 */
259
259
  TRTCVideoPixelFormat_BGRA32: 3,
260
- /** RGBA */
261
260
  TRTCVideoPixelFormat_RGBA32: 5,
262
- TRTCVideoPixelFormat_H264: 6,
261
+ // TRTCVideoPixelFormat_H264: 6,
263
262
  };
264
263
  var TRTCVideoPixelFormat;
265
264
  (function (TRTCVideoPixelFormat) {
@@ -267,10 +266,8 @@ var TRTCVideoPixelFormat;
267
266
  TRTCVideoPixelFormat[TRTCVideoPixelFormat["TRTCVideoPixelFormat_I420"] = 1] = "TRTCVideoPixelFormat_I420";
268
267
  // TRTCVideoPixelFormat_Texture_2D= 2,
269
268
  TRTCVideoPixelFormat[TRTCVideoPixelFormat["TRTCVideoPixelFormat_BGRA32"] = 3] = "TRTCVideoPixelFormat_BGRA32";
270
- /** RGBA */
271
269
  TRTCVideoPixelFormat[TRTCVideoPixelFormat["TRTCVideoPixelFormat_RGBA32"] = 5] = "TRTCVideoPixelFormat_RGBA32";
272
- /** H264 */
273
- TRTCVideoPixelFormat[TRTCVideoPixelFormat["TRTCVideoPixelFormat_H264"] = 6] = "TRTCVideoPixelFormat_H264";
270
+ // TRTCVideoPixelFormat_H264 = 6,
274
271
  })(TRTCVideoPixelFormat = exports.TRTCVideoPixelFormat || (exports.TRTCVideoPixelFormat = {}));
275
272
  ;
276
273
  /**
@@ -882,12 +879,14 @@ exports.TRTCQualityInfo = TRTCQualityInfo;
882
879
  *
883
880
  * @param {String} userId - 说话者的 userId,字符编码格式是 UTF-8
884
881
  * @param {Number} volume - 说话者的音量, 取值范围0 - 100
882
+ * @param {Number} vad - 是否检测到人声。0:非人声 1:人声 -1: 不支持检测 (mac 平台暂不支持)
885
883
  *
886
884
  */
887
885
  class TRTCVolumeInfo {
888
- constructor(userId = '', volume = 0) {
886
+ constructor(userId = '', volume = 0, vad = -1) {
889
887
  this.userId = userId;
890
888
  this.volume = volume;
889
+ this.vad = vad;
891
890
  }
892
891
  }
893
892
  exports.TRTCVolumeInfo = TRTCVolumeInfo;
@@ -1199,7 +1198,7 @@ class TRTCAudioRecordingParams {
1199
1198
  exports.TRTCAudioRecordingParams = TRTCAudioRecordingParams;
1200
1199
  ;
1201
1200
  /**
1202
- * 5.14 音效
1201
+ * 5.16 音效
1203
1202
  *
1204
1203
  * @param {Number} effectId - 【字段含义】音效 ID<br>
1205
1204
  * 【特殊说明】SDK 允许播放多路音效,因此需要音效 ID 进行标记,用于控制音效的开始、停止、音量等
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "trtc-electron-sdk",
3
- "version": "10.3.8-beta.4",
3
+ "version": "10.3.8-beta.7",
4
4
  "description": "trtc electron sdk",
5
5
  "main": "./liteav/trtc.js",
6
6
  "types": "./liteav/trtc.d.ts",