zbzt-live-sdk 0.0.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.
Files changed (80) hide show
  1. package/.babelrc +8 -0
  2. package/.editorconfig +13 -0
  3. package/.eslintrc.js +29 -0
  4. package/CHANGELOG.md +16 -0
  5. package/README.md +32 -0
  6. package/dist/zbzt-live-sdk.cjs.js +51 -0
  7. package/dist/zbzt-live-sdk.esm.js +51 -0
  8. package/dist/zbzt-live-sdk.umd.js +52 -0
  9. package/dist/zbzt-live-sdk.umd.js.map +1 -0
  10. package/example/app.js +133 -0
  11. package/example/bootstrap-3.4.1/css/bootstrap-theme.css +587 -0
  12. package/example/bootstrap-3.4.1/css/bootstrap-theme.css.map +1 -0
  13. package/example/bootstrap-3.4.1/css/bootstrap-theme.min.css +6 -0
  14. package/example/bootstrap-3.4.1/css/bootstrap-theme.min.css.map +1 -0
  15. package/example/bootstrap-3.4.1/css/bootstrap.css +6834 -0
  16. package/example/bootstrap-3.4.1/css/bootstrap.css.map +1 -0
  17. package/example/bootstrap-3.4.1/css/bootstrap.min.css +6 -0
  18. package/example/bootstrap-3.4.1/css/bootstrap.min.css.map +1 -0
  19. package/example/bootstrap-3.4.1/fonts/glyphicons-halflings-regular.eot +0 -0
  20. package/example/bootstrap-3.4.1/fonts/glyphicons-halflings-regular.svg +288 -0
  21. package/example/bootstrap-3.4.1/fonts/glyphicons-halflings-regular.ttf +0 -0
  22. package/example/bootstrap-3.4.1/fonts/glyphicons-halflings-regular.woff +0 -0
  23. package/example/bootstrap-3.4.1/fonts/glyphicons-halflings-regular.woff2 +0 -0
  24. package/example/bootstrap-3.4.1/js/bootstrap.js +2580 -0
  25. package/example/bootstrap-3.4.1/js/bootstrap.min.js +6 -0
  26. package/example/bootstrap-3.4.1/js/npm.js +13 -0
  27. package/example/css/style.css +18 -0
  28. package/example/index.html +59 -0
  29. package/example/js/jquery-3.7.1.min.js +2 -0
  30. package/example/js/utils.js +25 -0
  31. package/example/js/variables.js +14 -0
  32. package/example/js/zegoApi.js +229 -0
  33. package/example/style.css +25 -0
  34. package/example/test.html +100 -0
  35. package/package.json +60 -0
  36. package/release.js +33 -0
  37. package/rollup-plugin-http.js +49 -0
  38. package/src/channel/getSendMsgParams.js +66 -0
  39. package/src/channel/index.js +135 -0
  40. package/src/channel/pomelo/index.js +182 -0
  41. package/src/channel/pomelo/latestQueue.js +150 -0
  42. package/src/channel/pomelo/polemo.js +730 -0
  43. package/src/channel/pomelo/util.js +54 -0
  44. package/src/channel/sdk-cb.js +73 -0
  45. package/src/channel/stream-msg.js +97 -0
  46. package/src/channel/zbzt/index.js +74 -0
  47. package/src/channel/zbzt/interactWithChannel.js +4 -0
  48. package/src/channel/zbzt/interactWithChannelControl.js +1568 -0
  49. package/src/channel/zbzt/interactWithChannelEntry.js +318 -0
  50. package/src/config/config.js +226 -0
  51. package/src/default/base.js +71 -0
  52. package/src/default/extend.js +36 -0
  53. package/src/default/index.js +10 -0
  54. package/src/live/base.js +43 -0
  55. package/src/live/call-method.js +10 -0
  56. package/src/live/extend.js +53 -0
  57. package/src/live/index.js +10 -0
  58. package/src/network/api.js +56 -0
  59. package/src/network/commonFetch.js +66 -0
  60. package/src/network/dataReport.js +448 -0
  61. package/src/notice.js +418 -0
  62. package/src/tool/base.js +74 -0
  63. package/src/tool/call-method.js +10 -0
  64. package/src/tool/extend.js +42 -0
  65. package/src/tool/index.js +10 -0
  66. package/src/util/bridge.js +87 -0
  67. package/src/util/bridge1.js +46 -0
  68. package/src/util/dict.js +51 -0
  69. package/src/util/sessionStorage.js +29 -0
  70. package/src/util/sha256.js +483 -0
  71. package/src/util/util.js +329 -0
  72. package/src/zbzt-av-sdk/default-sdk.js +192 -0
  73. package/src/zbzt-av-sdk/device.js +86 -0
  74. package/src/zbzt-av-sdk/rtc-sdk.js +2854 -0
  75. package/src/zbzt-av-sdk/talrtc-sdk.js +2620 -0
  76. package/src/zbzt-av-sdk/trtc-sdk.js +1802 -0
  77. package/src/zbzt-av-sdk/zbzt-av-sdk.js +2121 -0
  78. package/src/zbzt-av-sdk/zego-sdk.js +1718 -0
  79. package/src/zbzt-av-sdk/zego-sdk.js.bak +3133 -0
  80. package/src/zbzt-live-sdk.js +1484 -0
