zby-live-sdk 1.0.49-beta-talrtc0922 → 1.0.49-beta-talrtc1014

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