@@ -0,0 +1,2121 @@
1
+ /**
2
+ * @File: 直播云音视频 SDK
3
+ * @Author: xuyuanrui
4
+ * @Email: raywhbxyr@163.com
5
+ * @Date: 2018-08-09 00:03:46
6
+ **/
7
+
8
+ // import rtcsdk from './rtc-sdk.js';
9
+ import zegosdk from './zego-sdk.js';
10
+ import talrtcsdk from './talrtc-sdk.js';
11
+ import * as defaultsdk from './default-sdk.js';
12
+ // import trtcsdk from './trtc-sdk.js';
13
+ import defaultApi from '../default/index.js';
14
+ import util from '../util/util.js';
15
+ const RTC = 'rtc';
16
+ const ZEGO = 'zego';
17
+ const TALRTC = 'talrtc';
18
+ const TRTC = 'trtc';
19
+ const NERTC = 'nertc';
20
+ const VOLCRTC = 'volcrtc';
21
+ // rtc 底层流媒体数据上报地址配置
22
+ const rtcReportUrl = {
23
+ test: 'test-r.weclassroom.com',
24
+ online: 'r.weclassroom.com'
25
+ };
26
+ const sdkVale = {
27
+ zego: 8, //8代表zego采集麦克风+扬声器
28
+ talrtc: 101, //101代表talrtc采集声音
29
+ nertc: 101, //101代表talrtc采集声音
30
+ volcrtc: 101, //101代表talrtc采集声音
31
+ trtc: 102, //102代表trtc采集声音
32
+ };
33
+
34
+ /**
35
+ * @function 设备检测初始化(新)
36
+ */
37
+ export const deviceCheckerInit = async (extension, env) => {
38
+ setDefaultzbztSDKDeviceCheckerInit();
39
+ await zegosdk.loadZego(extension.version.zego);
40
+ //此时课堂外端上无法获取roomid,假数据模拟,待确定userId-万一重复(不推流)
41
+ zegosdk.addListener('deviceCheckerInit');
42
+ await zegosdk.startEngine(2646760764,'/XpDtuxpv4TrBoNTozIs6waxK6LF/mGZK0jVYo003Ws=')//也是需要参数的,还要区分测试环境和线上环境
43
+ await zegosdk.setVideoCaptureResolution(320, 240);
44
+ await zegosdk.setVideoBitrate(100000);
45
+ await zegosdk.setVideoFPS(15);
46
+ await zegosdk.startSoundLevelMonitor();
47
+ await zegosdk.setSoundLevelMonitorCycle(500);
48
+ let isDeviceCheckInitFinished = zegosdk.getDeviceCheckInitStatus();
49
+ if(isDeviceCheckInitFinished) {
50
+ zegosdk.setDeviceCheckInitStatus();
51
+ window.zbztAVSDK_init_sdk_type = 'zego';
52
+ defaultApi.writeLog('isDeviceCheckInitFinished1',isDeviceCheckInitFinished);
53
+ } else {
54
+ await new Promise((resolve, reject) => {
55
+ let timer = null;
56
+ timer = setInterval(() => {
57
+ isDeviceCheckInitFinished = zegosdk.getDeviceCheckInitStatus();
58
+ defaultApi.writeLog('isDeviceCheckInitFinished2',isDeviceCheckInitFinished);
59
+ if (isDeviceCheckInitFinished) {
60
+ zegosdk.setDeviceCheckInitStatus();
61
+ clearInterval(timer);
62
+ resolve();
63
+ }
64
+ defaultApi.writeLog('isDeviceCheckInitFinished3',isDeviceCheckInitFinished);
65
+ }, 30);
66
+ });
67
+ window.zbztAVSDK_init_sdk_type = 'zego';
68
+ }
69
+ defaultApi.writeLog('change zbztAVSDK_init_sdk_type to rtc , from avsdk device check init');
70
+ };
71
+
72
+ /**
73
+ * @function 设置设备检测对象默认值
74
+ */
75
+ export const setDefaultzbztSDKDeviceCheckerInit = async () => {
76
+ if(window.zbztAVSDK_device_checker_init){
77
+ if(!window.zbztAVSDK_device_checker_init.microphone){
78
+ window.zbztAVSDK_device_checker_init.microphone = {
79
+ hasTest: false,
80
+ list: [],
81
+ use: '',
82
+ name:''
83
+ };
84
+ };
85
+ if(!window.zbztAVSDK_device_checker_init.camera){
86
+ window.zbztAVSDK_device_checker_init.camera = {
87
+ hasTest: false,
88
+ list: [],
89
+ use: '',
90
+ name: ''
91
+ };
92
+ };
93
+ if(!window.zbztAVSDK_device_checker_init.speaker){
94
+ window.zbztAVSDK_device_checker_init.speaker = {
95
+ hasTest: false,
96
+ list: [],
97
+ use: '',
98
+ name: ''
99
+ };
100
+ };
101
+ } else {
102
+ window.zbztAVSDK_device_checker_init = {
103
+ microphone: {
104
+ hasTest: false,
105
+ list: [],
106
+ use: '',
107
+ name: ''
108
+ },
109
+ camera: {
110
+ hasTest: false,
111
+ list: [],
112
+ use: '',
113
+ name: ''
114
+ },
115
+ speaker: {
116
+ hasTest: false,
117
+ list: [],
118
+ use: '',
119
+ name: ''
120
+ }
121
+ };
122
+ }
123
+ // window.zbztAVSDK_device_checker_init = window.zbztAVSDK_device_checker_init || {
124
+ // window.zbztAVSDK_device_checker_init = {
125
+ // microphone: {
126
+ // hasTest: false,
127
+ // list: [],
128
+ // use: ''
129
+ // },
130
+ // camera: {
131
+ // hasTest: false,
132
+ // list: [],
133
+ // use: ''
134
+ // },
135
+ // speaker: {
136
+ // hasTest: false,
137
+ // list: [],
138
+ // use: ''
139
+ // }
140
+ // };
141
+ defaultApi.writeLog(`setDefaultzbztSDKDeviceCheckerInit, ${window.zbztAVSDK_device_checker_init}`);
142
+ };
143
+
144
+ /**
145
+ * @function 结束设备检测
146
+ */
147
+ export const stopCheckDevice = async () => {
148
+ defaultApi.writeLog('zbzt_av_sdk stop checkDevice');
149
+ return zegosdk.stopCheckDevice();
150
+ };
151
+
152
+
153
+
154
+ /**
155
+ * @function 初始化
156
+ * @param sdk_type:String 'rtc' | 'zego' | 'agora',必选
157
+ * @param args:Object 必选
158
+ * {
159
+ * rtc: {},
160
+ * zego: {},
161
+ * agora: {}
162
+ * }
163
+ * @return Promise | void
164
+ */
165
+ export const init = (sdk_type, args) => {
166
+ // 将初始化参数存储到全局
167
+ window.zbztAVSDK_init_sdk_type = sdk_type;
168
+ defaultApi.writeLog(`change zbztAVSDK_init_sdk_type to ${sdk_type} , from avsdk init action`);
169
+ window.zbztAVSDK_init_params = args;
170
+ setDefaultzbztSDKDeviceCheckerInit();
171
+
172
+ return changeSDK(undefined);
173
+ };
174
+
175
+ /**
176
+ * @function 恢复sdk
177
+ */
178
+ export const recoverSdk = (args) => {
179
+ window.zbztAVSDK_init_params = args;
180
+ const config = window.zbztAVSDK_init_params[window.zbztAVSDK_init_sdk_type];
181
+ switch (window.zbztAVSDK_init_sdk_type) {
182
+ case RTC:
183
+ // return rtcsdk.recoverSdk(config);
184
+ case ZEGO:
185
+ // return zegosdk.recoverSdk(dealSDKMsg);
186
+ default:
187
+ break;
188
+ }
189
+ };
190
+
191
+ /**
192
+ * @function 切换线路
193
+ * @param args:Object 可选
194
+ * {
195
+ * sdk_type, // String,'rtc' | 'zego' | 'agora',可选
196
+ * // 无传入的话,sdk 线路默认选择 window.zbztAVSDK_init_sdk_type
197
+ * config // Object,配置的参数对象,不同的线路参数对象不同,可选
198
+ * // 无传入的话,sdk 线路默认选择 window.zbztAVSDK_init_params 中相应线路的配置
199
+ * }
200
+ * @return Promise | void
201
+ */
202
+ export const changeSDK = async (args) => {
203
+ if (args) {
204
+ rtcsdk.stopCheckDevice();
205
+ await leaveRoomWithChangeSDK().catch((err) => {
206
+ console.error('leave room fail:', err);
207
+ });
208
+ // await unloadExtension();
209
+ }
210
+ if (args && args.sdk_type) {
211
+ window.zbztAVSDK_init_sdk_type = args.sdk_type;
212
+ defaultApi.writeLog(`change zbztAVSDK_init_sdk_type to ${args.sdk_type} , from avsdk changeSDK action`);
213
+ }
214
+ if (args && args.config) {
215
+ window.zbztAVSDK_init_params[window.zbztAVSDK_init_sdk_type] = args.config;
216
+ }
217
+ const sdk_type = window.zbztAVSDK_init_sdk_type;
218
+ const config = window.zbztAVSDK_init_params[window.zbztAVSDK_init_sdk_type];
219
+
220
+ switch (sdk_type) {
221
+ case RTC:
222
+ // return rtcsdk.init(config);
223
+ case ZEGO:
224
+ return zegosdk.init(config);
225
+ case TALRTC:
226
+ case NERTC:
227
+ case VOLCRTC:
228
+ return talrtcsdk.init(config);
229
+ case TRTC:
230
+ // return trtcsdk.init(config);
231
+ default:
232
+ break;
233
+ }
234
+
235
+ };
236
+
237
+ /**
238
+ * @function 卸载扩展
239
+ * @return Promise | void
240
+ */
241
+ export const unloadExtension = () => {
242
+ switch (window.zbztAVSDK_init_sdk_type) {
243
+ case RTC:
244
+ // return rtcsdk.unloadRtc();
245
+ case ZEGO:
246
+ return zegosdk.unloadZego();
247
+ case TALRTC:
248
+ case NERTC:
249
+ case VOLCRTC:
250
+ return talrtcsdk.unloadTalrtc();
251
+ case TRTC:
252
+ // return trtcsdk.unloadTrtc();
253
+ default:
254
+ break;
255
+ }
256
+ };
257
+
258
+ /**
259
+ * @function 获取摄像头列表
260
+ * @return Promise | void
261
+ */
262
+ export const getCameraDeviceList = async () => {
263
+ switch (window.zbztAVSDK_init_sdk_type) {
264
+ case RTC:
265
+ // return await rtcsdk.getCameraDevice();
266
+ case ZEGO:
267
+ return zegosdk.getVideoDeviceList();
268
+ case TALRTC:
269
+ case NERTC:
270
+ case VOLCRTC:
271
+ return talrtcsdk.getCameraDeviceList();
272
+ case TRTC:
273
+ // return await trtcsdk.getCameraDeviceListTrtc();
274
+ default:
275
+ return defaultsdk.getCameraDeviceList();
276
+ }
277
+ };
278
+
279
+ /**
280
+ * @function 指定摄像头
281
+ * @param deviceId:String 摄像头 id,必须
282
+ * @return Promise | void
283
+ */
284
+ export const setCameraDevice = async (deviceId, operationType) => {
285
+ switch (window.zbztAVSDK_init_sdk_type) {
286
+ case RTC:
287
+ // return await rtcsdk.setCameraDevice({deviceId, operationType});
288
+ case ZEGO:
289
+ return zegosdk.setVideoDevice({deviceId, operationType});
290
+ case TALRTC:
291
+ case NERTC:
292
+ case VOLCRTC:
293
+ return talrtcsdk.setCameraDevice({ deviceId });
294
+ case TRTC:
295
+ // return await trtcsdk.setVideoDevice({deviceId});
296
+ default:
297
+ return defaultsdk.setCameraDevice({ deviceId });
298
+ }
299
+ };
300
+
301
+ /**
302
+ * @function 开摄像/关摄像
303
+ * @param operation:Boolean 操作类型,false -> 关闭,true -> 打开,必选
304
+ * @return Promise | void
305
+ */
306
+ export const openOrCloseCamera = (operation) => {
307
+ switch (window.zbztAVSDK_init_sdk_type) {
308
+ case RTC:
309
+ // return rtcsdk.openOrCloseCamera(operation);
310
+ case ZEGO:
311
+ return zegosdk.enableCamera(operation);
312
+ case TALRTC:
313
+ case NERTC:
314
+ case VOLCRTC:
315
+ return talrtcsdk.openOrCloseCamera(operation);
316
+ case TRTC:
317
+ // return trtcsdk.openOrCloseCamera(operation);
318
+ default:
319
+ return defaultsdk.openOrCloseCamera(operation);
320
+ }
321
+ };
322
+
323
+ //是否推画面 false/不推 true/推
324
+ export const setPushStreamVideo = (operation) => {
325
+ switch (window.zbztAVSDK_init_sdk_type) {
326
+ case RTC:
327
+ // return rtcsdk.muteStreamVideo(!operation);
328
+ case ZEGO:
329
+ return zegosdk.setMuteStreamVideo(!operation);
330
+ case TALRTC:
331
+ case NERTC:
332
+ case VOLCRTC:
333
+ return talrtcsdk.muteLocalVideo(!operation);
334
+ case TRTC:
335
+ default:
336
+ break;
337
+ }
338
+ };
339
+
340
+
341
+ /**
342
+ * @function 是否推声音 ---暂时没有用到,未抛出去未测
343
+ * @param operation:Boolean 操作类型,false -> 关闭,true -> 打开,必选
344
+ * @return Promise | void
345
+ */
346
+ export const setPushAudioMute = (operation) => {
347
+ switch (window.zbztAVSDK_init_sdk_type) {
348
+ case RTC:
349
+ // return rtcsdk.muteStreamAudio(!operation);
350
+ case ZEGO:
351
+ return zegosdk.setMuteStreamAudio(!operation);
352
+ case TALRTC:
353
+ case NERTC:
354
+ case VOLCRTC:
355
+ return talrtcsdk.muteLocalAudio(!operation);
356
+ case TRTC:
357
+ default:
358
+ break;
359
+ }
360
+ };
361
+
362
+ /**
363
+ * @function 开始连麦
364
+ * @param mode:number 采集器默认, 默认0=站立 1=坐立
365
+ * @return Promise | void
366
+ */
367
+ export const teacherStartLinkMic = (mode) => {
368
+ switch (window.zbztAVSDK_init_sdk_type) {
369
+ case RTC:
370
+ // return rtcsdk.teacherStartLinkMic(mode);
371
+ case ZEGO:
372
+ return zegosdk.teacherStartLinkMic(mode);
373
+ case TALRTC:
374
+ case NERTC:
375
+ case VOLCRTC:
376
+ return talrtcsdk.teacherStartLinkMic(mode);
377
+ case TRTC:
378
+ // return trtcsdk.teacherStartLinkMic(mode)
379
+ default:
380
+ break;
381
+ }
382
+ };
383
+
384
+ /**
385
+ * @function 结束连麦
386
+ * @param mode:number 采集器默认, 默认0=站立 1=坐立
387
+ * @return Promise | void
388
+ */
389
+ export const teacherStopLinkMic = (mode) => {
390
+ switch (window.zbztAVSDK_init_sdk_type) {
391
+ case RTC:
392
+ // return rtcsdk.teacherStopLinkMic(mode);
393
+ case ZEGO:
394
+ return zegosdk.teacherStopLinkMic(mode);
395
+ case TALRTC:
396
+ case NERTC:
397
+ case VOLCRTC:
398
+ return talrtcsdk.teacherStopLinkMic(mode);
399
+ case TRTC:
400
+ // return trtcsdk.teacherStopLinkMic(mode);
401
+ default:
402
+ break;
403
+ }
404
+ };
405
+
406
+ /**
407
+ * @function 获取视频 src 或者将视频绑定到某一个 <video> 标签上
408
+ * @param args:Object
409
+ * {
410
+ * isLocal, // Boolean,是否是本地的视频预览
411
+ * streamId, // String,要拉取的视频流的 id,可选,只有拉取远程的视频流的时候才是必选的,本地不用
412
+ * domId // String,<video> 标签的 id,可选,如果传了就把视频绑定到对应的 <video> 标签上
413
+ * }
414
+ * @return Promise | void,可从 Promise 中获取 src,Promise.then((src) => {})
415
+ */
416
+ export const getOrLocateVideo = (args) => {
417
+ switch (window.zbztAVSDK_init_sdk_type) {
418
+ case RTC:
419
+ // return rtcsdk.startLocalOrRemotePreview(args.isLocal, args.streamId, args.domId);
420
+ case ZEGO:
421
+ return zegosdk.startLocalOrRemotePreview(args.isLocal, args.streamId, args.domId);
422
+ case TALRTC:
423
+ case NERTC:
424
+ case VOLCRTC:
425
+ return talrtcsdk.startLocalOrRemotePreview(args.isLocal, args.streamId, args.domId);
426
+ case TRTC:
427
+ // return trtcsdk.startLocalOrRemotePreview(args.isLocal, args.streamId, args.domId, args.isTeacherNewWindowPreview);
428
+ default: // 无 sdk_type 时,直接使用浏览器接口
429
+ return defaultsdk.getOrLocateVideo(args.isLocal, args.streamId, args.domId);
430
+ }
431
+ };
432
+
433
+ /**
434
+ * @function 开始推流
435
+ * @return Promise | void
436
+ */
437
+ export const startPushFlow = async (streamid, idx) => {
438
+ switch (window.zbztAVSDK_init_sdk_type) {
439
+ case RTC:
440
+ // return await rtcsdk.startPush();
441
+ case ZEGO:
442
+ return zegosdk.startPublish2(streamid, idx);
443
+ case TALRTC:
444
+ case NERTC:
445
+ case VOLCRTC:
446
+ return talrtcsdk.startPush(streamid); // 可能为空,函数内部有判断逻辑,为空时,根据规则生成streamId
447
+ case TRTC:
448
+ // return await trtcsdk.startPush(streamid, idx);//流id需要做兼容处理
449
+ default:
450
+ break;
451
+ }
452
+ };
453
+
454
+ /**
455
+ * @function 暂停推流
456
+ * @return Promise | void
457
+ */
458
+ export const stopPushFlow = (idx, streamId) => {
459
+ switch (window.zbztAVSDK_init_sdk_type) {
460
+ case RTC:
461
+ // return rtcsdk.stopPush();
462
+ case ZEGO:
463
+ return zegosdk.stopPublish(idx);
464
+ case TALRTC:
465
+ case NERTC:
466
+ case VOLCRTC:
467
+ return talrtcsdk.stopPush(streamId);
468
+ case TRTC:
469
+ // return trtcsdk.stopPush(idx);
470
+ default:
471
+ break;
472
+ }
473
+ };
474
+
475
+ /**
476
+ * @function 初始化拉流
477
+ * @param args:Object
478
+ * {
479
+ * streamId, // String,被拉取的流的 id,必选
480
+ * domId // String,<video> 标签的 id,可选,如果传了就把视频绑定到对应的 <video> 标签上
481
+ * }
482
+ * @return Promise | void,可从 Promise 中获取 src,Promise.then((src) => {})
483
+ */
484
+ export const initPullFlow = (args) => {
485
+ switch (window.zbztAVSDK_init_sdk_type) {
486
+ case RTC:
487
+ return {
488
+ sdk_type: RTC,
489
+ // videoSrc: rtcsdk.initPullFlow(args.streamId, args.domId, args.mute, args.renderId, args.notAutoPlay, args.audioOnly, args.needScale, args.scaleParams, args.streamType)
490
+ };
491
+ case ZEGO:
492
+ return {
493
+ sdk_type: ZEGO,
494
+ videoSrc: zegosdk.initPullFlow(args.streamId, args.domId, args.mute, args.renderId, args.notAutoPlay, args.audioOnly)
495
+ };
496
+ case TALRTC:
497
+ case NERTC:
498
+ case VOLCRTC:
499
+ return {
500
+ sdk_type: window.zbztAVSDK_init_sdk_type,
501
+ videoSrc: talrtcsdk.initPullFlow(args.streamId, args.domId, args.mute, args.renderId, args.notAutoPlay, args.audioOnly)
502
+ };
503
+ case TRTC:
504
+ return {
505
+ sdk_type: TRTC,
506
+ // videoSrc: trtcsdk.initPullFlow(args.streamId, args.domId, args.mute, args.renderId, args.notAutoPlay, args.audioOnly)
507
+ };
508
+ default:
509
+ break;
510
+ }
511
+ };
512
+
513
+ /**
514
+ * @function 恢复拉指定的流
515
+ * @param streamId:String 被拉取的流的 id,必选
516
+ * @return Promise | void
517
+ */
518
+ export const startPullFlow = (streamId) => {
519
+ switch (window.zbztAVSDK_init_sdk_type) {
520
+ case RTC:
521
+ // return rtcsdk.play(streamId);
522
+ case ZEGO:
523
+ return zegosdk.playStream(streamId);
524
+ case TALRTC:
525
+ case NERTC:
526
+ case VOLCRTC:
527
+ return talrtcsdk.startPlay(streamId);
528
+ case TRTC:
529
+ // return trtcsdk.startPlay(streamId);
530
+ default:
531
+ break;
532
+ }
533
+ };
534
+
535
+ /**
536
+ * @function 暂停拉指定的流
537
+ * @param streamId:String 被拉取的流的 id,必选
538
+ * @param recovery:Boolean 是否回收播放器, 可选
539
+ * @return Promise | void
540
+ */
541
+ export const stopPullFlow = (streamId, recovery) => {
542
+ switch (window.zbztAVSDK_init_sdk_type) {
543
+ case RTC:
544
+ // return rtcsdk.stop(streamId, recovery);
545
+ case ZEGO:
546
+ return zegosdk.stopPlayStream(streamId, recovery);
547
+ case TALRTC:
548
+ case NERTC:
549
+ case VOLCRTC:
550
+ return talrtcsdk.stopPlay(streamId, recovery);
551
+ case TRTC:
552
+ // return trtcsdk.stopPlay(streamId);
553
+ default:
554
+ break;
555
+ }
556
+ };
557
+
558
+ /**
559
+ * @function 暂停拉所有的流
560
+ * @return Promise | void
561
+ */
562
+ export const stopAllPullFlow = (streamId, recovery) => {
563
+ switch (window.zbztAVSDK_init_sdk_type) {
564
+ case RTC:
565
+ // return rtcsdk.stopAllPullFlow(streamId, recovery);
566
+ case ZEGO:
567
+ return zegosdk.stopAllPlayStream(streamId, recovery);
568
+ case TALRTC:
569
+ case NERTC:
570
+ case VOLCRTC:
571
+ return talrtcsdk.stopPlayAll();
572
+ case TRTC:
573
+ // return trtcsdk.stopPlayAll();
574
+ default:
575
+ break;
576
+ }
577
+ };
578
+
579
+ /**
580
+ * @function 销毁拉指定的流
581
+ * @param streamId:String 被拉取的流的 id,必选
582
+ * @return Promise | void
583
+ */
584
+ export const playDestroy = (streamId) => {
585
+ switch (window.zbztAVSDK_init_sdk_type) {
586
+ case RTC:
587
+ // return rtcsdk.playDestroy(streamId);
588
+ case ZEGO:
589
+ return zegosdk.stopPlayStream(streamId, true);
590
+ case TALRTC:
591
+ case NERTC:
592
+ case VOLCRTC:
593
+ return talrtcsdk.stopPlay(streamId);
594
+ case TRTC:
595
+ // return trtcsdk.stopPlay(streamId);
596
+ default:
597
+ break;
598
+ }
599
+ };
600
+
601
+ /**
602
+ * @function 切换播放流
603
+ * @param streamId:String 需要停止流的 id,必选
604
+ * @param toStreamId:String 被拉取的流的 id,必选
605
+ * @param toDomId:String <video> 标签的 id,可选
606
+ * @return Promise | void
607
+ */
608
+ export const changePullFlow = (args) => {
609
+ switch (window.zbztAVSDK_init_sdk_type) {
610
+ case RTC:
611
+ // return rtcsdk.changePullFlow(args.streamId, args.toStreamId, args.toDomId);
612
+ case ZEGO:
613
+ return zegosdk.changePullFlow(args.streamId, args.toStreamId, args.toDomId);
614
+ case TALRTC:
615
+ case NERTC:
616
+ case VOLCRTC:
617
+ return talrtcsdk.changePullFlow(args.streamId, args.toStreamId, args.toDomId);
618
+ case TRTC:
619
+ default:
620
+ break;
621
+ }
622
+ };
623
+
624
+ /**
625
+ * @function 获取本地扬声器列表
626
+ * @return Promise | void
627
+ */
628
+ export const getSpeakerDeviceList = async () => {
629
+ switch (window.zbztAVSDK_init_sdk_type) {
630
+ case RTC:
631
+ // return await rtcsdk.getSpeakerDevice();
632
+ case ZEGO:
633
+ return zegosdk.getSpeakerDeviceList();
634
+ case TALRTC:
635
+ case NERTC:
636
+ case VOLCRTC:
637
+ return talrtcsdk.getSpeakerDeviceList();
638
+ case TRTC:
639
+ // return await trtcsdk.getSpeakerDeviceListTrtc();
640
+ default:
641
+ return defaultsdk.getSpeakerDeviceList();
642
+ }
643
+ };
644
+
645
+ /**
646
+ * @function 指定扬声器
647
+ * @param deviceId:String 扬声器设备 id,必选
648
+ * @return Promise | void
649
+ */
650
+ export const setSpeakerDevice = async (deviceId, operationType) => {
651
+ switch (window.zbztAVSDK_init_sdk_type) {
652
+ case RTC:
653
+ // return await rtcsdk.setSpeakerDevice({speakId:deviceId, operationType});
654
+ case ZEGO:
655
+ return zegosdk.setSpeakerDevice({deviceId, operationType});
656
+ case TALRTC:
657
+ case NERTC:
658
+ case VOLCRTC:
659
+ return talrtcsdk.setSpeakerDevice({ deviceId });
660
+ case TRTC:
661
+ // return await trtcsdk.setSpeakerDevice({deviceId});
662
+ default:
663
+ return defaultsdk.setSpeakerDevice({ deviceId });
664
+ }
665
+ };
666
+
667
+ export const getSpeakerDevice = async () => {
668
+ switch (window.zbztAVSDK_init_sdk_type) {
669
+ case ZEGO:
670
+ return zegosdk.getCurrentSpeakerDevice();
671
+ case TALRTC:
672
+ case NERTC:
673
+ case VOLCRTC:
674
+ return talrtcsdk.getCurrentSpeakerDevice();
675
+ default:
676
+ return null;
677
+ }
678
+ };
679
+ /**
680
+ * @function 获取扬声器音量
681
+ * @return Promise | void
682
+ */
683
+ export const getSpeakerVolume = async () => {
684
+ switch (window.zbztAVSDK_init_sdk_type) {
685
+ case RTC:
686
+ // return JSON.parse((await rtcsdk.getSpeakerVolume()).msg).volume;
687
+ case ZEGO:
688
+ return JSON.parse((await zegosdk.getSpeakerDeviceVolume()).msg).ret;
689
+ case TALRTC:
690
+ case NERTC:
691
+ case VOLCRTC:
692
+ return await talrtcsdk.getCurrentSpeakerVolume();
693
+ case TRTC:
694
+ // return JSON.parse((await trtcsdk.getCurrentSpeakerVolume()).msg).speakerVolume;
695
+ default:
696
+ break;
697
+ }
698
+ };
699
+
700
+ /**
701
+ * @function 设置扬声器音量
702
+ * @param volume:Number 扬声器音量,必选,范围 [0, 100]
703
+ * @return Promise | void
704
+ */
705
+ export const setSpeakerVolume = (volume) => {
706
+ switch (window.zbztAVSDK_init_sdk_type) {
707
+ case RTC:
708
+ // return rtcsdk.setSpeakerVolume(volume);
709
+ case ZEGO:
710
+ return zegosdk.setSpeakerDeviceVolume(volume);
711
+ case TALRTC:
712
+ case NERTC:
713
+ case VOLCRTC:
714
+ return talrtcsdk.setCurrentSpeakerVolume(volume);
715
+ case TRTC:
716
+ // return trtcsdk.setCurrentSpeakerVolume(volume);
717
+ default:
718
+ break;
719
+ }
720
+ };
721
+
722
+ /**
723
+ * @function 控制扬声器是否静音
724
+ * @param mute:Boolean 是否静音,必选
725
+ * @return Promise | void
726
+ */
727
+ export const setSpeakerMute = (mute) => {
728
+ switch (window.zbztAVSDK_init_sdk_type) {
729
+ case RTC:
730
+ // return rtcsdk.setSpeakerMute(mute);
731
+ case ZEGO:
732
+ return zegosdk.setSpeakerDeviceMute(mute);
733
+ case TALRTC:
734
+ case NERTC:
735
+ case VOLCRTC:
736
+ return talrtcsdk.setSpeakerDeviceMute(mute);
737
+ case TRTC:
738
+ default:
739
+ break;
740
+ }
741
+ };
742
+
743
+ /**
744
+ * @function 获取 App 应用音量
745
+ * @return Promise | void
746
+ */
747
+ export const getAppVolume = () => {
748
+ switch (window.zbztAVSDK_init_sdk_type) {
749
+ case RTC:
750
+ // return rtcsdk.getCurrentAppSessionVolume();
751
+ case ZEGO:
752
+ return zegosdk.getSpeakerSimpleVolume();
753
+ case TALRTC:
754
+ case NERTC:
755
+ case VOLCRTC:
756
+ return talrtcsdk.getSpeakerSimpleVolume();
757
+ case TRTC:
758
+ default:
759
+ break;
760
+ }
761
+ };
762
+
763
+ /**
764
+ * @function 设置 App 应用音量
765
+ * @param volume:Number App 音量,必选,范围 [0, 100]
766
+ * @return Promise | void
767
+ */
768
+ export const setAppVolume = (volume) => {
769
+ switch (window.zbztAVSDK_init_sdk_type) {
770
+ case RTC:
771
+ // return rtcsdk.setCurrentAppSessionVolume(volume);
772
+ case ZEGO:
773
+ return zegosdk.setSpeakerSimpleVolume(volume);
774
+ // 由于 Agora 的 App 音量取值范围是 [0, 255],所以需要做比例兼容
775
+ // volume = Math.floor((volume / 100) * 255);
776
+ case TALRTC:
777
+ case NERTC:
778
+ case VOLCRTC:
779
+ return talrtcsdk.setSpeakerSimpleVolume(volume);
780
+ case TRTC:
781
+ default:
782
+ break;
783
+ }
784
+ };
785
+
786
+ /**
787
+ * @function 设置 App 静音
788
+ * @param mute:Boolean 是否静音,必选
789
+ * @return Promise | void
790
+ */
791
+ export const setAppMute = (mute) => {
792
+ switch (window.zbztAVSDK_init_sdk_type) {
793
+ case RTC:
794
+ // return rtcsdk.setApplicationMute(mute);
795
+ case ZEGO:
796
+ return zegosdk.setSpeakerSimpleMute(mute);
797
+ case TALRTC:
798
+ case NERTC:
799
+ case VOLCRTC:
800
+ return talrtcsdk.setSpeakerSimpleMute(mute);
801
+ case TRTC:
802
+ default:
803
+ break;
804
+ }
805
+ };
806
+
807
+ /**
808
+ * @function 获取麦克风列表
809
+ * @return Promise | void
810
+ */
811
+ export const getMicrophoneDeviceList = async () => {
812
+ switch (window.zbztAVSDK_init_sdk_type) {
813
+ case RTC:
814
+ // return await rtcsdk.getMicrophoneDevice();
815
+ case ZEGO:
816
+ return zegosdk.getMicrophoneDeviceList();
817
+ case TALRTC:
818
+ case NERTC:
819
+ case VOLCRTC:
820
+ return talrtcsdk.getMicrophoneDeviceList();
821
+ case TRTC:
822
+ // return await trtcsdk.getMicrophoneDeviceListTrtc();
823
+ default:
824
+ return defaultsdk.getMicrophoneDeviceList();
825
+ }
826
+ };
827
+
828
+ /**
829
+ * @function 指定麦克风
830
+ * @param deviceId:String 麦克风 id,必须
831
+ * @return Promise | void
832
+ */
833
+ export const setMicrophoneDevice = async (deviceId, operationType) => {
834
+ switch (window.zbztAVSDK_init_sdk_type) {
835
+ case RTC:
836
+ // return await rtcsdk.setMicrophoneDevice({deviceId, operationType});
837
+ case ZEGO:
838
+ return zegosdk.setMicrophoneDevice({deviceId, operationType});
839
+ case TALRTC:
840
+ case NERTC:
841
+ case VOLCRTC:
842
+ return talrtcsdk.setMicrophoneDevice({ deviceId, operationType });
843
+ case TRTC:
844
+ // return await trtcsdk.setMicrophoneDevice({deviceId});
845
+ default:
846
+ return defaultsdk.setMicrophoneDevice({ deviceId });
847
+ }
848
+ };
849
+
850
+ /**
851
+ * @function 开麦/禁麦
852
+ * @param operation:Boolean 操作类型,false -> 关闭,true -> 打开,必选
853
+ * @return Promise | void
854
+ */
855
+ export const openOrCloseMicrophone = async (operation) => {
856
+ switch (window.zbztAVSDK_init_sdk_type) {
857
+ case RTC:
858
+ // return await rtcsdk.setRealTimeAudioMute(!operation);
859
+ case ZEGO:
860
+ return zegosdk.enableMic(operation);
861
+ case TALRTC:
862
+ case NERTC:
863
+ case VOLCRTC:
864
+ return talrtcsdk.openOrCloseMicrophone(operation);
865
+ case TRTC:
866
+ // return await trtcsdk.openOrCloseMicrophone(operation);
867
+ default:
868
+ return defaultsdk.openOrCloseMicrophone(operation);
869
+ }
870
+ };
871
+
872
+ /**
873
+ * @function 获取麦克风音量
874
+ * @return Promise | void
875
+ */
876
+ export const getMicrophoneVolume = () => {
877
+ switch (window.zbztAVSDK_init_sdk_type) {
878
+ case RTC:
879
+ // return rtcsdk.getMicrophoneVolume();
880
+ case ZEGO:
881
+ return zegosdk.getMicDeviceVolume();
882
+ case TALRTC:
883
+ case NERTC:
884
+ case VOLCRTC:
885
+ return talrtcsdk.getCurrentMicrophoneVolume();
886
+ case TRTC:
887
+ // return trtcsdk.getCurrentMicrophoneVolume();
888
+ default:
889
+ break;
890
+ }
891
+ };
892
+
893
+ /**
894
+ * @function 设置麦克风音量
895
+ * @param volume:Number App 音量,必选,范围 [0, 100]
896
+ * @param mute:Boolean 是否静音
897
+ * @return Promise | void
898
+ */
899
+ export const setMicrophoneVolume = (volume, mute) => {
900
+ switch (window.zbztAVSDK_init_sdk_type) {
901
+ case RTC:
902
+ // return rtcsdk.setMicrophoneVolume(volume, mute);
903
+ case ZEGO:
904
+ return zegosdk.setMicDeviceVolume(volume);
905
+ case TALRTC:
906
+ case NERTC:
907
+ case VOLCRTC:
908
+ return talrtcsdk.setCurrentMicrophoneVolume(volume);
909
+ case TRTC:
910
+ // return trtcsdk.setCurrentMicrophoneVolume(volume);
911
+ default:
912
+ break;
913
+ }
914
+ };
915
+
916
+ /**
917
+ * @function 控制麦克风是否静音
918
+ * @param mute:Boolean 是否静音,必选
919
+ * @return Promise | void
920
+ */
921
+ export const setMicrophoneMute = (mute) => {
922
+ switch (window.zbztAVSDK_init_sdk_type) {
923
+ case RTC:
924
+ // return rtcsdk.setRealTimeAudioMute(mute);
925
+ case ZEGO:
926
+ return zegosdk.setMicDeviceMute(mute);
927
+ case TALRTC:
928
+ case NERTC:
929
+ case VOLCRTC:
930
+ return talrtcsdk.muteLocalAudio(mute);
931
+ case TRTC:
932
+ default:
933
+ break;
934
+ }
935
+ };
936
+
937
+ /**
938
+ * @function 切换云控时退出房间、退出频道
939
+ * @return Promise | void
940
+ */
941
+ export const leaveRoomWithChangeSDK = () => {
942
+ switch (window.zbztAVSDK_init_sdk_type) {
943
+ case RTC:
944
+ // return rtcsdk.leaveRoom();
945
+ case ZEGO:
946
+ return zegosdk.leaveRoomWithChangeSDK();
947
+ case TALRTC:
948
+ case NERTC:
949
+ case VOLCRTC:
950
+ return talrtcsdk.leaveRoom();
951
+ case TRTC:
952
+ // return trtcsdk.leaveRoom();
953
+ default:
954
+ break;
955
+ }
956
+ };
957
+
958
+ /**
959
+ * @function 退出房间、退出频道
960
+ * @return Promise | void
961
+ */
962
+ export const leaveRoom = (type) => {
963
+ switch (window.zbztAVSDK_init_sdk_type) {
964
+ case RTC:
965
+ // return rtcsdk.leaveRoom();
966
+ case ZEGO:
967
+ return zegosdk.leaveRoom(type);
968
+ case TALRTC:
969
+ case NERTC:
970
+ case VOLCRTC:
971
+ return talrtcsdk.leaveRoom();
972
+ case TRTC:
973
+ // return trtcsdk.leaveRoom();
974
+ default:
975
+ break;
976
+ }
977
+ };
978
+
979
+ /**
980
+ * @function 反初始化
981
+ * @return Promise | void
982
+ */
983
+ export const deinit = () => {
984
+ window.zbztAVSDK_init_sdk_type=localStorage.getItem('zbztAVSDK_init_sdk_type');
985
+ switch (window.zbztAVSDK_init_sdk_type) {
986
+ case RTC:
987
+ // return rtcsdk.destroyEngine();
988
+ case ZEGO:
989
+ return zegosdk.destroyEngine();
990
+ case TALRTC:
991
+ case NERTC:
992
+ case VOLCRTC:
993
+ return talrtcsdk.destroyEngine();
994
+ default:
995
+ console.error('unknown zbztAVSDK_init_sdk_type:', zbztAVSDK_init_sdk_type);
996
+ break;
997
+ }
998
+ };
999
+
1000
+ //开启拉流音量监听
1001
+ export const startSoundLevelMonitor = () => {
1002
+ switch (window.zbztAVSDK_init_sdk_type) {
1003
+ case RTC:
1004
+ break;
1005
+ case ZEGO:
1006
+ return zegosdk.startSoundLevelMonitor();
1007
+ case TALRTC:
1008
+ case NERTC:
1009
+ case VOLCRTC:
1010
+ // TODO StartMicrophone 里面有调用 enableAudioVolumeIndication 但目前是注释掉的状态
1011
+ break;
1012
+ default:
1013
+ break;
1014
+ }
1015
+ };
1016
+
1017
+ /**
1018
+ * @function 转推,录课
1019
+ * @param type:String 动作类型,必选,'start' | 'stop' | 'pause' | 'resume'
1020
+ * @return Promise | void
1021
+ */
1022
+ export const turnPush = (type) => {
1023
+ switch (window.zbztAVSDK_init_sdk_type) {
1024
+ case RTC:
1025
+ // return rtcsdk.sendRecordingMsg({ cmd: type });
1026
+ case ZEGO:
1027
+ return zegosdk.singleRecord(type);
1028
+ case TALRTC:
1029
+ case NERTC:
1030
+ case VOLCRTC:
1031
+ return talrtcsdk.controlCdnStreaming(type);
1032
+ case TRTC:
1033
+ default:
1034
+ break;
1035
+ }
1036
+ };
1037
+
1038
+ /**
1039
+ * @function 听不听指定的用户的声音
1040
+ * @param streamId:String 被拉取的流的 id,必选
1041
+ * @param mute:Boolean 是否静音,必选,true -> 静音,false -> 不静音
1042
+ * @return Promise | void
1043
+ */
1044
+ export const setAudioMute = (streamId, mute) => {
1045
+ switch (window.zbztAVSDK_init_sdk_type) {
1046
+ case RTC:
1047
+ // return rtcsdk.setMute(streamId, mute);
1048
+ case ZEGO:
1049
+ return zegosdk.activateAudioPlayStream(streamId, !mute);
1050
+ case TALRTC:
1051
+ case NERTC:
1052
+ case VOLCRTC:
1053
+ return talrtcsdk.muteRemoteAudio(streamId, mute);
1054
+ case TRTC:
1055
+ // return trtcsdk.muteRemoteAudio(streamId, mute);
1056
+ default:
1057
+ break;
1058
+ }
1059
+ };
1060
+
1061
+ /**
1062
+ * @function 是否拉取音频流-是否关闭音频流--通过播放器id控制
1063
+ * @param operation:Boolean,必选,true关闭 | false不关闭
1064
+ * @param streamId:Number,必选, 播放器id
1065
+ * @return Promise | void
1066
+ */
1067
+ export const pullAudioFlow = (streamId, operation) => {
1068
+ switch (window.zbztAVSDK_init_sdk_type) {
1069
+ case RTC:
1070
+ // return rtcsdk.pullAudioFlow(playerId, operation, 'client', streamId);
1071
+ case ZEGO:
1072
+ return zegosdk.pullAudioFlow(streamId, operation);
1073
+ case TALRTC:
1074
+ case NERTC:
1075
+ case VOLCRTC:
1076
+ return talrtcsdk.pullAudioFlow(streamId, operation);
1077
+ case TRTC:
1078
+ // return trtcsdk.pullAudioFlow(playerId, operation, streamId);
1079
+ default:
1080
+ break;
1081
+ }
1082
+ };
1083
+
1084
+ /**
1085
+ * @function 获取设备状态
1086
+ * * @param { string } devicename //(设备名称,可为空)
1087
+ * * @param { number } devicetype //(设备类型,1摄像头,2麦克风),3扬声器(mac端没有)
1088
+ * @return: Promise
1089
+ */
1090
+ // export const getDeviceState = (devicename, devicetype) => {
1091
+ // switch (window.zbztAVSDK_init_sdk_type) {
1092
+ // case RTC:
1093
+ // // return rtcsdk.getDeviceState(devicename, devicetype);
1094
+ // case ZEGO:
1095
+ // return zegosdk.getDeviceState(devicename, devicetype);
1096
+ // default:
1097
+ // break;
1098
+ // }
1099
+ // };
1100
+
1101
+ /**
1102
+ * @function 看不看指定的用户的画面
1103
+ * @param streamId:String 被拉取的流的 id,必选
1104
+ * @param mute:Boolean 是否关闭画面,必选,true -> 关闭画面,false -> 不关闭画面
1105
+ * @return Promise | void
1106
+ */
1107
+ export const setVideoMute = (streamId, mute) => {
1108
+ switch (window.zbztAVSDK_init_sdk_type) {
1109
+ case RTC:
1110
+ // return rtcsdk.controlPullAudioOnly(streamId, mute);
1111
+ case ZEGO:
1112
+ return zegosdk.activateVideoPlayStream(streamId, !mute);
1113
+ case TALRTC:
1114
+ case NERTC:
1115
+ case VOLCRTC:
1116
+ return talrtcsdk.muteRemoteVideo(streamId, mute);
1117
+ case TRTC:
1118
+ // return trtcsdk.muteRemoteVideo(streamId, mute);
1119
+ default:
1120
+ break;
1121
+ }
1122
+ };
1123
+
1124
+ /**
1125
+ * @function 开启/关闭麦克风音量回调
1126
+ * @param open:Boolean true -> 开启,false -> 关闭,必选
1127
+ * @return void
1128
+ */
1129
+ export const openMicVolumeCb = (open) => {
1130
+ rtcsdk.openMicVolumeCb(open);
1131
+ zegosdk.openMicVolumeCb(open);
1132
+ };
1133
+
1134
+
1135
+ export const startMixtStream = (args) => {
1136
+ let params = {};
1137
+ switch (window.zbztAVSDK_init_sdk_type) {
1138
+ case RTC:
1139
+ const { config } = args;
1140
+ params = {
1141
+ sequence: args.sequence,
1142
+ outputStream: {
1143
+ pushType: args.pushType,
1144
+ rtmpUrls: config.szOutputStream,
1145
+ videoFps: config.nOutputFps,
1146
+ videoRate: config.nOutputBitrate,
1147
+ audioRate: config.nOutputAudioBitrate,
1148
+ videoWidth: config.nOutputWidth,
1149
+ videoHeight: config.nOutputHeight,
1150
+ audioFormat: config.nOutputAudioConfig,
1151
+ audioChannels: config.nChannels,
1152
+ backgroundColor: config.nOutputBackgroundColor,
1153
+ },
1154
+ inputStreams: [],
1155
+ };
1156
+ config.pInputStreamList.forEach(item => {
1157
+ params.inputStreams.push({
1158
+ confId: item.confId,
1159
+ streamId: item.szStreamID,
1160
+ top: item.layout.top,
1161
+ right: item.layout.right,
1162
+ bottom: item.layout.bottom,
1163
+ left: item.layout.left,
1164
+ mediaControl: item.nContentControl
1165
+ });
1166
+ });
1167
+ console.log(params);
1168
+ rtcsdk.startRoomMixRecord(params);
1169
+ break;
1170
+ case ZEGO:
1171
+ params = Object.assign(args, {});
1172
+ delete params.pushType;
1173
+ delete params.sequence;
1174
+ params.config.pInputStreamList = params.config.pInputStreamList.map(item => {
1175
+ const tempObj = Object.assign(item, {});
1176
+ delete tempObj.confId;
1177
+ return tempObj;
1178
+ });
1179
+ zegosdk.mixStream('start', params);
1180
+ break;
1181
+ default:
1182
+ break;
1183
+ }
1184
+ };
1185
+
1186
+ export const stopMixtStream = (args) => {
1187
+ switch (window.zbztAVSDK_init_sdk_type) {
1188
+ case RTC:
1189
+ rtcsdk.stopRoomMixRecord({ sequence: args.sequence });
1190
+ break;
1191
+ case ZEGO:
1192
+ const params = Object.assign(args, {});
1193
+ delete params.sequence;
1194
+ zegosdk.mixStream('stop', params);
1195
+ break;
1196
+ default:
1197
+ break;
1198
+ }
1199
+ };
1200
+
1201
+ /**
1202
+ * @function 单路录制
1203
+ * @param args:Object 必选
1204
+ * {
1205
+ * type:String 开始/结束, 对应取值start/stop,必选
1206
+ * groupId: String 分组id,可选,默认为 sdk初始化分组id
1207
+ * streamId: String 流id,必选
1208
+ * seqNum: String
1209
+ * }
1210
+ * @return void
1211
+ */
1212
+ export const singleRecord = async (args) => {
1213
+ const { type, groupId, streamId, userId, seqNum } = args;
1214
+ const sid = `xrs51_${groupId}_${userId}`;
1215
+ switch (window.zbztAVSDK_init_sdk_type) {
1216
+ case RTC:
1217
+ const { institutionId } = window.zbzt_sdk_init_params;
1218
+ const rtc = window.zbztAVSDK_init_params.rtc;
1219
+ let rtmpAddr = `${rtc.recordUrl}/${sid}`;
1220
+ if (seqNum) {
1221
+ rtmpAddr += `?seqNum=${seqNum}`;
1222
+ }
1223
+ const rtcParams = {
1224
+ cmd: type,
1225
+ confId: util.getConfId(institutionId, groupId),
1226
+ liveId: streamId,
1227
+ rtmpAddr
1228
+ };
1229
+ // return rtcsdk.sendRecordingMsg(rtcParams);
1230
+ case ZEGO:
1231
+ const zego = window.zbztAVSDK_init_params.zego;
1232
+ let strTarget = `${zego.recordUrl}/${sid}`;
1233
+ if (seqNum) {
1234
+ strTarget += `?seqNum=${seqNum}`;
1235
+ }
1236
+ return zegosdk.singleRecord(type, strTarget, streamId);
1237
+ break;
1238
+ default:
1239
+ break;
1240
+ }
1241
+ };
1242
+
1243
+ /**
1244
+ * @function 单路录制
1245
+ * @param args:Object 必选
1246
+ * {
1247
+ * type:String 开始/结束, 对应取值start/stop,必选
1248
+ * groupId: String 分组id,可选,默认为 sdk初始化分组id
1249
+ * streamId: String 流id,必选
1250
+ * }
1251
+ * @return void
1252
+ */
1253
+ export const recordPublishTarget = (args) => {
1254
+ const { type, groupId, streamId, userId } = args;
1255
+ const sid = `xrs51_${groupId}_${userId}`;
1256
+ switch (window.zbztAVSDK_init_sdk_type) {
1257
+ case RTC:
1258
+ const { institutionId } = window.zbzt_sdk_init_params;
1259
+ const rtc = window.zbztAVSDK_init_params.rtc;
1260
+ const rtcParams = {
1261
+ cmd: type,
1262
+ confId: util.getConfId(institutionId, groupId),
1263
+ liveId: streamId,
1264
+ rtmpAddr: `rtmp://globalpush.aliyun.zhiboyun.eaydu.com/live_haibian/${streamId}`
1265
+ };
1266
+ // return rtcsdk.sendRecordingMsg(rtcParams);
1267
+ case ZEGO:
1268
+ const zego = window.zbztAVSDK_init_params.zego;
1269
+ const strTarget = `rtmp://globalpush.aliyun.zhiboyun.eaydu.com/live_haibian/${streamId}`;
1270
+ zegosdk.singleRecord(type, strTarget, streamId);
1271
+ break;
1272
+ default:
1273
+ break;
1274
+ }
1275
+ };
1276
+
1277
+ export const getSnapshootId = (streamId) => {
1278
+ switch (window.zbztAVSDK_init_sdk_type) {
1279
+ case RTC:
1280
+ if (rtcsdk.hasStream(streamId)) {
1281
+ return streamId;
1282
+ } else {
1283
+ defaultApi.writeLog(`zbztavsdk getSnapshootId , no streamId: ${streamId} in rtc room`);
1284
+ }
1285
+ break;
1286
+ case ZEGO:
1287
+ if (zegosdk.hasStream(streamId)) {
1288
+ return zegosdk.getChannelIndex(streamId);
1289
+ } else {
1290
+ defaultApi.writeLog(`zbztavsdk getSnapshootId , no streamId: ${streamId} in zego room`);
1291
+ }
1292
+ break;
1293
+ case TALRTC:
1294
+ case NERTC:
1295
+ case VOLCRTC:
1296
+ if (talrtcsdk.hasStream(streamId)) {
1297
+ return talrtcsdk.getChannelIndex(streamId);
1298
+ } else {
1299
+ defaultApi.writeLog(`talrtcsdk getSnapshootId , no streamId: ${streamId} in talrtc room`);
1300
+ }
1301
+ default:
1302
+ break;
1303
+ }
1304
+ };
1305
+
1306
+ export const getAllChannelIndex = () => {
1307
+ switch (window.zbztAVSDK_init_sdk_type) {
1308
+ case RTC:
1309
+ break;
1310
+ case ZEGO:
1311
+ return zegosdk.getAllChannelIndex();
1312
+ case TRTC:
1313
+ // return trtcsdk.getAllChannelIndex();
1314
+ default:
1315
+ break;
1316
+ }
1317
+ };
1318
+
1319
+ /**
1320
+ * @function 设置摄像头参数(采集分辨率)
1321
+ * @param width:Number 分辨率宽,必选,推荐 1280
1322
+ * @param height:Number 分辨率高,必选,推荐 720
1323
+ * @param frameRate:Number 帧率,必选,推荐 15
1324
+ * @return Promise | void
1325
+ */
1326
+ export const setCameraParams = (args) => {
1327
+ const { width, height, frameRate } = args;
1328
+ switch (window.zbztAVSDK_init_sdk_type) {
1329
+ case RTC:
1330
+ // return rtcsdk.setCameraParam(width, height, frameRate);
1331
+ case ZEGO:
1332
+ return zegosdk.setCameraParam(width, height);
1333
+ case TALRTC:
1334
+ case NERTC:
1335
+ case VOLCRTC:
1336
+ return talrtcsdk.setCameraCaptureResolution(width, height);
1337
+ case TRTC:
1338
+ // return trtcsdk.setCameraCaptureResolution(width, height);
1339
+ default:
1340
+ break;
1341
+ }
1342
+ };
1343
+
1344
+ /**
1345
+ * @function 设置编码分辨率
1346
+ * @param width:Number 分辨率宽,必选,推荐 1280
1347
+ * @param height:Number 分辨率高,必选,推荐 720
1348
+ * @param frameRate:Number 帧率,必选,推荐 15
1349
+ * @return Promise | void
1350
+ */
1351
+ export const setEncodeParams = (args) => {
1352
+ const { width, height, frameRate } = args;
1353
+ switch (window.zbztAVSDK_init_sdk_type) {
1354
+ case RTC:
1355
+ // return rtcsdk.setEncodeParam(width, height, frameRate);
1356
+ case ZEGO:
1357
+ return zegosdk.setVideoEncodeResolution(width, height);
1358
+ case TALRTC:
1359
+ case NERTC:
1360
+ case VOLCRTC:
1361
+ return talrtcsdk.setCameraEncodeFps(frameRate) && talrtcsdk.setCameraEncodeResolution(width, height);
1362
+ case TRTC:
1363
+ return zegosdk.setVideoEncodeResolution(width, height);
1364
+ default:
1365
+ break;
1366
+ }
1367
+ };
1368
+
1369
+ /**
1370
+ * @function 设置码率
1371
+ * @param bitrate:Number 码率,必选,推荐 15
1372
+ * @return Promise | void
1373
+ */
1374
+ export const setBitRate = (bitrate) => {
1375
+ switch (window.zbztAVSDK_init_sdk_type) {
1376
+ case RTC:
1377
+ // return rtcsdk.setBitRate(bitrate);
1378
+ case ZEGO:
1379
+ return zegosdk.setVideoBitrate(bitrate);
1380
+ case TALRTC:
1381
+ case NERTC:
1382
+ case VOLCRTC:
1383
+ return talrtcsdk.setCameraEncodeBitrate(bitrate);
1384
+ case TRTC:
1385
+ // return trtcsdk.setCameraEncodeBiarate(bitrate);
1386
+ default:
1387
+ break;
1388
+ }
1389
+ };
1390
+
1391
+ /**
1392
+ * @function 本地视频录制
1393
+ * @param type 开始/结束
1394
+ * @param path 录制路径
1395
+ * @return Promise | void
1396
+ */
1397
+ export const localRecordVideo = (type, path) => {
1398
+ switch (window.zbztAVSDK_init_sdk_type) {
1399
+ case RTC:
1400
+ rtcsdk.localRecordVideo(type, path);
1401
+ break;
1402
+ case ZEGO:
1403
+ zegosdk.localRecordVideo(type, path);
1404
+ break;
1405
+ case TALRTC:
1406
+ case NERTC:
1407
+ case VOLCRTC:
1408
+ talrtcsdk.localRecordVideo(type, path);
1409
+ break;
1410
+ default:
1411
+ break;
1412
+ }
1413
+ };
1414
+
1415
+ /**
1416
+ * @function 本地音频录制
1417
+ * @param type 开始/结束
1418
+ * @param path 录制路径
1419
+ * @return Promise | void
1420
+ */
1421
+ export const localRecordAudio = (type, path) => {
1422
+ switch (window.zbztAVSDK_init_sdk_type) {
1423
+ case RTC:
1424
+ rtcsdk.localRecordAudio(type, path);
1425
+ break;
1426
+ case ZEGO:
1427
+ zegosdk.localRecordAudio(type, path);
1428
+ break;
1429
+ case TALRTC:
1430
+ case NERTC:
1431
+ case VOLCRTC:
1432
+ // FIXME METHOD_NOT_IMPLEMENT;
1433
+ break;
1434
+ default:
1435
+ break;
1436
+ }
1437
+ };
1438
+
1439
+ /**
1440
+ * @function 本地录制
1441
+ * @param {string | undefined} fileName
1442
+ * @param {number} fileType 1:flv 2:mp4
1443
+ * @param {number} idx 0:主流 1:辅流 2:RTMP流
1444
+ * @returns {Promise<any>}
1445
+ */
1446
+ export const startRecord = (fileName, fileType, idx) => {
1447
+ // RTMP流只能用zego sdk录制
1448
+ if (idx === 2) {
1449
+ defaultApi.writeLog(`zbztAVSDK startRecord idx: ${idx}, use zego sdk`);
1450
+ return zegosdk.startRecord(fileName, fileType, idx);
1451
+ }
1452
+
1453
+ switch (window.zbztAVSDK_init_sdk_type) {
1454
+ case RTC:
1455
+ // rtcsdk.localRecordAudio(type, path); // Deprecated
1456
+ break;
1457
+ case ZEGO:
1458
+ return zegosdk.startRecord(fileName, fileType, idx);
1459
+ case TALRTC:
1460
+ case NERTC:
1461
+ case VOLCRTC:
1462
+ return talrtcsdk.startRecord(fileName, fileType, idx);
1463
+ default:
1464
+ break;
1465
+ }
1466
+ };
1467
+
1468
+ /**
1469
+ * 结束音视频录制 channelIndex(number) 录制通道 0主推流通道/ 1辅助推流通道/ 2辅助推流通道
1470
+ * @param {number} idx 0 | 1 | 2
1471
+ * @returns
1472
+ */
1473
+ export const stopRecord = (idx) => {
1474
+ // RTMP流只能用zego sdk录制
1475
+ if (idx === 2) {
1476
+ defaultApi.writeLog(`zbztAVSDK startRecord idx: ${idx}, use zego sdk`);
1477
+ return zegosdk.stopRecord(idx);
1478
+ }
1479
+ switch (window.zbztAVSDK_init_sdk_type) {
1480
+ case RTC:
1481
+ // rtcsdk.localRecordAudio(type, path); // Deprecated
1482
+ break;
1483
+ case ZEGO:
1484
+ return zegosdk.stopRecord(idx);
1485
+ case TALRTC:
1486
+ case NERTC:
1487
+ case VOLCRTC:
1488
+ return talrtcsdk.stopRecord(idx);
1489
+ default:
1490
+ break;
1491
+ }
1492
+ };
1493
+ /**
1494
+ * 开启外部音频采集(通知sdk)推流前,调用此接口,publish_channel,number类型,传2代表第三路流
1495
+ * @param {number} idx 0 | 1 | 2
1496
+ * @returns
1497
+ */
1498
+ export const startCapture = (idx) => {
1499
+ if (idx === 2) {
1500
+ defaultApi.writeLog(`zbztAVSDK startCapture idx: ${idx}, use zego sdk`);
1501
+ return zegosdk.startCapture(idx);
1502
+ }
1503
+ switch (window.zbztAVSDK_init_sdk_type) {
1504
+ case RTC:
1505
+ break;
1506
+ case ZEGO:
1507
+ return zegosdk.startCapture(idx);
1508
+ case TALRTC:
1509
+ case NERTC:
1510
+ case VOLCRTC:
1511
+ return talrtcsdk.startCapture(idx);
1512
+ default:
1513
+ break;
1514
+ }
1515
+ };
1516
+
1517
+ /**
1518
+ * 结束外部音频采集(通知sdk)
1519
+ * @param {number} idx 0 | 1 | 2
1520
+ * @returns
1521
+ */
1522
+ export const stopCapture = (idx) => {
1523
+ if (idx === 2) {
1524
+ defaultApi.writeLog(`zbztAVSDK stopCapture idx: ${idx}, use zego sdk`);
1525
+ return zegosdk.stopCapture(idx);
1526
+ }
1527
+ switch (window.zbztAVSDK_init_sdk_type) {
1528
+ case RTC:
1529
+ break;
1530
+ case ZEGO:
1531
+ return zegosdk.stopCapture(idx);
1532
+ case TALRTC:
1533
+ case NERTC:
1534
+ case VOLCRTC:
1535
+ return talrtcsdk.stopCapture(idx);
1536
+ default:
1537
+ break;
1538
+ }
1539
+ };
1540
+
1541
+ /**
1542
+ * @function 设置采集扬声器声音
1543
+ * @param { string } deviceId 设备id
1544
+ * @param {boolean} speaker 采集扬声器声音=true/不采集=false
1545
+ * @return void
1546
+ */
1547
+ export const setSpeakerCapture = (deviceId,speaker) => {
1548
+ switch (window.zbztAVSDK_init_sdk_type) {
1549
+ case RTC:
1550
+ // return rtcsdk.setAudioSpeakerCapture(deviceId,speaker);
1551
+ case ZEGO:
1552
+ return zegosdk.setAudioSpeakerCapture(speaker);
1553
+ case TALRTC:
1554
+ case NERTC:
1555
+ case VOLCRTC:
1556
+ return talrtcsdk.enableAudioSpeakerCapture(speaker);
1557
+ case TRTC:
1558
+ // return trtcsdk.setAudioSpeakerCapture(speaker);
1559
+ default:
1560
+ break;
1561
+ }
1562
+ };
1563
+
1564
+ /**
1565
+ * @function 设置混流和背景色
1566
+ * @param { boolean } type true=开启/false=关闭
1567
+ * @param { number } id 需要混合的采集器id
1568
+ * @param { object } rgb
1569
+ * @param { number } rgb.r
1570
+ * @param { number } rgb.g
1571
+ * @param { number } rgb.b
1572
+ * @return: Promise
1573
+ */
1574
+ export const setMixStream = (type, id, rgb) => {
1575
+ switch (window.zbztAVSDK_init_sdk_type) {
1576
+ case RTC:
1577
+ // return rtcsdk.setMixStream(type, id, rgb);
1578
+ case ZEGO:
1579
+ break;
1580
+ case TALRTC:
1581
+ case NERTC:
1582
+ case VOLCRTC:
1583
+ // FIXME METHOD_NOT_IMPLEMENT;
1584
+ break;
1585
+ default:
1586
+ break;
1587
+ };
1588
+ };
1589
+ /**
1590
+ * @function 采集器截图
1591
+ * @param { string } fileName 文件名,需要后缀名。例如:333.jpg
1592
+ * @return: Promise
1593
+ */
1594
+ export const captureSnapShot = (fileName) => {
1595
+ switch (window.zbztAVSDK_init_sdk_type) {
1596
+ case RTC:
1597
+ // return rtcsdk.captureSnapShot(fileName);
1598
+ case ZEGO:
1599
+ break;
1600
+ case TALRTC:
1601
+ case NERTC:
1602
+ case VOLCRTC:
1603
+ // FIXME METHOD_NOT_IMPLEMENT;
1604
+ break;
1605
+ default:
1606
+ break;
1607
+ }
1608
+ };
1609
+ /**
1610
+ * @function 播放器截图
1611
+ * @param { string } fileName 文件名,需要后缀名。例如:333.jpg
1612
+ * @return: Promise
1613
+ */
1614
+ export const playerSnapShot = (streamId, fileName) => {
1615
+ switch (window.zbztAVSDK_init_sdk_type) {
1616
+ case RTC:
1617
+ // return rtcsdk.playerSnapShot(id, fileName);
1618
+ case ZEGO:
1619
+ return zegosdk.playerSnapShot(streamId, fileName);
1620
+ case TALRTC:
1621
+ case NERTC:
1622
+ case VOLCRTC:
1623
+ return talrtcsdk.playerSnapShot(streamId, fileName);
1624
+ default:
1625
+ break;
1626
+ }
1627
+ };
1628
+
1629
+ /**
1630
+ * @function 设置打开/关闭摄像头
1631
+ * @param { boolean } type true=开启/false=关闭
1632
+ * @return: Promise
1633
+ */
1634
+ export const openOrCloseCameraAndMicrophone = (type) => {
1635
+ switch (window.zbztAVSDK_init_sdk_type) {
1636
+ case RTC:
1637
+ // return rtcsdk.openOrCloseCameraAndMicrophone(type);
1638
+ case ZEGO:
1639
+ break;
1640
+ case TALRTC:
1641
+ case NERTC:
1642
+ case VOLCRTC:
1643
+ // FIXME METHOD_NOT_IMPLEMENT;
1644
+ break;
1645
+ default:
1646
+ break;
1647
+ }
1648
+ };
1649
+
1650
+ /**
1651
+ * @function 加载采集插件的输入数据 //调用后,zego 可以向采集插件传送摄像头数据,用于拼接
1652
+ * @return: Promise
1653
+ */
1654
+ export const loadCollectionInputEntry = () => {
1655
+ switch (window.zbztAVSDK_init_sdk_type) {
1656
+ case RTC:
1657
+ break;
1658
+ case ZEGO:
1659
+ return zegosdk.loadCollectionInputEntry();
1660
+ case TALRTC:
1661
+ case NERTC:
1662
+ case VOLCRTC:
1663
+ // FIXME METHOD_NOT_IMPLEMENT;
1664
+ break;
1665
+ default:
1666
+ break;
1667
+ }
1668
+ };
1669
+
1670
+ /**
1671
+ * @function 加载采集插件的输出数据 //调用后,采集插件向zego传送数据
1672
+ * @return: Promise
1673
+ */
1674
+ export const loadCollectionOutputEntry = () => {
1675
+ switch (window.zbztAVSDK_init_sdk_type) {
1676
+ case RTC:
1677
+ break;
1678
+ case ZEGO:
1679
+ return zegosdk.loadCollectionOutputEntry();
1680
+ case TALRTC:
1681
+ case NERTC:
1682
+ case VOLCRTC:
1683
+ // FIXME METHOD_NOT_IMPLEMENT;
1684
+ break;
1685
+ default:
1686
+ break;
1687
+ }
1688
+ };
1689
+
1690
+ export const mixedstuVideo = (stuArray) => {
1691
+ switch (window.zbztAVSDK_init_sdk_type) {
1692
+ case RTC:
1693
+ // return rtcsdk.rtcLoadCollectionEntry2(stuArray);
1694
+ case ZEGO:
1695
+ return zegosdk.loadCollectionInputEntry2(stuArray);
1696
+ case TALRTC:
1697
+ case NERTC:
1698
+ case VOLCRTC:
1699
+ return talrtcsdk.loadCollectionInputEntry2(stuArray);
1700
+ default:
1701
+ break;
1702
+ }
1703
+ };
1704
+
1705
+ /**
1706
+ * @function 加载采集插件的输出数据 //调用后,zego 可以向采集插件传送摄像头数据,用于拼接
1707
+ * @return: Promise
1708
+ */
1709
+ export const setCDNPublishTarget = (pRtmpUrl,idx) => {
1710
+ switch (window.zbztAVSDK_init_sdk_type) {
1711
+ case RTC:
1712
+ break;
1713
+ case ZEGO:
1714
+ // return rtcsdk.setCDNPublishTarget(pRtmpUrl,idx);
1715
+ case TALRTC:
1716
+ case NERTC:
1717
+ case VOLCRTC:
1718
+ return talrtcsdk.addPublishRtmpStreamUrl(pRtmpUrl);
1719
+ default:
1720
+ break;
1721
+ }
1722
+ };
1723
+
1724
+
1725
+ /**
1726
+ * @function 设置预览镜像状态
1727
+ * @param { boolean } type true=开启 false=关闭
1728
+ * @return: Promise
1729
+ */
1730
+ export const setMirrorStatus = (type) => {
1731
+ switch (window.zbztAVSDK_init_sdk_type) {
1732
+ case RTC:
1733
+ // return rtcsdk.setMirrorStatus(type);
1734
+ case ZEGO:
1735
+ return zegosdk.setMirrorStatus(type);
1736
+ case TALRTC:
1737
+ case NERTC:
1738
+ case VOLCRTC:
1739
+ return talrtcsdk.setMirrorStatus(type);
1740
+ default:
1741
+ break;
1742
+ }
1743
+ };
1744
+
1745
+ /**
1746
+ * @function 设置拉流镜像状态
1747
+ * @param { boolean } type true=开启 false=关闭
1748
+ * @return: Promise
1749
+ */
1750
+ export const setPlayViewMirror = (type, id) => {
1751
+ switch (window.zbztAVSDK_init_sdk_type) {
1752
+ case RTC:
1753
+ // return rtcsdk.setRTCPlayViewMirror(type, id);
1754
+ case ZEGO:
1755
+ return zegosdk.setPlayViewMirror(type);
1756
+ case TALRTC:
1757
+ case NERTC:
1758
+ case VOLCRTC:
1759
+ return talrtcsdk.setPlayViewMirror(type, id);
1760
+ default:
1761
+ break;
1762
+ }
1763
+ };
1764
+
1765
+ /**
1766
+ * @function 设置推流镜像状态
1767
+ * * @param { boolean } id 采集器Id
1768
+ * @param { boolean } mode 1=开启 0=关闭
1769
+ * @return: Promise
1770
+ */
1771
+ export const setPushViewMirror = (mode) => {
1772
+ switch (window.zbztAVSDK_init_sdk_type) {
1773
+ case RTC:
1774
+ // return rtcsdk.setMirrorMode(mode);
1775
+ case ZEGO:
1776
+ return zegosdk.setVideoMirrorMode(mode);
1777
+ case TALRTC:
1778
+ case NERTC:
1779
+ case VOLCRTC:
1780
+ return talrtcsdk.setMirrorStatus(mode);
1781
+ default:
1782
+ break;
1783
+ }
1784
+ };
1785
+
1786
+ /**
1787
+ * @function 开启美颜
1788
+ * @param { boolean } type true=开启 false=关闭
1789
+ * @return: Promise
1790
+ */
1791
+ export const startSenseMe = () => {
1792
+ switch (window.zbztAVSDK_init_sdk_type) {
1793
+ case RTC:
1794
+ // return rtcsdk.startSenseMe();
1795
+ case ZEGO:
1796
+ return zegosdk.startSenseMe();
1797
+ case TALRTC:
1798
+ case NERTC:
1799
+ case VOLCRTC:
1800
+ // FIXME METHOD_NOT_IMPLEMENT;
1801
+ break;
1802
+ default:
1803
+ break;
1804
+ }
1805
+ };
1806
+
1807
+ /**
1808
+ * @function 设置美颜参数
1809
+ * @param { boolean } type true=开启 false=关闭
1810
+ * @return: Promise
1811
+ */
1812
+ export const setBeautifyParam = (type, value) => {
1813
+ switch (window.zbztAVSDK_init_sdk_type) {
1814
+ case RTC:
1815
+ // return rtcsdk.setBeautifyParam(type, value);
1816
+ case ZEGO:
1817
+ return zegosdk.setBeautifyParam(type, value);
1818
+ case TALRTC:
1819
+ case NERTC:
1820
+ case VOLCRTC:
1821
+ // FIXME METHOD_NOT_IMPLEMENT;
1822
+ break;
1823
+ default:
1824
+ break;
1825
+ }
1826
+ };
1827
+
1828
+ /**
1829
+ * @function 关闭美颜
1830
+ * @param { boolean } type true=开启 false=关闭
1831
+ * @return: Promise
1832
+ */
1833
+ export const endSenseMe = () => {
1834
+ switch (window.zbztAVSDK_init_sdk_type) {
1835
+ case RTC:
1836
+ // return rtcsdk.endSenseMe();
1837
+ case ZEGO:
1838
+ return zegosdk.endSenseMe();
1839
+ case TALRTC:
1840
+ case NERTC:
1841
+ case VOLCRTC:
1842
+ // FIXME METHOD_NOT_IMPLEMENT;
1843
+ break;
1844
+ default:
1845
+ break;
1846
+ }
1847
+ };
1848
+
1849
+ /**
1850
+ * @function 40路混音
1851
+ * @param { number } mixMode //混流模式 0=关闭混流 1=开启混流
1852
+ * @param { array } streamIdArr //表示要突出声音的channel
1853
+ * @return: Promise
1854
+ */
1855
+ export const setAudioMixMode = (mixMode, streamIdArr) => {
1856
+ switch (window.zbztAVSDK_init_sdk_type) {
1857
+ case RTC:
1858
+ break;
1859
+ case ZEGO:
1860
+ return zegosdk.setAudioMixMode(mixMode, streamIdArr);
1861
+ case TALRTC:
1862
+ case NERTC:
1863
+ case VOLCRTC:
1864
+ return talrtcsdk.setAudioMixMode(mixMode, streamIdArr);
1865
+ default:
1866
+ break;
1867
+ }
1868
+ };
1869
+
1870
+ //获取第三方底层流媒体版本号
1871
+ export const getSDKVersion = () => {
1872
+ switch (window.zbztAVSDK_init_sdk_type) {
1873
+ case RTC:
1874
+ // return rtcsdk.getSDKVersion();
1875
+ case ZEGO:
1876
+ return zegosdk.getSDKVersion();
1877
+ case TALRTC:
1878
+ case NERTC:
1879
+ case VOLCRTC:
1880
+ const version = talrtcsdk.getSDKVersion();
1881
+ return { msg: `\"{'ret': '${version}'}\"` };
1882
+ default:
1883
+ break;
1884
+ }
1885
+ };
1886
+
1887
+ //获取摄像头所支持的分辨率
1888
+ export const getCameraSupportedResolution = async (deviceId) => {
1889
+ switch (window.zbztAVSDK_init_sdk_type) {
1890
+ case RTC:
1891
+ // return await rtcsdk.getCameraSupportedRes(deviceId);
1892
+ case ZEGO:
1893
+ return await zegosdk.getCameraSupportedRes(deviceId);
1894
+ case TALRTC:
1895
+ case NERTC:
1896
+ case VOLCRTC:
1897
+ return await talrtcsdk.getCameraResolution(deviceId);
1898
+ case TRTC:
1899
+ // return await trtcsdk.getCameraResolution(deviceId);
1900
+ default:
1901
+ break;
1902
+ }
1903
+ };
1904
+
1905
+ /**
1906
+ * @function 发送SEI
1907
+ * @return: Promise
1908
+ */
1909
+ export const sendMediaSideInfo = (info) => {
1910
+ switch (window.zbztAVSDK_init_sdk_type) {
1911
+ case RTC:
1912
+ break;
1913
+ case ZEGO:
1914
+ return zegosdk.sendMediaSideInfo(info);
1915
+ case TALRTC:
1916
+ case NERTC:
1917
+ case VOLCRTC:
1918
+ return talrtcsdk.sendSEIMsg(info);
1919
+ case TRTC:
1920
+ // return trtcsdk.sendSEIMsg(info);
1921
+ default:
1922
+ break;
1923
+ }
1924
+ };
1925
+ /**
1926
+ * @function 开启rtc同屏
1927
+ * @return: Promise
1928
+ */
1929
+ export const startMultiScreen = () => {
1930
+ switch (window.zbztAVSDK_init_sdk_type) {
1931
+ case RTC:
1932
+ break;
1933
+ case ZEGO:
1934
+ return zegosdk.startMultiScreen();
1935
+ case TALRTC:
1936
+ case NERTC:
1937
+ case VOLCRTC:
1938
+ return talrtcsdk.startMultiScreen();
1939
+ case TRTC:
1940
+ // return trtcsdk.startMultiScreen();
1941
+ default:
1942
+ break;
1943
+ }
1944
+ };
1945
+ /**
1946
+ * @function 开启rtc同屏
1947
+ * @return: Promise
1948
+ */
1949
+ export const enableHighlight = (enable) => {
1950
+ switch (window.zbztAVSDK_init_sdk_type) {
1951
+ case RTC:
1952
+ break;
1953
+ case ZEGO:
1954
+ break;
1955
+ case TRTC:
1956
+ // return trtcsdk.enableHighlight(enable);
1957
+ default:
1958
+ break;
1959
+ }
1960
+ };
1961
+ /**
1962
+ * @function 开启音频外部采集
1963
+ * @return: Promise
1964
+ */
1965
+ export const startAudioExCapture = () => {
1966
+ switch (window.zbztAVSDK_init_sdk_type) {
1967
+ case RTC:
1968
+ break;
1969
+ case ZEGO:
1970
+ return zegosdk.startAudioExCapture(1);
1971
+ case TALRTC:
1972
+ case NERTC:
1973
+ case VOLCRTC:
1974
+ // FIXME METHOD_NOT_IMPLEMENT;
1975
+ break;
1976
+ default:
1977
+ break;
1978
+ }
1979
+ };
1980
+
1981
+ /**
1982
+ * @function 设置辅路通道音频采集模式
1983
+ * @return: Promise
1984
+ */
1985
+ export const setAUXAudioType = (type) => {
1986
+ switch (window.zbztAVSDK_init_sdk_type) {
1987
+ case RTC:
1988
+ break;
1989
+ case ZEGO:
1990
+ return zegosdk.setAUXAudioType(type);
1991
+ case TALRTC:
1992
+ case NERTC:
1993
+ case VOLCRTC:
1994
+ return talrtcsdk.setAudioType(type);
1995
+ default:
1996
+ break;
1997
+ }
1998
+ };
1999
+
2000
+ /**
2001
+ * @function 设置录制通道音频采集模式
2002
+ * @return: Promise
2003
+ */
2004
+ export const setThirdAudioType = (type) => {
2005
+ switch (window.zbztAVSDK_init_sdk_type) {
2006
+ case RTC:
2007
+ break;
2008
+ case ZEGO:
2009
+ return zegosdk.setThirdAudioType(type);
2010
+ default:
2011
+ break;
2012
+ }
2013
+ };
2014
+
2015
+ /**
2016
+ * @function 判断推流类型
2017
+ * @return: Promise
2018
+ */
2019
+ export const getStreamType_zego = () => {
2020
+ switch (window.zbztAVSDK_init_sdk_type) {
2021
+ case RTC:
2022
+ break;
2023
+ case ZEGO:
2024
+ return zegosdk.getStreamType();
2025
+ default:
2026
+ break;
2027
+ }
2028
+ };
2029
+
2030
+ const setThirdAudioCallbackType = (sdkType) => {
2031
+ let type = sdkVale[sdkType];
2032
+ return zegosdk.setThirdAudioType(type);
2033
+ };
2034
+
2035
+
2036
+ export default {
2037
+ init,
2038
+ recoverSdk,
2039
+ deviceCheckerInit,
2040
+ stopCheckDevice,
2041
+ changeSDK,
2042
+ unloadExtension,
2043
+ startPushFlow,
2044
+ stopPushFlow,
2045
+ initPullFlow,
2046
+ startPullFlow,
2047
+ stopPullFlow,
2048
+ stopAllPullFlow,
2049
+ playDestroy,
2050
+ changePullFlow,
2051
+ getCameraDeviceList,
2052
+ setCameraDevice,
2053
+ openOrCloseCamera,
2054
+ getOrLocateVideo,
2055
+ getSpeakerDeviceList,
2056
+ setSpeakerDevice,
2057
+ getSpeakerDevice,
2058
+ getSpeakerVolume,
2059
+ setSpeakerVolume,
2060
+ setSpeakerMute,
2061
+ getAppVolume,
2062
+ setAppVolume,
2063
+ setAppMute,
2064
+ getMicrophoneDeviceList,
2065
+ setMicrophoneDevice,
2066
+ openOrCloseMicrophone,
2067
+ getMicrophoneVolume,
2068
+ setMicrophoneVolume,
2069
+ setMicrophoneMute,
2070
+ leaveRoomWithChangeSDK,
2071
+ leaveRoom,
2072
+ turnPush,
2073
+ setAudioMute,
2074
+ pullAudioFlow,
2075
+ setVideoMute,
2076
+ openMicVolumeCb,
2077
+ startMixtStream,
2078
+ stopMixtStream,
2079
+ singleRecord,
2080
+ getSnapshootId,
2081
+ setCameraParams,
2082
+ setEncodeParams,
2083
+ setBitRate,
2084
+ recordPublishTarget,
2085
+ localRecordVideo,
2086
+ localRecordAudio,
2087
+ startRecord,
2088
+ stopRecord,
2089
+ startCapture,
2090
+ stopCapture,
2091
+ teacherStartLinkMic,
2092
+ teacherStopLinkMic,
2093
+ setSpeakerCapture,
2094
+ setMixStream,
2095
+ captureSnapShot,
2096
+ playerSnapShot,
2097
+ openOrCloseCameraAndMicrophone,
2098
+ setMirrorStatus,
2099
+ getStreamType_zego,
2100
+ startSenseMe,
2101
+ setBeautifyParam,
2102
+ endSenseMe,
2103
+ setPlayViewMirror,
2104
+ setPushStreamVideo,
2105
+ getSDKVersion,
2106
+ getCameraSupportedResolution,
2107
+ setAudioMixMode,
2108
+ setPushViewMirror,
2109
+ deinit,
2110
+ startMultiScreen,
2111
+ getAllChannelIndex,
2112
+ startAudioExCapture,
2113
+ startSoundLevelMonitor,
2114
+ sendMediaSideInfo,
2115
+ enableHighlight,
2116
+ setAUXAudioType,
2117
+ setThirdAudioType,
2118
+ mixedstuVideo,
2119
+ setThirdAudioCallbackType
2120
+ // getDeviceState
2121
+ };