Socket
Socket
Sign inDemoInstall

zby-live-sdk

Package Overview
Dependencies
60
Maintainers
4
Versions
347
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.0.49-beta-20230228 to 1.0.49-beta-bp-20230508

src/zby-av-sdk/trtc-sdk.js

147

CHANGELOG.md

@@ -5,42 +5,153 @@ # Change Log

<a name="1.0.49-beta-20230228"></a>
<a name="1.0.49-beta-bp-20230508"></a>
## [1.0.49-beta-20230228](https://git.100tal.com/peiyou_jiaoxue_shouke/xbase_extension_zby_live_sdk/compare/v1.0.46-beta-talassistant-1229...v1.0.49-beta-20230228) (2023-02-28)
## [1.0.49-beta-bp-20230508](https://git.100tal.com/peiyou_jiaoxue_shouke/xbase_extension_zby_live_sdk/compare/v1.0.48-beta0803-M1...v1.0.49-beta-bp-20230508) (2023-05-08)
### Bug Fixes
- 修改 babel 插件运行时缺少依赖报错 ([9229a60](https://git.100tal.com/peiyou_jiaoxue_shouke/xbase_extension_zby_live_sdk/commits/9229a60))
- 标品流 id 改造(添加 orgId) ([8a81524])
- 补充参数 ([32cc636])
- 添加 saas 业务线区分标品域名 ([d9aa777])
- 修改混流报错 ([f6f5ccf])
- 修改混流报错 ([eace13c])
- 修改混流接口以及补充 orgId ([6383776])
- 修改 trtc 回放没有拼接头像问题 ([77a1103])
- 增加混流逻辑 ([47d3bd0])
- 增加 try-catch ([57eb662])
<a name="1.0.46-beta-talassistant-1229"></a>
<a name="1.0.49-beta20230427-1"></a>
## [1.0.46-beta-talassistant-1229](https://git.100tal.com/peiyou_jiaoxue_shouke/xbase_extension_zby_live_sdk/compare/v1.0.50-beta-talrtc-fudao...v1.0.46-beta-talassistant-1229) (2021-12-29)
## [1.0.49-beta20230427-1](https://git.100tal.com/peiyou_jiaoxue_shouke/xbase_extension_zby_live_sdk/compare/v1.0.49-beta20230427...v1.0.49-beta20230427-1) (2023-04-27)
### Bug Fixes
- 去掉测试代码 ([1835a12](https://git.100tal.com/peiyou_jiaoxue_shouke/xbase_extension_zby_live_sdk/commits/1835a12))
- 修改混流接口以及补充 orgId ([6383776])
<a name="1.0.46-beta-talassistant-1221"></a>
<a name="1.0.49-beta20230427"></a>
## [1.0.46-beta-talassistant-1221](https://git.100tal.com/peiyou_jiaoxue_shouke/xbase_extension_zby_live_sdk/compare/v1.0.46-beta-talassistant-1220...v1.0.46-beta-talassistant-1221) (2021-12-21)
## [1.0.49-beta20230427](https://git.100tal.com/peiyou_jiaoxue_shouke/xbase_extension_zby_live_sdk/compare/v1.0.49-beta1008-1...v1.0.49-beta20230427) (2023-04-27)
<a name="1.0.46-beta-talassistant-1220"></a>
### Bug Fixes
## [1.0.46-beta-talassistant-1220](https://git.100tal.com/peiyou_jiaoxue_shouke/xbase_extension_zby_live_sdk/compare/v1.0.46-beta-talassistant-1215...v1.0.46-beta-talassistant-1220) (2021-12-20)
- 添加 saas 业务线区分标品域名 ([d9aa777])
<a name="1.0.46-beta-talassistant-1215"></a>
<a name="1.0.49-beta20230306"></a>
## [1.0.46-beta-talassistant-1215](https://git.100tal.com/peiyou_jiaoxue_shouke/xbase_extension_zby_live_sdk/compare/v1.0.46-beta-assistant-1215...v1.0.46-beta-talassistant-1215) (2021-12-15)
## [1.0.49-beta20230306](2023-03-06)
<a name="1.0.46-beta-assistant-1215"></a>
1.增加断网重试推拉流通知
## [1.0.46-beta-assistant-1215](https://git.100tal.com/peiyou_jiaoxue_shouke/xbase_extension_zby_live_sdk/compare/v1.0.46-beta0910-1...v1.0.46-beta-assistant-1215) (2021-12-15)
<a name="1.0.49-beta20230302"></a>
<a name="1.0.46"></a>
## [1.0.49-beta20230302](2023-03-02)
## [1.0.46](https://git.100tal.com/peiyou_jiaoxue_shouke/xbase_extension_zby_live_sdk/compare/v1.0.46-beta0910-1...v1.0.46) (2021-12-15)
1.增加返回混流请求结果
<a name="1.0.46-beta1029-1"></a>
<a name="1.0.49-beta1227"></a>
## [1.0.46-beta1029-1](https://git.100tal.com/peiyou_jiaoxue_shouke/xbase_extension_zby_live_sdk/compare/v1.0.46-beta0910-1...v1.0.46-beta1029-1) (2021-10-29)
## [1.0.49-beta1227](2022-12-27)
1.银联增加私聊背景图片
<a name="1.0.49-beta1216"></a>
## [1.0.49-beta1216] (2022-12-16)
1.设置 zego 第三路流声音采集模式
<a name="1.0.49-beta1213"></a>
## [1.0.49-beta1213](2022-12-13)
1.调整混流帧率、码率,提升清晰度
<a name="1.0.49-beta1130-1"></a>
## [1.0.49-beta1130-1](2022-11-30)
<a name="1.0.49-beta1130"></a>
## [1.0.49-beta1130](2022-11-30)
<a name="1.0.49-beta1129"></a>
## [1.0.49-beta1129](2022-11-29)
1.根据 AppId 适配混流背景图
<a name="1.0.49-beta1123"></a>
## [1.0.49-beta1123](2022-11-23)
1.增加嘉宾状态背景图
<a name="1.0.49-beta1115"></a>
## [1.0.49-beta1115](2022-11-15)
1.设置嘉宾流 id
### Bug Fixes
- 对齐摄像头分辨率输出格式 ([32e1f04])
- 补充参数 ([32cc636])
- 底层直接处理 deviceID,适配层不做任何操作 ([afed84a])
- 修改混流报错 ([f6f5ccf])
- 修改混流报错 ([eace13c])
- 修改 M1rtc 类型下拉流死循环问题 ([69fd927])
- 修改 trtc 回放没有拼接头像问题 ([77a1103])
- 增加混流逻辑 ([47d3bd0])
- 增加 try-catch ([57eb662])
<a name="1.0.49-beta1018-1"></a>
## [1.0.49-beta1018-1](2022-10-18)
1.unionpay
- 在 JSSDK 配置混流分辨率
<a name="1.0.49-beta1014-1"></a>
## [1.0.49-beta1014-1](2022-10-14)
1.unionpay
- 完善混流逻辑及混流规则([e0d8340])
<a name="1.0.49-beta1008-1"></a>
## [1.0.49-beta1008-1](2022-10-08)
1.unionpay
### Bug Fixes
- 修改混流报错 ([f6f5ccf])
<a name="1.0.49-beta0927-1"></a>
## [1.0.49-beta0927-1](2022-09-27)
1. 修改混流报错 ([eace13c])
<a name="1.0.49-beta0921-1"></a>
## [1.0.49-beta0921-1](2022-09-20)
1. 补充参数 ([32cc636])
2. 增加混流逻辑 ([47d3bd0])
<a name="1.0.49-beta0825-1"></a>
## [1.0.49-beta0825-1] (2022-08-25)
1.修改回放关麦依旧有声音问题(zego 推的 rtmp)
<a name="1.0.48-beta0831-1"></a>
## (2022-08-11)
1.修改 M1rtc 类型下拉流死循环问题 ([69fd927]) 2.修改 trtc 回放没有拼接头像问题 ([77a1103]) 3.增加 try-catch ([57eb662])
<a name="1.0.45"></a>

@@ -47,0 +158,0 @@

3

package.json
{
"name": "zby-live-sdk",
"version": "1.0.49-beta-20230228",
"version": "1.0.49-beta-bp-20230508",
"main": "dist/zby-live-sdk.cjs.js",

@@ -23,3 +23,2 @@ "module": "dist/zby-live-sdk.esm.js",

"@babel/core": "^7.2.2",
"@babel/plugin-transform-runtime": "^7.21.0",
"@babel/preset-env": "^7.2.3",

@@ -26,0 +25,0 @@ "cross-env": "^5.2.0",

@@ -41,4 +41,5 @@ import zbyChannelObj from './zby';

this.initParams = params;
// 设置当前信道对象
// 设置当前信道对象,使用直播云还是pomelo
channelObj = channelObjs[channelType];
defaultApi.writeLog('channel_log : choose channel and start joining ......');
// 加入房间

@@ -67,7 +68,7 @@ channelObj.joinRoom(params, cb);

}
// 发送进房消息
// 发送进房消息,是自己加入房间群发的消息
sendJoin(args) {
this.sendChannelMsg(getSendMsgParams.sendJoin(args));
}
// 发送离开房间消息
// 发送离开房间消息,是收到别人进入房间然后定向发的消息
sendLeave(args) {

@@ -80,3 +81,3 @@ this.sendChannelMsg(getSendMsgParams.sendLeave(args));

}
// 发送推流消息
// 发送推流消息,addstream自己推流成功会发,如果有个人进来你会单独给他发,没有ack
sendAddStream(args) {

@@ -107,3 +108,3 @@ this.sendChannelMsg(getSendMsgParams.sendAddStream(args));

defaultApi.writeLog(`reJoin : 断线重连,准备执行切换 SDK to ${new_target_sdk_type}`);
zbysdk.changeSDK(new_target_sdk_type);
zbysdk.changeSDK(1);
} else {

@@ -110,0 +111,0 @@ const {roomId, userId, userName, institutionId, role} = this.initParams;

@@ -23,8 +23,9 @@ import pomeloClient from './polemo';

}
const { userId, roomId, chatUrl, userName, role, institutionId } = args;
const _args = { userId, roomId, host: chatUrl, userName, institutionId, role: polemoUtil.translateRole(role) };
this.log('channel_log : start joining pomelo ......');
const { userId, roomId, chatUrl, userName, role, institutionId, guid} = args;
const _args = { userId, roomId, host: chatUrl, userName, institutionId, guid, role: polemoUtil.translateRole(role) };
this.log(`joinRoom: args: ${JSON.stringify(_args)}`);
this.initParams = _args;
// 定时检查发送消息列表
this.checkSendMsgList();
// this.checkSendMsgList();
const res = await pomeloClient.joinRoom({

@@ -38,2 +39,4 @@ ..._args,

this.isInRoom = true;
await this.checkFailedAndCacheMSg();
this.checkSendMsgList();
} else {

@@ -44,5 +47,7 @@ this.log('joinRoom failed');

dataReport.joinRoomResult({
status: res.code === 200 ? '0' : '3',
cloud_api_response: JSON.stringify(window.zby_sdk_cloud_data),
cloud_api_url: `${getApiCloudBaseUrl()}/rtccloud/class/init`
code: res.code === 200 ? '0' : '3',
// cloud_api_response: JSON.stringify(window.zby_sdk_cloud_data),
cloud_api_response: window.zby_sdk_cloud_data,
cloud_api_url: `${getApiCloudBaseUrl()}/rtccloud/class/init`,
chat_url: chatUrl
});

@@ -103,4 +108,37 @@ } catch (e) {};

this.log(`sendChannelMsgInner: data: ${JSON.stringify(data)}, target: ${target}`);
try {
dataReport.pomeloSendMsg({api:data.body.api,data:{...data,body:JSON.parse(data.body)},target});
} catch(e) {
console.log('pomeloSendMsg_error',e);
}
return pomeloClient.sendChannelMessage(data, target);
},
// 遍历失败和缓存消息
async checkFailedAndCacheMSg() {
// 遍历失败消息
const len = Object.keys(this.sendMsgCheckList).length;
if (len > 0) {
this.log(`checkSendMsgList-sendMsgCheckList :${JSON.stringify(this.sendMsgCheckList)}`);
for(let index in this.sendMsgCheckList) {
const msg = this.sendMsgCheckList[index];
const res = await this.sendChannelMsgInner(msg.data, msg.target);
if (res.code === 200) {
delete this.sendMsgCheckList[index];
}
}
}
// 遍历缓存消息
const len1 = Object.keys(this.sendMsgCacheList).length;
if (len1 > 0) {
this.log(`checkSendMsgList-sendMsgCacheList :${JSON.stringify(this.sendMsgCacheList)}`);
for(let index in this.sendMsgCacheList) {
const msg = this.sendMsgCacheList[index];
const res = await this.sendChannelMsgInner(msg.data, msg.target);
if (res.code === 200) {
delete this.sendMsgCacheList[index];
}
}
}
},
// 定时检查缓存队列

@@ -112,24 +150,3 @@ async checkSendMsgList() {

}
// 遍历失败消息
const len = Object.keys(this.sendMsgCheckList).length;
if (len > 0) {
for(let index in this.sendMsgCheckList) {
const msg = this.sendMsgCheckList[index];
const res = await this.sendChannelMsgInner(msg.data, msg.target);
if (res.code === 200) {
delete this.sendMsgCheckList[index];
}
}
}
// 遍历缓存消息
const len1 = Object.keys(this.sendMsgCacheList).length;
if (len1 > 0) {
for(let index in this.sendMsgCacheList) {
const msg = this.sendMsgCacheList[index];
const res = await this.sendChannelMsgInner(msg.data, msg.target);
if (res.code === 200) {
delete this.sendMsgCacheList[index];
}
}
}
this.checkFailedAndCacheMSg();
}, sendMsgCheckIntervalTime);

@@ -157,3 +174,3 @@ },

if (window.current_sdk_type !== body.data) {
zbysdk.changeSDK(body.data);
zbysdk.changeSDK();
} else {

@@ -160,0 +177,0 @@ console.log('%c接收到信道广播目标SDK和本地一致,不切换:' + body.data, 'color:blue');

@@ -7,2 +7,3 @@ import Protocol from 'pomelo-protocol';

import defaultApi from '../../default/extend';
import dataReport from '../../network/dataReport';

@@ -55,2 +56,4 @@ var _protocol = Protocol;

this.isConnected = false;
//是否在教室
this.isInRoom = false;
// 是否链接成功过

@@ -85,2 +88,3 @@ this.hasConnected = false;

// this.handshakeCallback = pomeloConfig.handshakeCallback;
defaultApi.writeLog(`channel_log : ${url} ${JSON.stringify(pomeloConfig)} initPomelo ......`);
//开始连接websocket

@@ -92,4 +96,11 @@ this.initWebSocket(url, pomeloConfig.serverType);

this.callback = callBack;
this.isInRoom = true;
pomeloConfig.port = '443';
this.indexChannelInfo = pomeloConfig;
defaultApi.writeLog(`channel_log :${JSON.stringify(pomeloConfig)} the first step to join pomelo ......`);
try {
dataReport.pomeloJoinRoom({pomeloConfig});
} catch(e) {
console.log('pomeloJoinRoom_error',e);
}
return this.connectGateServer(pomeloConfig);

@@ -100,5 +111,6 @@ }

var _this = this;
defaultApi.writeLog(`channel_log : ${url} ${serverType} socket init......`);
try {
if (this.socket) {
defaultApi.writeLog('channel_log : socket is closed......');
this.socket.close();

@@ -113,2 +125,8 @@ }

this.socket = new WebSocket(url);
try {
dataReport.pomeloInitWebSocket({url});
} catch(e) {
console.log('pomeloInitWebSocket_error',e);
}
defaultApi.writeLog('channel_log : new WebSocket......');
this.socket.binaryType = 'arraybuffer';

@@ -118,2 +136,3 @@

_this.onSocketOpen(evt);
defaultApi.writeLog(`channel_log : ${JSON.stringify(evt)} socket is onopen......`);
};

@@ -131,3 +150,3 @@

_this.onSocketError(evt);
defaultApi.writeLog(`channel_log : ${JSON.stringify(evt)} socket is onerror......`);
// 重连

@@ -143,2 +162,3 @@ this.reconnect();

defaultApi.writeLog(`channel_log : ${JSON.stringify(evt)} socket is onclose......`);
if (serverType == 'chat') {

@@ -225,2 +245,3 @@ // this.emit(SocketEventType.SOCKET_CLOSE, evt);

case _package.TYPE_DATA:
// defaultApi.writeLog(`channel_log : ${JSON.stringify(msgData)} _package TYPE_DATA ......`);
var msg = _message.decode(msgData.body);

@@ -239,2 +260,3 @@

case _package.TYPE_KICK:
defaultApi.writeLog('channel_log : _package TYPE_KICK ......');
// this.emit(SocketEventType.POMELO_MESSAGE_KICK);

@@ -470,2 +492,7 @@ break;

this.hasConnected = false;
this.isInRoom = false;
if (this.reconnectTimer) {
clearInterval(this.reconnectTimer);
this.reconnectTimer = null;
}
}

@@ -541,2 +568,3 @@

});
defaultApi.writeLog('channel_log : connectGateServer,the second step to join pomelo ......');

@@ -549,3 +577,3 @@ const queryData = {

protocolVersion: '1.0',
// uniqId: channelInfo.uuid
// uniqId: channelInfo.guid
};

@@ -560,2 +588,3 @@

this.socket.close();
defaultApi.writeLog('channel_log :gate socket close......');
} catch (error) {

@@ -567,2 +596,3 @@ //

if (data.code === 500) {
defaultApi.writeLog(`channel_log : ${data.code} request-gateServerFailed......`);
reject('gateServerFailed');

@@ -573,2 +603,8 @@ }

_channelInfo.port = data.port;
defaultApi.writeLog(`channel_log : ${data.code} request-gateServerSuccess ......`);
try {
dataReport.pomeloInitGate({gateRes:data});
} catch(e) {
console.log('pomeloInitGate_error',e);
}
resolve('gateServerSuccess');

@@ -591,2 +627,3 @@ });

async connectChatServer(channelInfo) {
defaultApi.writeLog('channel_log : connectChatServer,the third step to join pomelo ......');
await new Promise((resolve, reject) => {

@@ -612,3 +649,3 @@ this.initPomelo({

protocolVersion: '1.0',
// uniqId: channelInfo.uuid
uniqId: channelInfo.guid
};

@@ -623,6 +660,13 @@

reject(data);
defaultApi.writeLog(`channel_log : ${data.code} request-chatServerFailed......`);
return;
}
this.dealConnectSuccess();
try {
dataReport.pomeloInitChat({chatRes:data});
} catch(e) {
console.log('pomeloInitChat_error',e);
}
resolve(data);
defaultApi.writeLog(`channel_log : ${data.code} request-chatServerSuccess......`);
console.log('我是chat', data);

@@ -700,7 +744,7 @@ }

this.isReconnectting = true;
if (!this.isConnected) {
if (!this.isConnected && this.isInRoom) {
this.connectGateServer(this.indexChannelInfo);
}
this.reconnectTimer = setInterval(() => {
if (!this.isConnected) {
if (!this.isConnected && this.isInRoom) {
this.connectGateServer(this.indexChannelInfo);

@@ -707,0 +751,0 @@ }

@@ -0,1 +1,9 @@

/*
* @Author: your name
* @Date: 2021-01-05 20:41:36
* @LastEditTime: 2021-03-25 21:57:42
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: \1223\xbase_extension_zby_live_sdk\src\channel\sdk-cb.js
*/
import NOTICE from '../notice';

@@ -30,3 +38,3 @@ import dict from '../util/dict';

NOTICE.removeStream({
userId: data.userid || data.actorId,
userId: data.userid || data.actorId|| data.streamUrl.split('_')[2],
userName: data.actorName,

@@ -33,0 +41,0 @@ role: data.actorType || data.role,

@@ -8,2 +8,3 @@ import dict from '../util/dict';

} from '../zby-live-sdk';
import dataReport from '../network/dataReport';

@@ -13,2 +14,7 @@

export default function(data, baseInfo) {
try {
dataReport.pomeloRecvMsg({data});
} catch(e) {
console.log('pomeloRecvMsg_error',e);
}
switch (data.api) {

@@ -15,0 +21,0 @@ case 'join':

@@ -0,4 +1,13 @@

/*
* @Author: your name
* @Date: 2020-12-03 16:07:40
* @LastEditTime: 2020-12-10 21:25:24
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: \xiaoban_report\xbase_extension_51_demo\src\_zby_live_sdk\src\channel\zby\index.js
*/
import interactWithChannel from './interactWithChannel';
import CHANNEL from '../index';
import util from '../../util/util';
import {getApiCloudBaseUrl} from '../../config/config';

@@ -37,3 +46,7 @@ function sendChannelMsgInner(data) {

dataReport.joinRoomResult({
status: '2'
code: '2',
// cloud_api_response: JSON.stringify(window.zby_sdk_cloud_data),
cloud_api_response: window.zby_sdk_cloud_data,
cloud_api_url: `${getApiCloudBaseUrl()}/rtccloud/class/init`,
chat_url: args.chatUrl
});

@@ -40,0 +53,0 @@ } catch (e) {};

@@ -7,2 +7,3 @@ import CHANNEL from '../index';

import dealReceiveStreamMsg from '../stream-msg';
// import {getApiCloudBaseUrl} from '../../config/config';

@@ -149,3 +150,7 @@ let w = window;

dataReport.joinRoomResult({
status: '0'
code: '0',
// cloud_api_response: JSON.stringify(window.zby_sdk_cloud_data),
cloud_api_response: window.zby_sdk_cloud_data,
cloud_api_url: `${getApiCloudBaseUrl()}/rtccloud/class/init`,
chat_url: window.zby_sdk_cloud_data.chatUrl
});

@@ -170,3 +175,6 @@ } catch (e) {};

dataReport.joinRoomResult({
status: '4'
code: '4',
cloud_api_response: window.zby_sdk_cloud_data,
cloud_api_url: `${getApiCloudBaseUrl()}/rtccloud/class/init`,
chat_url: window.zby_sdk_cloud_data.chatUrl
});

@@ -842,3 +850,6 @@ } catch (e) {};

dataReport.joinRoomResult({
status: '3'
code: '3',
cloud_api_response: window.zby_sdk_cloud_data,
cloud_api_url: `${getApiCloudBaseUrl()}/rtccloud/class/init`,
chat_url: window.zby_sdk_cloud_data.chatUrl
});

@@ -1153,3 +1164,3 @@ } catch (e) {};

if (window.current_sdk_type !== data.data) {
zbysdk.changeSDK(data.data);
zbysdk.changeSDK();
} else {

@@ -1156,0 +1167,0 @@ console.log('%c接收到信道广播目标SDK和本地一致,不切换:' + obj.message.data, 'color:blue');

@@ -10,2 +10,7 @@ import {getInitParams} from '../network/api';

const saasModeApi = {
1: 'Bp', // 标品
2: '', // 银联
}
const urls = {

@@ -17,3 +22,3 @@ api : 'api.weclassroom.com',

// export const version = require('../../package.json').version;
export const version = '1.0.49-beta-20230228';
export const version = '1.0.49-beta-bp-20230508';

@@ -36,2 +41,6 @@ export const liveExt = {

};
export const utilitiesExt = {
name: 'utilities_ext',
version: '1.0.0.0'
};
export const talrtcExt = {

@@ -63,5 +72,6 @@ name: 'talrtc_ext',

export let config = {
isHttps: false,
isHttps: true,
env: 'test',
weblog: true,
saasMode: 2,
};

@@ -82,6 +92,19 @@

const reportUrls = {
test: 'test-dp.weclassroom.com:10443/report',
online: 'dp.weclassroom.com:443/report'
// test: 'test-dp.weclassroom.com:10443/report',
// online: 'dp.weclassroom.com:443/report'
test: 'testdp-s.weclassroom.com/report',
online: 'dp-s.weclassroom.com/report '
};
const logAddressInit = {
test: 'live_test_log',
online: 'live_log'
};
// 从三方服务器获取时间戳
export const timestampUrl = {
suning: 'https://quan.suning.com/getSysTime.do',
taobao: 'https://api.m.taobao.com/rest/api3.do?api=mtop.common.getTimestamp'
};
// 获取初始化数据

@@ -99,2 +122,14 @@ const apiCloudUrl = {

//开启混流
const apiMixStreams = {
test: 'https://tf-classroom-test.vdyoo.com',
online: 'https://tf-classroom-online.vdyoo.com'
};
//开启混流-标品
const apiMixStreamsBp = {
test: 'https://tf-bp-classroom-test.vdyoo.com',
online: 'https://tf-classroom-online.vdyoo.com'
};
export const getApiCloudBaseUrl = () => {

@@ -105,2 +140,9 @@ const {env} = config;

export const getApiMixStreams = () => {
const { env ,saasMode} = config;
const urls = saasMode == 1 ? apiMixStreamsBp : apiMixStreams ;
console.log('混流-test', urls, saasMode);
return urls[env];
}
export const getApiChangeSdkUrl = () => {

@@ -112,2 +154,3 @@ const {env} = config;

export let dabanReportUrl = '';
export let logAddress = '';

@@ -119,6 +162,13 @@ export const getReportBaseUrl = () => {

const {env} = config;
return `http://${reportUrls[env]}`;
return `https://${reportUrls[env]}`;
};
export const getLogAddress = () => {
const {env} = config;
console.log('logAddresshsghsg',env,logAddressInit[env]);
logAddress = logAddressInit[env];
// return logAddress;
};
export const getAndSetInitParams = async (args) => {

@@ -125,0 +175,0 @@ const res = await getInitParams(args);

@@ -10,3 +10,8 @@ /*

import {liveExt} from '../config/config';
let sdkVale = {
zego: 0,
talrtc: 1,
trtc: 2,
rtc:3
}
export default {

@@ -22,2 +27,8 @@ async getLiveSdkVersion() {

},
//设置相应的sdk声音回调给到tm,解决回放关麦依旧有声音问题
async setAudioCallbackType(sdkType) {
let audio_source = sdkVale[sdkType]
console.log('setAudioCallbackType audio_source:', audio_source);
return callMethod('SetExternalAudioSource', {audio_source});
},
// 初始化

@@ -24,0 +35,0 @@ init(){

/*
* @Author: your name
* @Date: 2020-08-28 17:06:45
* @LastEditTime: 2020-10-14 10:34:32
* @LastEditTime: 2020-12-15 13:18:45
* @LastEditors: Please set LastEditors

@@ -10,3 +10,3 @@ * @Description: In User Settings Edit

import commonFetch from './commonFetch.js';
import {getReportBaseUrl, getApiCloudBaseUrl, getCloudApiDomain, getApiChangeSdkUrl} from '../config/config.js';
import {getReportBaseUrl, getApiCloudBaseUrl, getCloudApiDomain, getApiChangeSdkUrl, timestampUrl, getApiMixStreams} from '../config/config.js';
import util from '../util/util';

@@ -19,2 +19,9 @@

/**
* @function 从三方服务器获取时间戳
*/
export function getNetworkTimestampApi(name = 'taobao'){
return commonFetch(timestampUrl[name], 'GET');
}
// 获取云控参数

@@ -46,1 +53,10 @@ export function getCloudData(param){

}
//开始混流
export function mixStreamsStart(param) {
return commonFetch(`${getApiMixStreams()}/rtc-backend/mix/stream/start`, param, 'POST');
}
//结束混流
export function mixStreamsStop(param) {
return commonFetch(`${getApiMixStreams()}/rtc-backend/mix/stream/end`, param, 'POST');
}

@@ -10,2 +10,3 @@ /*

import axios from 'axios';
import { config } from '../config/config'
import Qs from 'qs';

@@ -29,3 +30,3 @@ /**

const post = (data, url, timeout) => {
const post = (data, url, timeout,headers) => {
return axios({

@@ -35,3 +36,4 @@ method: 'post',

timeout,
data
data,
headers
});

@@ -51,14 +53,17 @@ };

if (method === 'GET') { // 如果是GET请求,拼接url
return get(options, url, timeOut, headers).then((res)=>{
let header = Object.assign({},headers,{orgId:config.orgId})
return get(options, url, timeOut, header).then((res)=>{
return res.data;
});
} else if(method === 'POST') {
return post(options, url, timeOut).then((res)=>{
} else if (method === 'POST') {
let header = Object.assign({},headers,{orgId:config.orgId})
return post(options, url, timeOut, header).then((res)=>{
return res.data;
});
} else if(method === 'FROMDATA') {
let headers = {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
let header = {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
orgId: config.orgId
};
return post1(options, url, timeOut, headers).then((res)=>{
return post1(options, url, timeOut, header).then((res)=>{
return res.data;

@@ -65,0 +70,0 @@ });

@@ -1,26 +0,74 @@

import {dabanDataReport} from './api';
import util from '../util/util';
import {version, liveExt} from '../config/config';
// import {dabanDataReport} from './api';
// import util from '../util/util';
import {version, liveExt, logAddress} from '../config/config';
import toolApi from '../tool';
import toolBaseApi from '../tool/base';
import liveApi from '../live';
// import toolBaseApi from '../tool/base';
// import liveApi from '../live';
import defaultApi from '../default/extend';
import zbyApi from '../zby-av-sdk/zby-av-sdk';
// import zbyApi from '../zby-av-sdk/zby-av-sdk';
import zbysdk from '../zby-live-sdk';
let sdk_version = null;
let baseData = null;
let res = null;
let heartbeatStaticArgs = {};
let stream_type ;
const EM = window.EM;
let hasAddListener = false;
let baseData1 = null;
let baseData2 = null;
let st = 2;
let timestamp = null;
//获取分辨率
async function getRes() {
//防止tool扩展加载不及时,无法调用getCurCpuMemInfo方法
await toolBaseApi.init();
const {resolution, mem_total, cpuType} = (await toolApi.getCurCpuMemInfo()).msg;
heartbeatStaticArgs = {mem_total: util.toFixed(mem_total), cpu_type: cpuType};
res = resolution;
const addListener = () => {
// EM 是寄宿于端的,浏览器中并不存在,为防止报错需要先进行能力检测
if (EM && !hasAddListener) {
hasAddListener = true;
EM.AddListener('framework', (event, data) => {
// if (data && data.indexOf(extensionId) > -1) {
// try {
// EMListenerId = JSON.parse(data)[extensionId];
// defaultApi.writeLog(`ZEGO::addListener-- EMListenerId: ${EMListenerId}`);
// } catch (error) {}
// }
if (!event || !data) {
return;
}
// console.log('framework',event,data);
let _data = JSON.parse(data);
switch (event) {
case 'SystemLocalTimeChange':
timestamp = Number(_data.server_time_diff);
console.log(`SystemLocalTimeChange:: server_time_diff: ${_data.server_time_diff} ${timestamp}`);
break;
};
})
}
};
addListener();
const getSystemInformation = () => {
if (EM) {
return new Promise((resolve, reject) => {
EM.system.GetSystemInformation((code, msg) => {
defaultApi.writeLog(`GetSystemInformation Code: ${code}\nMessage: ${msg}`);
resolve({
code,
msg,
});
});
});
}
}
getRes();
const ReportLog = (logstore = 'live_log', args) => {
if (EM) {
// defaultApi.writeLog(`ReportLog event_name: ${args.lc.event_name}`);
return new Promise((resolve, reject) => {
EM.system.ReportLog(logstore, JSON.stringify(args), (code, msg) => {
defaultApi.writeLog(`ReportLog Code: ${code}\nMessage: ${msg}`);
resolve({
code,
msg,
});
});
});
}
};
const dataReport = async (args) => {

@@ -30,81 +78,124 @@ if (!window.zby_sdk_init_params) {

}
const {userId, institutionId, projectId, userName, role, roomId, teacherId, liveId, serviceStatus} = window.zby_sdk_init_params;
const {userId, institutionId, orgId, userName, role, roomId, teacherId, liveId, serviceStatus, classMode, liveType} = window.zby_sdk_init_params;
if (!userId || !institutionId) {
return false;
}
// 写死
if(timestamp == undefined){
getSystemInformation().then(res => {
timestamp = Number(JSON.parse(res.msg).server_time_diff);
console.log('wolaile',timestamp);
}).catch ( e => {
// timestamp = 0;
console.log('timestamp11',e,timestamp);
});
} else {
console.log('timestamp12',timestamp);
}
if(!baseData1) {
console.log('baseData11',baseData1);
toolApi.getCommonData(liveExt.version).then(res => {
baseData1 = res.msg;
// console.log('baseData12',baseData1);
});
// console.log('baseData13',baseData1);
}
// if (!baseData2) {
// baseData2 = JSON.parse((await zbysdk.getSDKVersion()).msg).ret;
// console.log('hsghsg_baseData2',baseData2);
// }
if (args.event_name === 'live_quality_hb') {
Object.assign(args, {service_status: serviceStatus});
st = 5;
} else {
st = 2;
}
// 公共字段
const args0 = {
time: util.currentTimeString(),
ptl_version: 9,
cmd_id: 610,
js_version: version,
class_type: 2
bl:1,
bt:1,
ft:args.logstore? '300' : liveType,
st: st,
tid:'-',
uid: userId,
pid:liveId,
log_ver: 1,
guid: '-',
// js_version: version,
// class_type: 2
};
// 上层传入
//基础信息
const args1 = {
uid: userId,
role: role || 'student',
uname: userName,
project_id: projectId,
streamid: `${institutionId}_${roomId}_${userId}_1`,
room_id: roomId,
teacher_id: teacherId,
live_id:liveId
js_version: version,
live_sdk_type: window.zbyAVSDK_init_sdk_type,
live_sdk_version: '-',
streamid: `${institutionId}_${roomId}_${userId}_${orgId || 1}`
};
if (!sdk_version) {
sdk_version = (await liveApi.getLiveSdkVersion()).msg.sdk_version;
console.log('baseData14',baseData1);
if (baseData1) {
console.log('baseData15');
const {guid, tm_ext_version, zego_ext_version} = baseData1;
// console.log('hsg_bbh',baseData1, tm_ext_version, zego_ext_version);
Object.assign(window.zby_sdk_init_params, {guid});
Object.assign(args0, {guid});
Object.assign(args1, {live_sdk_version: window.zbyAVSDK_init_sdk_type == 'rtc'? tm_ext_version : zego_ext_version});
}
if (!baseData) {
baseData = (await toolApi.getCommonData(liveExt.version)).msg;
if (baseData2) {
// console.log('hsg_bbh',baseData2);
Object.assign(args1, {media_sdk_version: baseData2});
}
if (args.action !='leave_room' && args.action !='stop_pull') {
stream_type = window.zbyAVSDK_init_sdk_type === 'rtc' ? await liveApi.getStreamType():await zbyApi.getStreamType_zego();
if (args.event_name === 'sdk_change') {
baseData1 = null;
baseData2 = null;
}
let args2 = {
res,
stream_type,
sdk_version
};
if (baseData) {
const {guid, version, os_type, os_version} = baseData;
Object.assign(args2, {guid, version, os_type, os_version});
}
if (args.action === 'heartbeat') {
Object.assign(heartbeatStaticArgs, {service_status: serviceStatus});
Object.assign(args, heartbeatStaticArgs);
// console.log('heartbeat',args);
}
const reportData = {
// 其他
sdk_type: window.zbyAVSDK_init_sdk_type,
// sdk_type: window.zbyAVSDK_init_sdk_type,
lid:++zbysdk.log_id,
stime: timestamp ? new Date().getTime() + timestamp : new Date().getTime(),
...args0,
...args1,
...args2,
...args
// ...args1,
// ...args2,
// lc:JSON.stringify({...args1,...args})
lc:{...args1,...args}
};
// defaultApi.writeLog(`dataReport--${JSON.stringify(reportData)}`);
dabanDataReport(reportData);
defaultApi.writeLog(`log_id--${zbysdk.log_id} event_name: ${args.event_name}`);
ReportLog(args.logstore, reportData);
// dabanDataReport(reportData);
};
export default {
timestamp,
// 心跳
heartbeat(args) {
dataReport({
action: 'heartbeat',
...args,
event_name: 'live_quality_hb',
event_content:{...args}
});
},
//设备检测(音视频)
deviceTest(args){
dataReport({
action: 'device_test',
...args
});
},
// deviceTest(args){
// dataReport({
// event_name: 'device_test',
// event_content:{...args}
// });
// },
//直播切换线路
sdkChange(args){
dataReport({
action: 'sdkchange',
...args
event_name: 'sdk_change',
event_content:{...args}
});

@@ -115,3 +206,3 @@ },

// dataReport({
// action: 'toggle_mic',
// event_name: 'toggle_mic',
// ...args

@@ -123,4 +214,4 @@ // });

dataReport({
action: 'av_connect',
...args
event_name: 'av_connect',
event_content:{...args}
});

@@ -131,4 +222,4 @@ },

dataReport({
action: 'join_room',
...args
event_name: 'join_room',
event_content:{...args}
});

@@ -139,5 +230,4 @@ },

dataReport({
action: 'join_room_result',
...args,
...window.zby_sdk_req_get_cloud_response
event_name: 'join_room_result',
event_content:{...args}
});

@@ -148,11 +238,11 @@ },

dataReport({
action: 'start_publish',
...args
event_name: 'start_publish',
event_content:{...args}
});
},
//推流结果
async publishResult(args){
publishResult(args){
dataReport({
action: 'publish_result',
...args
event_name: 'publish_result',
event_content:{...args}
});

@@ -163,4 +253,4 @@ },

dataReport({
action: 'start_pull',
...args
event_name: 'start_pull',
event_content:{...args}
});

@@ -171,4 +261,4 @@ },

dataReport({
action: 'pull_result',
...args
event_name: 'pull_result',
event_content:{...args}
});

@@ -179,4 +269,4 @@ },

dataReport({
action: 'stop_pull',
...args
event_name: 'stop_pull',
event_content:{...args}
});

@@ -187,11 +277,18 @@ },

dataReport({
action: 'stop_publish',
...args
event_name: 'stop_publish',
event_content:{...args}
});
},
//推拉流事件
streamEvent(args){
dataReport({
event_name: 'on_stream_event',
event_content:{...args}
});
},
//退出教室
leaveRoom(args){
dataReport({
action: 'leave_room',
...args
event_name: 'leave_room',
event_content:{...args}
});

@@ -201,4 +298,4 @@ },

dataReport({
action: 'split_state',
...args
event_name: 'split_state',
event_content:{...args}
});

@@ -209,4 +306,4 @@ },

dataReport({
action: 'device_change',
...args
event_name: 'device_change',
event_content:{...args}
});

@@ -217,12 +314,136 @@ },

dataReport({
action: 'set_device',
...args
event_name: 'set_device',
event_content:{...args}
});
},
turnPushResult(args){
firstVideoSize(args){
dataReport({
action: 'turn_push_result',
...args
event_name: 'first_video',
event_content:{...args}
});
},
firstAudioSize(args){
dataReport({
event_name: 'first_audio',
event_content:{...args}
});
},
//学生按住发言按钮
startLianMai(args){
dataReport({
event_name: 'start_lianmai',
event_content:{...args}
});
},
//学生取消发言按钮时上报
endLianMai(args){
dataReport({
event_name: 'end_lianmai',
event_content:{...args}
});
},
//收到开麦消息上报
getStartLianMai(args){
dataReport({
event_name: 'get_start_lianmai',
event_content:{...args}
});
},
//收到关麦消息上报
getEndLianMai(args){
dataReport({
event_name: 'get_end_lianmai',
event_content:{...args}
});
},
setPullVoice(args){
dataReport({
event_name: 'set_pull_voice',
event_content:{...args}
});
},
// turnPushResult(args){
// dataReport({
// event_name: 'turn_push_result',
// event_content:{...args}
// });
// }
pomeloJoinRoom(args){
dataReport({
logstore:'online_class_log',
event_name: 'pomelo_join_room',
event_content:{...args}
});
},
pomeloInitGate(args){
dataReport({
logstore:'online_class_log',
event_name: 'pomelo_init_gate',
event_content:{...args}
});
},
pomeloInitChat(args){
dataReport({
logstore:'online_class_log',
event_name: 'pomelo_init_chat',
event_content:{...args}
});
},
pomeloInitWebSocket(args){
dataReport({
logstore:'online_class_log',
event_name: 'pomelo_init_websocket',
event_content:{...args}
});
},
pomeloSendMsg(args){
dataReport({
logstore:'online_class_log',
event_name: 'pomelo_send_msg',
event_content:{...args}
});
},
pomeloRecvMsg(args){
dataReport({
logstore:'online_class_log',
event_name: 'pomelo_recv_msg',
event_content:{...args}
});
},
initFinished(args){
dataReport({
event_name: 'init_finished',
event_content:{...args}
});
},
takeSnapShot(args){
dataReport({
event_name: 'take_snap_shot',
event_content:{...args}
});
},
remoteNetworkQuality(args){
dataReport({
event_name: 'remote_network_quality',
event_content:{...args}
});
},
localNetworkQuality(args){
dataReport({
event_name: 'local_network_quality',
event_content:{...args}
});
},
localConnectStatus(args){
dataReport({
event_name: 'local_connect_status',
event_content:{...args}
});
},
pushStreamError(){
},
pushStreamWarning(){
}
};
/*
* @Author: why
* @Date: 2020-07-23 21:02:08
* @LastEditors: why
* @LastEditTime: 2020-09-10 16:26:50
* @LastEditors: Please set LastEditors
* @LastEditTime: 2021-06-02 19:05:07
* @Description:

@@ -11,3 +11,3 @@ */

const noWriteLogNoticeNames = ['playerVolumeChanged', 'volume_change', 'real_time_mic_volume', 'pull_quality', 'push_quality'];
const noWriteLogNoticeNames = ['playerVolumeChanged', 'volume_change', 'real_time_mic_volume', 'pull_quality', 'push_quality', 'push_loss_delay', 'play_loss_delay'];
setTimeout(() => {

@@ -64,2 +64,8 @@ SDK.noWriteLogNoticeNames = noWriteLogNoticeNames;

},
useredCamera(data) {
notice({
type: 'usered_camera',
data
});
},
// 播放器音量变化

@@ -161,2 +167,34 @@ playerVolumeChanged(data) {

},
pushFlowSuccess(data) {
notice({
type:'pushFlowSuccess',
data
});
},
// SDK自动重试推流成功
retryPushFlowSuccess(data) {
notice({
type:'retryPushFlowSuccess',
data
});
},
// SDK自动重试拉流成功
retryPullFlowSuccess(data) {
notice({
type:'retryPullFlowSuccess',
data
});
},
pullFlowResult(data) {
notice({
type:'pullFlowResult',
data
});
},
pullAudioFlowError(data) {
notice({
type:'pullAudioFlowError',
data
});
},

@@ -189,2 +227,11 @@ // ----------播放器--------

},
//zego 通道id占用尽
overMaxConnect() {
notice({
type: 'overMaxConnect',
data: {
message: 'ZEGO:: all uiChnIndexs are used'
}
})
},
// 拉流质量

@@ -204,2 +251,14 @@ pullQuality(data) {

},
pushLossAndDelay(data) {
notice({
type:'push_loss_delay',
data
});
},
playLossAndDelay(data) {
notice({
type:'play_loss_delay',
data
});
},
// 更新本地预览视频,在切换SDK完成之后,会重新调起本地摄像头,需要更新本地预览的画面

@@ -295,3 +354,61 @@ updateLocalPreview(data) {

});
},
zegoRecoveryStart(){
notice({
type:'zego_recovery_start',
data: {
message: 'zego is killed'
}
})
},
liveRecoveryStart(){
notice({
type:'live_recovery_start',
data: {
message: 'live is killed'
}
})
},
seiRecived(data){
notice({
type:'sei_recived',
data
})
},
pushStreamError(data){
notice({
type:'push_stream_error',
data
})
},
pushStreamWarning(data){
notice({
type:'push_stream_warning',
data
})
},
pullStreamError(data){
notice({
type:'pull_stream_error',
data
})
},
pullStreamWarning(data){
notice({
type:'pull_stream_warning',
data
})
},
remoteNetworkQuality(data){
notice({
type:'remote_network_quality',
data
})
},
localNetworkQuality(data){
notice({
type:'local_network_quality',
data
})
}
};

@@ -5,3 +5,3 @@ /*

* @LastEditors: Please set LastEditors
* @LastEditTime: 2020-10-19 14:19:21
* @LastEditTime: 2021-05-24 16:47:40
* @Description:

@@ -63,11 +63,2 @@ */

},
/**
* @function 获取设备状态
* * @param { string } devicename //(设备名称,可为空)
* * @param { number } devicetype //(设备类型,1摄像头,2麦克风),3扬声器(mac端没有)
* @return: Promise
*/
getDeviceState(devicename, devicetype) {
return callMethod('GetDeviceState', {devicetype, devicename});
},
// 初始化

@@ -77,9 +68,10 @@ init(){

if (EM) {
return new Promise(resolve => {
EM.Load(toolExt.name, toolExt.version, false, ()=>{
resolve();
});
// return new Promise(resolve => {
EM.Load(toolExt.name, toolExt.version, false, ()=>{
// resolve();
console.log('loadExt :zby_toolExt ......');
});
// });
}
}
};

@@ -41,6 +41,3 @@ /*

return BASSAPI.saveImgToDesktop(buf, fileName);
},
getDeviceState(devicename, devicetype) {
return callMethod('GetDeviceState', {devicetype, devicename});
}
};
import MD5 from 'md5';
import sha256 from './sha256.js';
import { getNetworkTimestampApi } from '../network/api';
export default {
// timestamp : 0,
// diffTime : 0,
/**

@@ -79,8 +82,8 @@ * run the callback unitl checkFlag return true

const timestamp = new Date().getTime();
const UUID = this.uuid();
const RDM = this.uuid();
return {
appId,
UUID,
RDM,
timestamp,
Authorization: sha256.hmacsha256(key, `${appId}&${timestamp}&${UUID}`)
Authorization: sha256.hmacsha256(key, `${appId}&${timestamp}&${RDM}`)
};

@@ -185,3 +188,7 @@ },

},
//notice返回端上想要的uid
getUidByStreamId(streamId) {
if (streamId.split('_').length == 5) {
return streamId;
};
if (streamId && streamId.indexOf('_') > 0) {

@@ -193,2 +200,10 @@ return streamId.split('_')[2];

},
//数据上报返回真正的uid
getUidByStreamIdDr(streamId) {
if (streamId && streamId.indexOf('_') > 0) {
return streamId.split('_')[2];
} else {
return streamId;
}
},
toFixed(num, bit = 2) {

@@ -204,4 +219,4 @@ let backNum;

getStreamId(args) {
const {institutionId, roomId, userId, groupId} = args;
return `${institutionId}_${groupId || roomId}_${userId}_1`;
const {institutionId, roomId, userId, groupId, orgId} = args;
return `${institutionId}_${groupId || roomId}_${userId}_${orgId || window.zby_sdk_init_params.orgId || 1}`;
},

@@ -252,2 +267,37 @@ getConfId(institutionId, roomId) {

},
getChromeVersion() {
let chromeVersion = navigator.userAgent;
console.log('chromeVersion',chromeVersion);
let res = chromeVersion.search(/Chrome\/68/);
// res == -1 ;//非68版本要升级
let isUpdateChromeVersion = res < 0 ? true : false;
return isUpdateChromeVersion;
},
// 获取网络时间戳
// async getNetworkTimeStamp() {
// let res;
// try {
// res = await getNetworkTimestampApi();
// } catch (e){
// console.log('getNetworkTimeStamp1',e);
// }
// const res1 = new Date().getTime();
// // let timestamp = 0;
// if (res && res.data.t) {
// this.timestamp = +res.data.t;
// this.diffTime = this.timestamp - res1;
// console.log('getNetworkTimeStamp10');
// } else {
// this.timestamp = new Date().getTime();
// this.diffTime = 0;
// console.log('getNetworkTimeStamp11');
// // const res1 = await getNetworkTimestampApi('suning');
// // if (res1.status === 200) {
// // timestamp = +res1.data.sysTime1 * 1000;
// // }
// }
// console.log('getNetworkTimeStamp2',this.timestamp,res1,this.diffTime);
// // await this.getDiffTime();
// // return this.timestamp;
// },
//防抖

@@ -254,0 +304,0 @@ // debounce(fn,wait){

@@ -9,6 +9,138 @@ /*

*/
import { utilitiesExt } from '../config/config';
import defaultApi from '../default';
// 扩展标识
const extensionId = 'utilities_ext';
// rtc小班课=0;rtc大班课=1
const classType = 0;
/**
* @function 调用端提供的回调方法
* @param name:String 回调方法名
* @param args 回调参数
* @return Promise | void
*/
const callMethod = (name, args) => {
// EM 是寄宿于端的,浏览器中并不存在,为防止报错需要先进行能力检测
if (EM) {
return new Promise((resolve, reject) => {
EM.CallMethod(
extensionId,
name,
JSON.stringify({...args, classType}),
(code, msg) => {
defaultApi.writeLog(`${name} Code: ${code}\nMessage: ${msg}\nParams: ${JSON.stringify({...args, classType})}`);
resolve({
code,
msg
});
}
);
});
}
};
/**
* @function 加载 Zego 扩展
* @param extensionVersion:String 扩展版本号,必选
* @return Promise | void
*/
(function loadUtils() {
// EM 是寄宿于端的,浏览器中并不存在,为防止报错需要先进行能力检测
if (EM) {
// return new Promise((resolve, reject) => {
EM.Load(
extensionId,
utilitiesExt.version,
false,
(code, msg) => {
defaultApi.writeLog(`loadUtils Code: ${code}\nMessage: ${msg}`);
console.log('loadExt :zby_utilsExt ......');
// resolve({
// code,
// msg
// });
}
);
// });
}
})();
/**
* @function 卸载 Zego 扩展
* @return Promise | void
*/
const unloadUtils = () => {
// EM 是寄宿于端的,浏览器中并不存在,为防止报错需要先进行能力检测
if (EM) {
return new Promise((resolve, reject) => {
EM.UnLoad(
extensionId,
(code, msg) => {
defaultApi.writeLog(`unloadUtils Code: ${code}\nMessage: ${msg}`);
resolve({
code,
msg
});
}
);
});
}
};
export const isAppleM1 = () => {
defaultApi.writeLog(`获取设备是否是M1设备: isAppleM1 --start`);
return new Promise((resolve,reject) => {
EM.system.IsAppleSilicon((code, msg) => {
defaultApi.writeLog(`获取设备是否是M1设备: isAppleM1 code:${code} msg:${msg}`);
let data = JSON.parse(msg);
resolve({ code, data });
});
})
};
/**
* @function 获取设备状态
* * @param { string } devicename //(设备名称,可为空)
* * @param { number } devicetype //(设备类型,1摄像头,2麦克风),3扬声器(mac端没有)
* @return: Promise
*/
const getDeviceState = (devicename, devicetype) => {
return callMethod('GetDeviceState', {devicetype, devicename});
};
//获取设备状态
export const getDevicePermissionsFun = async (devicename, devicetype) => {
defaultApi.writeLog(`sdk action : getDevicePermissionsFun devicename: ${devicename} devicetype: ${devicetype}`);
try {
let res =JSON.parse((await getDeviceState(devicename, devicetype)).msg).devicestate
// let codemsg = {
// '0':'有权限可用',
// '1':'没有询问是否开启权限',
// '2':'用户未授权',
// '3':'未授权,家长限制',
// '4':'未知权限类型',
// '5':'操作系统不支持权限管理',
// '6':'不可用(win10隐私关闭)',
// '7':'设备占用'
// };
// return codemsg[res];
console.log('getDevicePermissions_res',res);
return res;
} catch (error){
console.log('getDevicePermissions_error',error)
return 'error';
};
};
export const setMediaPermissionFun = (enableVideo, enableMicrophone) =>{
return callMethod('SetMediaPermission',{enableVideo, enableMicrophone});
};
export const deviceListReport = {
cameraList: {},
micList: {},
speakerList: {}
speakerList: {},
};

@@ -11,2 +11,3 @@ /**

import talrtcsdk from './talrtc-sdk.js';
import trtcsdk from './trtc-sdk.js';
import defaultApi from '../default';

@@ -17,2 +18,3 @@ import util from '../util/util';

const TALRTC = 'talrtc';
const TRTC = 'trtc';
// rtc 底层流媒体数据上报地址配置

@@ -23,2 +25,7 @@ const rtcReportUrl = {

};
const sdkVale = {
zego: 4, //4代表zego采集麦克风+扬声器+拉流声音+外部混音
talrtc: 101, //101代表talrtc采集声音
trtc: 102, //102代表trtc采集声音
}

@@ -28,19 +35,57 @@ /**

*/
// export const deviceCheckerInit = async (extension, env) => {
// await rtcsdk.loadRtc(extension.version.rtc);
// // if (env) {
// // await rtcsdk.setEventReportSvr(rtcReportUrl[env]);
// // }
// let streamId = 'deviceCheckerInit';
// await rtcsdk.createRtcCapture(streamId);
// await rtcsdk.setCaptureRenderID(streamId);
// await rtcsdk.setCaptureStreamId(streamId);
// await rtcsdk.setCameraParam(320, 240, 15);
// await rtcsdk.setBitRate(100000);
// await rtcsdk.setPreviewMute(true);
// await rtcsdk.muteLocalVideo(true);
// await rtcsdk.startPreview();
// setDefaultZbySDKDeviceCheckerInit();
// window.zbyAVSDK_init_sdk_type = 'rtc';
// defaultApi.writeLog('change zbyAVSDK_init_sdk_type to rtc , from avsdk device check init');
// };
/**
* @function 设备检测初始化(新)
*/
export const deviceCheckerInit = async (extension, env) => {
await rtcsdk.loadRtc(extension.version.rtc);
// if (env) {
// await rtcsdk.setEventReportSvr(rtcReportUrl[env]);
// }
let streamId = 'deviceCheckerInit';
await rtcsdk.createRtcCapture(streamId);
await rtcsdk.setCaptureRenderID(streamId);
await rtcsdk.setCaptureStreamId(streamId);
await rtcsdk.setCameraParam(320, 240, 15);
await rtcsdk.setBitRate(100000);
await rtcsdk.setPreviewMute(true);
await rtcsdk.muteLocalVideo(true);
await rtcsdk.startPreview();
setDefaultZbySDKDeviceCheckerInit();
window.zbyAVSDK_init_sdk_type = 'rtc';
defaultApi.writeLog('change zbyAVSDK_init_sdk_type to rtc , from avsdk device check init');
await zegosdk.loadZego(extension.version.zego);
//此时课堂外端上无法获取roomid,假数据模拟,待确定userId-万一重复(不推流)
zegosdk.addListener('deviceCheckerInit')
await zegosdk.startEngine(2646760764,'/XpDtuxpv4TrBoNTozIs6waxK6LF/mGZK0jVYo003Ws=')//也是需要参数的,还要区分测试环境和线上环境
await zegosdk.setVideoCaptureResolution(320, 240);
await zegosdk.setVideoBitrate(100000);
await zegosdk.setVideoFPS(15);
await zegosdk.startSoundLevelMonitor();
await zegosdk.setSoundLevelMonitorCycle(500);
let isDeviceCheckInitFinished = zegosdk.getDeviceCheckInitStatus();
if(isDeviceCheckInitFinished) {
zegosdk.setDeviceCheckInitStatus();
window.zbyAVSDK_init_sdk_type = 'zego';
defaultApi.writeLog('isDeviceCheckInitFinished1',isDeviceCheckInitFinished)
} else {
await new Promise((resolve, reject) => {
let timer = null;
timer = setInterval(() => {
isDeviceCheckInitFinished = zegosdk.getDeviceCheckInitStatus();
defaultApi.writeLog('isDeviceCheckInitFinished2',isDeviceCheckInitFinished)
if (isDeviceCheckInitFinished) {
zegosdk.setDeviceCheckInitStatus();
clearInterval(timer);
resolve();
}
defaultApi.writeLog('isDeviceCheckInitFinished3',isDeviceCheckInitFinished)
}, 30);
});
window.zbyAVSDK_init_sdk_type = 'zego';
}
defaultApi.writeLog('change zbyAVSDK_init_sdk_type to zego , from avsdk device check init');
};

@@ -52,22 +97,25 @@

export const setDefaultZbySDKDeviceCheckerInit = async () => {
if (window.zbyAVSDK_device_checker_init) {
if (!window.zbyAVSDK_device_checker_init.microphone) {
if(window.zbyAVSDK_device_checker_init){
if(!window.zbyAVSDK_device_checker_init.microphone){
window.zbyAVSDK_device_checker_init.microphone = {
hasTest: false,
list: [],
use: ''
use: '',
name:''
};
};
if (!window.zbyAVSDK_device_checker_init.camera) {
if(!window.zbyAVSDK_device_checker_init.camera){
window.zbyAVSDK_device_checker_init.camera = {
hasTest: false,
list: [],
use: ''
use: '',
name: ''
};
};
if (!window.zbyAVSDK_device_checker_init.speaker) {
if(!window.zbyAVSDK_device_checker_init.speaker){
window.zbyAVSDK_device_checker_init.speaker = {
hasTest: false,
list: [],
use: ''
use: '',
name: ''
};

@@ -80,3 +128,4 @@ };

list: [],
use: ''
use: '',
name: ''
},

@@ -86,3 +135,4 @@ camera: {

list: [],
use: ''
use: '',
name: ''
},

@@ -92,3 +142,4 @@ speaker: {

list: [],
use: ''
use: '',
name: ''
}

@@ -118,8 +169,16 @@ };

// /**
// * @function 结束设备检测
// */
// export const stopCheckDevice = async () => {
// defaultApi.writeLog('zby_av_sdk stop checkDevice');
// return rtcsdk.stopCheckDevice();
// };
/**
* @function 结束设备检测
*/
export const stopCheckDevice = async () => {
export const stopCheckDevice = async () => {
defaultApi.writeLog('zby_av_sdk stop checkDevice');
return rtcsdk.stopCheckDevice();
return zegosdk.stopCheckDevice();
};

@@ -156,8 +215,8 @@

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.recoverSdk(config);
case ZEGO:
case RTC:
return rtcsdk.recoverSdk(config);
case ZEGO:
// return zegosdk.recoverSdk(dealSDKMsg);
default:
break;
default:
break;
}

@@ -196,11 +255,13 @@ };

switch (sdk_type) {
case RTC:
return rtcsdk.init(config);
case ZEGO:
return zegosdk.init(config);
case TALRTC:
return talrtcsdk.init(config);
default:
break;
}
case RTC:
return rtcsdk.init(config);
case ZEGO:
return zegosdk.init(config);
case TALRTC:
return talrtcsdk.init(config);
case TRTC:
return trtcsdk.init(config);
default:
break;
}

@@ -215,10 +276,12 @@ };

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.unloadRtc();
case ZEGO:
return zegosdk.unloadZego();
case TALRTC:
return talrtcsdk.unloadTalrtc();
default:
break;
case RTC:
return rtcsdk.unloadRtc();
case ZEGO:
return zegosdk.unloadZego();
case TALRTC:
return talrtcsdk.unloadTalrtc();
case TRTC:
return trtcsdk.unloadTrtc();
default:
break;
}

@@ -233,11 +296,13 @@ };

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return await rtcsdk.getCameraDevice();
case ZEGO:
return await zegosdk.getVideoDeviceList();
case TALRTC:
return await talrtcsdk.getCameraDeviceList();
default:
return await rtcsdk.getCameraDevice();
break;
case RTC:
return await rtcsdk.getCameraDevice();
case ZEGO:
return await zegosdk.getVideoDeviceList();
case TALRTC:
return await talrtcsdk.getCameraDeviceList();
case TRTC:
return await trtcsdk.getCameraDeviceListTrtc();
default:
return await zegosdk.getVideoDeviceList();
break;
}

@@ -248,13 +313,15 @@ };

* @function 指定摄像头
* @param deviceId: String 摄像头 id,必须
* @param deviceId:String 摄像头 id,必须
* @return Promise | void
*/
export const setCameraDevice = async (deviceId) => {
export const setCameraDevice = async (deviceId, operationType) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return await rtcsdk.setCameraDevice({deviceId});
return await rtcsdk.setCameraDevice({deviceId, operationType});
case ZEGO:
return await zegosdk.setVideoDevice({deviceId, operationType});
case TALRTC:
return await talrtcsdk.setCameraDevice({deviceId});
return await talrtcsdk.setCameraDevice({ deviceId });
case TRTC:
return await trtcsdk.setVideoDevice({deviceId});
default:

@@ -272,24 +339,27 @@ break;

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.openOrCloseCamera(operation);
case ZEGO:
return zegosdk.enableCamera(operation);
case TALRTC:
return talrtcsdk.openOrCloseCamera(operation);
default:
break;
case RTC:
return rtcsdk.openOrCloseCamera(operation);
case ZEGO:
return zegosdk.enableCamera(operation);
case TALRTC:
return talrtcsdk.openOrCloseCamera(operation);
case TRTC:
return trtcsdk.openOrCloseCamera(operation);
default:
break;
}
};
// 是否推画面 false/不推 true/推
//是否推画面 false/不推 true/推
export const setPushStreamVideo = (operation) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.muteStreamVideo(!operation);
case ZEGO:
return zegosdk.setMuteStreamVideo(!operation);
case TALRTC:
return talrtcsdk.muteLocalVideo(!operation);
default:
break;
case RTC:
return rtcsdk.muteStreamVideo(!operation);
case ZEGO:
return zegosdk.setMuteStreamVideo(!operation);
case TALRTC:
return talrtcsdk.muteLocalVideo(!operation);
case TRTC:
default:
break;
}

@@ -306,11 +376,11 @@ };

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.muteStreamAudio(!operation);
case ZEGO:
return zegosdk.setMuteStreamAudio(!operation);
case TALRTC:
return talrtcsdk.muteLocalAudio(!operation);
case TRTC:
default:
break;
case RTC:
return rtcsdk.muteStreamAudio(!operation);
case ZEGO:
return zegosdk.setMuteStreamAudio(!operation);
case TALRTC:
return talrtcsdk.muteLocalAudio(!operation);
case TRTC:
default:
break;
}

@@ -326,9 +396,10 @@ };

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.startPreview(operation);
case TALRTC:
return talrtcsdk.startPreview(operation);
case ZEGO:
default:
break;
case RTC:
return rtcsdk.startPreview(operation);
case TALRTC:
return talrtcsdk.startPreview(operation);
case ZEGO:
case TRTC:
default:
break;
}

@@ -344,9 +415,10 @@ };

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.stopPreview(operation);
case TALRTC:
return talrtcsdk.stopPreview(operation);
case ZEGO:
default:
break;
case RTC:
return rtcsdk.stopPreview(operation);
case TALRTC:
return talrtcsdk.stopPreview(operation);
case ZEGO:
case TRTC:
default:
break;
}

@@ -360,12 +432,14 @@ };

*/
export const teacherStartLinkMic = (mode) => { // 暂无调用
export const teacherStartLinkMic = (mode) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.teacherStartLinkMic(mode);
case ZEGO:
return zegosdk.teacherStartLinkMic(mode);
case TALRTC:
return talrtcsdk.teacherStartLinkMic(mode);
default:
break;
case RTC:
return rtcsdk.teacherStartLinkMic(mode);
case ZEGO:
return zegosdk.teacherStartLinkMic(mode);
case TALRTC:
return talrtcsdk.teacherStartLinkMic(mode);
case TRTC:
return trtcsdk.teacherStartLinkMic(mode)
default:
break;
}

@@ -379,12 +453,14 @@ };

*/
export const teacherStopLinkMic = (mode) => { // 暂无调用
export const teacherStopLinkMic = (mode) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.teacherStopLinkMic(mode);
case ZEGO:
return zegosdk.teacherStopLinkMic(mode);
case TALRTC:
return talrtcsdk.teacherStopLinkMic(mode);
default:
break;
case RTC:
return rtcsdk.teacherStopLinkMic(mode);
case ZEGO:
return zegosdk.teacherStopLinkMic(mode);
case TALRTC:
return talrtcsdk.teacherStopLinkMic(mode);
case TRTC:
return trtcsdk.teacherStopLinkMic(mode);
default:
break;
}

@@ -405,13 +481,13 @@ };

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.startLocalOrRemotePreview(args.isLocal, args.streamId, args.domId);
case ZEGO:
return zegosdk.startLocalOrRemotePreview(args.isLocal, args.streamId, args.domId, args.isTeacherNewWindowPreview);
case TRTC:
return trtcsdk.startLocalOrRemotePreview(args.isLocal, args.streamId, args.domId, args.isTeacherNewWindowPreview);
case TALRTC:
return talrtcsdk.startLocalOrRemotePreview(args.isLocal, args.streamId, args.domId);
default:
return rtcsdk.startLocalOrRemotePreview(args.isLocal, args.streamId, args.domId);
break;
case RTC:
return rtcsdk.startLocalOrRemotePreview(args.isLocal, args.streamId, args.domId);
case ZEGO:
return zegosdk.startLocalOrRemotePreview(args.isLocal, args.streamId, args.domId, args.isTeacherNewWindowPreview);
case TALRTC:
return talrtcsdk.startLocalOrRemotePreview(args.isLocal, args.streamId, args.domId, args.isTeacherNewWindowPreview);
case TRTC:
return trtcsdk.startLocalOrRemotePreview(args.isLocal, args.streamId, args.domId, args.isTeacherNewWindowPreview);
default:
return zegosdk.startLocalOrRemotePreview(args.isLocal, args.streamId, args.domId);
break;
}

@@ -424,12 +500,14 @@ };

*/
export const startPushFlow = async () => {
export const startPushFlow = async (streamid, idx) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return await rtcsdk.startPush();
case ZEGO:
return await zegosdk.startPublish2(streamid, idx);
case TALRTC:
return await talrtcsdk.startPush(streamid);
default:
break;
case RTC:
return await rtcsdk.startPush();
case ZEGO:
return await zegosdk.startPublish2(streamid, idx);
case TALRTC:
return await talrtcsdk.startPush(streamid); // 可能为空,函数内部有判断逻辑,为空时,根据规则生成streamId
case TRTC:
return await trtcsdk.startPush(streamid, idx);//流id需要做兼容处理
default:
break;
}

@@ -442,12 +520,14 @@ };

*/
export const stopPushFlow = () => {
export const stopPushFlow = (idx, streamId) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.stopPush();
case ZEGO:
return zegosdk.stopPublish();
case TALRTC:
return talrtcsdk.stopPush();
default:
break;
case RTC:
return rtcsdk.stopPush();
case ZEGO:
return zegosdk.stopPublish(idx);
case TALRTC:
return talrtcsdk.stopPush(streamId);
case TRTC:
return trtcsdk.stopPush(idx);
default:
break;
}

@@ -467,6 +547,10 @@ };

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
case RTC:
//判断是否是M1设备
if (window.zby_isM1Type) {
return;
}
return {
sdk_type: RTC,
videoSrc: rtcsdk.initPullFlow(args.streamId, args.domId, args.mute, args.renderId, args.notAutoPlay, args.audioOnly, args.needScale, args.scaleParams)
videoSrc: rtcsdk.initPullFlow(args.streamId, args.domId, args.mute, args.renderId, args.notAutoPlay, args.audioOnly, args.needScale, args.scaleParams, args.streamType)
};

@@ -483,2 +567,7 @@ case ZEGO:

};
case TRTC:
return {
sdk_type: TRTC,
videoSrc: trtcsdk.initPullFlow(args.streamId, args.domId, args.mute, args.renderId, args.notAutoPlay, args.audioOnly)
};
default:

@@ -496,10 +585,12 @@ break;

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.play(streamId);
case ZEGO:
return zegosdk.playStream(streamId);
case TALRTC:
return talrtcsdk.startPlay(streamId);
default:
break;
case RTC:
return rtcsdk.play(streamId);
case ZEGO:
return zegosdk.playStream(streamId);
case TALRTC:
return talrtcsdk.startPlay(streamId);
case TRTC:
return trtcsdk.startPlay(streamId);
default:
break;
}

@@ -510,4 +601,4 @@ };

* @function 暂停拉指定的流
* @param streamId: String 被拉取的流的 id,必选
* @param recovery: Boolean 是否回收播放器, 可选
* @param streamId:String 被拉取的流的 id,必选
* @param recovery:Boolean 是否回收播放器, 可选
* @return Promise | void

@@ -517,11 +608,13 @@ */

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.stop(streamId, recovery);
case ZEGO:
return zegosdk.stopPlayStream(streamId, recovery);
case TALRTC:
return talrtcsdk.stopPlay(streamId, recovery);
default:
break;
}
case RTC:
return rtcsdk.stop(streamId, recovery);
case ZEGO:
return zegosdk.stopPlayStream(streamId, recovery);
case TALRTC:
return talrtcsdk.stopPlay(streamId, recovery);
case TRTC:
return trtcsdk.stopPlay(streamId);
default:
break;
}
};

@@ -535,10 +628,12 @@

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.stopAllPullFlow(streamId, recovery);
case ZEGO:
return zegosdk.stopAllPlayStream(streamId, recovery);
case TALRTC:
return talrtcsdk.stopPlayAll();
default:
break;
case RTC:
return rtcsdk.stopAllPullFlow(streamId, recovery);
case ZEGO:
return zegosdk.stopAllPlayStream(streamId, recovery);
case TALRTC:
return talrtcsdk.stopPlayAll();
case TRTC:
return trtcsdk.stopPlayAll();
default:
break;
}

@@ -554,10 +649,12 @@ };

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.playDestroy(streamId);
case ZEGO:
return zegosdk.stopPlayStream(streamId, true);
case TALRTC:
return talrtcsdk.stopPlay(streamId);
default:
break;
case RTC:
return rtcsdk.playDestroy(streamId);
case ZEGO:
return zegosdk.stopPlayStream(streamId, true);
case TALRTC:
return talrtcsdk.stopPlay(streamId);
case TRTC:
return trtcsdk.stopPlay(streamId);
default:
break;
}

@@ -575,10 +672,11 @@ };

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.changePullFlow(args.streamId, args.toStreamId, args.toDomId);
case ZEGO:
return zegosdk.changePullFlow(args.streamId, args.toStreamId, args.toDomId);
case TALRTC:
return talrtcsdk.changePullFlow(args.streamId, args.toStreamId, args.toDomId);
default:
break;
case RTC:
return rtcsdk.changePullFlow(args.streamId, args.toStreamId, args.toDomId);
case ZEGO:
return zegosdk.changePullFlow(args.streamId, args.toStreamId, args.toDomId);
case TALRTC:
return talrtcsdk.changePullFlow(args.streamId, args.toStreamId, args.toDomId);
case TRTC:
default:
break;
}

@@ -593,11 +691,13 @@ };

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return await rtcsdk.getSpeakerDevice();
case ZEGO:
return await zegosdk.getSpeakerDeviceList();
case TALRTC:
return await talrtcsdk.getSpeakerDeviceList();
default:
return await rtcsdk.getSpeakerDevice();
break;
case RTC:
return await rtcsdk.getSpeakerDevice();
case ZEGO:
return await zegosdk.getSpeakerDeviceList();
case TALRTC:
return await talrtcsdk.getSpeakerDeviceList();
case TRTC:
return await trtcsdk.getSpeakerDeviceListTrtc();
default:
return await zegosdk.getSpeakerDeviceList();
break;
}

@@ -608,9 +708,9 @@ };

* @function 指定扬声器
* @param deviceId: String 扬声器设备 id,必选
* @param deviceId:String 扬声器设备 id,必选
* @return Promise | void
*/
export const setSpeakerDevice = async (deviceId) => {
export const setSpeakerDevice = async (deviceId, operationType) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return await rtcsdk.setSpeakerDevice({deviceId});
return await rtcsdk.setSpeakerDevice({speakId:deviceId, operationType});
case ZEGO:

@@ -620,2 +720,4 @@ return await zegosdk.setSpeakerDevice({deviceId, operationType});

return await talrtcsdk.setSpeakerDevice({ deviceId });
case TRTC:
return await trtcsdk.setSpeakerDevice({deviceId});
default:

@@ -632,10 +734,12 @@ break;

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return JSON.parse((await rtcsdk.getSpeakerVolume()).msg).volume;
case ZEGO:
return JSON.parse((await zegosdk.getSpeakerDeviceVolume()).msg).ret;
case TALRTC:
return await talrtcsdk.getCurrentSpeakerVolume();
default:
break;
case RTC:
return JSON.parse((await rtcsdk.getSpeakerVolume()).msg).volume;
case ZEGO:
return JSON.parse((await zegosdk.getSpeakerDeviceVolume()).msg).ret;
case TALRTC:
return await talrtcsdk.getCurrentSpeakerVolume();
case TRTC:
return JSON.parse((await trtcsdk.getCurrentSpeakerVolume()).msg).speakerVolume;
default:
break;
}

@@ -646,3 +750,3 @@ };

* @function 设置扬声器音量
* @param volume: Number 扬声器音量,必选,范围 [0, 100]
* @param volume:Number 扬声器音量,必选,范围 [0, 100]
* @return Promise | void

@@ -652,10 +756,12 @@ */

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.setSpeakerVolume(volume);
case ZEGO:
return zegosdk.setSpeakerDeviceVolume(volume);
case TALRTC:
return talrtcsdk.setCurrentSpeakerVolume(volume);
default:
break;
case RTC:
return rtcsdk.setSpeakerVolume(volume);
case ZEGO:
return zegosdk.setSpeakerDeviceVolume(volume);
case TALRTC:
return talrtcsdk.setCurrentSpeakerVolume(volume);
case TRTC:
return trtcsdk.setCurrentSpeakerVolume(volume);
default:
break;
}

@@ -671,10 +777,11 @@ };

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.setSpeakerMute(mute);
case ZEGO:
return zegosdk.setSpeakerDeviceMute(mute);
case TALRTC:
return talrtcsdk.setSpeakerDeviceMute(mute);
default:
break;
case RTC:
return rtcsdk.setSpeakerMute(mute);
case ZEGO:
return zegosdk.setSpeakerDeviceMute(mute);
case TALRTC:
return talrtcsdk.setSpeakerDeviceMute(mute);
case TRTC:
default:
break;
}

@@ -689,10 +796,11 @@ };

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.getCurrentAppSessionVolume();
case ZEGO:
return zegosdk.getSpeakerSimpleVolume();
case TALRTC:
return talrtcsdk.getSpeakerSimpleVolume();
default:
break;
case RTC:
return rtcsdk.getCurrentAppSessionVolume();
case ZEGO:
return zegosdk.getSpeakerSimpleVolume();
case TALRTC:
return talrtcsdk.getSpeakerSimpleVolume();
case TRTC:
default:
break;
}

@@ -703,3 +811,3 @@ };

* @function 设置 App 应用音量
* @param volume: Number App 音量,必选,范围 [0, 100]
* @param volume:Number App 音量,必选,范围 [0, 100]
* @return Promise | void

@@ -709,12 +817,13 @@ */

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.setCurrentAppSessionVolume(volume);
case ZEGO:
return zegosdk.setSpeakerSimpleVolume(volume);
case RTC:
return rtcsdk.setCurrentAppSessionVolume(volume);
case ZEGO:
return zegosdk.setSpeakerSimpleVolume(volume);
// 由于 Agora 的 App 音量取值范围是 [0, 255],所以需要做比例兼容
// volume = Math.floor((volume / 100) * 255);
case TALRTC:
return talrtcsdk.setSpeakerSimpleVolume(volume);
default:
break;
case TALRTC:
return talrtcsdk.setSpeakerSimpleVolume(volume);
case TRTC:
default:
break;
}

@@ -725,3 +834,3 @@ };

* @function 设置 App 静音
* @param mute: Boolean 是否静音,必选
* @param mute:Boolean 是否静音,必选
* @return Promise | void

@@ -731,15 +840,14 @@ */

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.setApplicationMute(mute);
case ZEGO:
return zegosdk.setSpeakerSimpleMute(mute);
case TALRTC:
return talrtcsdk.setSpeakerSimpleMute(mute);
default:
break;
case RTC:
return rtcsdk.setApplicationMute(mute);
case ZEGO:
return zegosdk.setSpeakerSimpleMute(mute);
case TALRTC:
return talrtcsdk.setSpeakerSimpleMute(mute);
case TRTC:
default:
break;
}
};
/**

@@ -751,10 +859,13 @@ * @function 获取麦克风列表

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return await rtcsdk.getMicrophoneDevice();
case ZEGO:
return await zegosdk.getMicrophoneDeviceList();
case TALRTC:
return await talrtcsdk.getMicrophoneDeviceList();
default:
break;
case RTC:
return await rtcsdk.getMicrophoneDevice();
case ZEGO:
return await zegosdk.getMicrophoneDeviceList();
case TALRTC:
return await talrtcsdk.getMicrophoneDeviceList();
case TRTC:
return await trtcsdk.getMicrophoneDeviceListTrtc();
default:
return await zegosdk.getMicrophoneDeviceList();
break;
}

@@ -768,6 +879,6 @@ };

*/
export const setMicrophoneDevice = async (deviceId) => {
export const setMicrophoneDevice = async (deviceId, operationType) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return await rtcsdk.setMicrophoneDevice({deviceId});
return await rtcsdk.setMicrophoneDevice({deviceId, operationType});
case ZEGO:

@@ -777,2 +888,4 @@ return await zegosdk.setMicrophoneDevice({deviceId, operationType});

return await talrtcsdk.setMicrophoneDevice({ deviceId, operationType });
case TRTC:
return await trtcsdk.setMicrophoneDevice({deviceId});
default:

@@ -785,3 +898,3 @@ break;

* @function 开麦/禁麦
* @param operation: Boolean 操作类型,false -> 关闭,true -> 打开,必选
* @param operation:Boolean 操作类型,false -> 关闭,true -> 打开,必选
* @return Promise | void

@@ -791,10 +904,12 @@ */

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return await rtcsdk.setRealTimeAudioMute(!operation);
case ZEGO:
return await zegosdk.enableMic(operation);
case TALRTC:
return await talrtcsdk.openOrCloseMicrophone(operation);
default:
break;
case RTC:
return await rtcsdk.setRealTimeAudioMute(!operation);
case ZEGO:
return await zegosdk.enableMic(operation);
case TALRTC:
return await talrtcsdk.openOrCloseMicrophone(operation);
case TRTC:
return await trtcsdk.openOrCloseMicrophone(operation);
default:
break;
}

@@ -809,10 +924,12 @@ };

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.getMicrophoneVolume();
case ZEGO:
return zegosdk.getMicDeviceVolume();
case TALRTC:
return talrtcsdk.getCurrentMicrophoneVolume();
default:
break;
case RTC:
return rtcsdk.getMicrophoneVolume();
case ZEGO:
return zegosdk.getMicDeviceVolume();
case TALRTC:
return talrtcsdk.getCurrentMicrophoneVolume();
case TRTC:
return trtcsdk.getCurrentMicrophoneVolume();
default:
break;
}

@@ -823,4 +940,4 @@ };

* @function 设置麦克风音量
* @param volume: Number App 音量,必选,范围 [0, 100]
* @param mute: Boolean 是否静音
* @param volume:Number App 音量,必选,范围 [0, 100]
* @param mute:Boolean 是否静音
* @return Promise | void

@@ -830,10 +947,12 @@ */

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.setMicrophoneVolume(volume, mute);
case ZEGO:
return zegosdk.setMicDeviceVolume(volume);
case TALRTC:
return talrtcsdk.setCurrentMicrophoneVolume(volume);
default:
break;
case RTC:
return rtcsdk.setMicrophoneVolume(volume, mute);
case ZEGO:
return zegosdk.setMicDeviceVolume(volume);
case TALRTC:
return talrtcsdk.setCurrentMicrophoneVolume(volume);
case TRTC:
return trtcsdk.setCurrentMicrophoneVolume(volume);
default:
break;
}

@@ -844,3 +963,3 @@ };

* @function 控制麦克风是否静音
* @param mute: Boolean 是否静音,必选
* @param mute:Boolean 是否静音,必选
* @return Promise | void

@@ -850,10 +969,11 @@ */

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.setRealTimeAudioMute(mute);
case ZEGO:
return zegosdk.setMicDeviceMute(mute);
case TALRTC:
return talrtcsdk.muteLocalAudio(mute);
default:
break;
case RTC:
return rtcsdk.setRealTimeAudioMute(mute);
case ZEGO:
return zegosdk.setMicDeviceMute(mute);
case TALRTC:
return talrtcsdk.muteLocalAudio(mute);
case TRTC:
default:
break;
}

@@ -868,10 +988,12 @@ };

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.leaveRoom();
case ZEGO:
return zegosdk.leaveRoom();
case TALRTC:
return talrtcsdk.leaveRoom();
default:
break;
case RTC:
return rtcsdk.leaveRoom();
case ZEGO:
return zegosdk.leaveRoom();
case TALRTC:
return talrtcsdk.leaveRoom();
case TRTC:
return trtcsdk.leaveRoom();
default:
break;
}

@@ -881,4 +1003,38 @@ };

/**
* @function 反初始化
* @return Promise | void
*/
export const deinit = () => {
window.zbyAVSDK_init_sdk_type=localStorage.getItem('zbyAVSDK_init_sdk_type');
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.destroyEngine();
case ZEGO:
return zegosdk.destroyEngine();
case TALRTC:
return talrtcsdk.destroyEngine();
default:
console.error('unknown zbyAVSDK_init_sdk_type:', zbyAVSDK_init_sdk_type);
break;
}
};
//开启拉流音量监听
export const startSoundLevelMonitor = () => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
break;
case ZEGO:
return zegosdk.startSoundLevelMonitor();
case TALRTC:
// TODO StartMicrophone 里面有调用 enableAudioVolumeIndication 但目前是注释掉的状态
break;
default:
break;
}
};
/**
* @function 转推,录课
* @param type: String 动作类型,必选,'start' | 'stop' | 'pause' | 'resume'
* @param type:String 动作类型,必选,'start' | 'stop' | 'pause' | 'resume'
* @return Promise | void

@@ -888,10 +1044,11 @@ */

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.sendRecordingMsg({ cmd: type });
case ZEGO:
return zegosdk.singleRecord(type);
case TALRTC:
return talrtcsdk.controlCdnStreaming(type);
default:
break;
case RTC:
return rtcsdk.sendRecordingMsg({ cmd: type });
case ZEGO:
return zegosdk.singleRecord(type);
case TALRTC:
return talrtcsdk.controlCdnStreaming(type);
case TRTC:
default:
break;
}

@@ -902,4 +1059,4 @@ };

* @function 听不听指定的用户的声音
* @param streamId: String 被拉取的流的 id,必选
* @param mute: Boolean 是否静音,必选,true -> 静音,false -> 不静音
* @param streamId:String 被拉取的流的 id,必选
* @param mute:Boolean 是否静音,必选,true -> 静音,false -> 不静音
* @return Promise | void

@@ -909,10 +1066,12 @@ */

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.setMute(streamId, mute);
case ZEGO:
return zegosdk.activateAudioPlayStream(streamId, !mute);
case TALRTC:
return talrtcsdk.muteRemoteAudio(streamId, mute);
default:
break;
case RTC:
return rtcsdk.setMute(streamId, mute);
case ZEGO:
return zegosdk.activateAudioPlayStream(streamId, !mute);
case TALRTC:
return talrtcsdk.muteRemoteAudio(streamId, mute);
case TRTC:
return trtcsdk.muteRemoteAudio(streamId, mute);
default:
break;
}

@@ -922,15 +1081,17 @@ };

/**
* @function 是否拉取音频流--通过播放器id控制
* @param operation:Boolean,必选,true | false
* @function 是否拉取音频流-是否关闭音频流--通过播放器id控制
* @param operation:Boolean,必选,true关闭 | false不关闭
* @param playerId:Number,必选, 播放器id
* @return Promise | void
*/
export const pullAudioFlow = (playerId, operation) => {
export const pullAudioFlow = (playerId, operation, streamId) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.pullAudioFlow(playerId, operation);
return rtcsdk.pullAudioFlow(playerId, operation, 'client', streamId);
case ZEGO:
return zegosdk.pullAudioFlow(playerId, !operation);
return zegosdk.pullAudioFlow(playerId, !operation, streamId);
case TALRTC:
return talrtcsdk.pullAudioFlow(playerId, operation);
return talrtcsdk.pullAudioFlow(playerId, operation, streamId);
case TRTC:
return trtcsdk.pullAudioFlow(playerId, operation, streamId);
default:

@@ -960,4 +1121,4 @@ break;

* @function 看不看指定的用户的画面
* @param streamId: String 被拉取的流的 id,必选
* @param mute: Boolean 是否关闭画面,必选,true -> 关闭画面,false -> 不关闭画面
* @param streamId:String 被拉取的流的 id,必选
* @param mute:Boolean 是否关闭画面,必选,true -> 关闭画面,false -> 不关闭画面
* @return Promise | void

@@ -967,10 +1128,12 @@ */

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.controlPullAudioOnly(streamId, mute);
case ZEGO:
return zegosdk.activateVideoPlayStream(streamId, !mute);
case TALRTC:
return talrtcsdk.muteRemoteVideo(streamId, mute);
default:
break;
case RTC:
return rtcsdk.controlPullAudioOnly(streamId, mute);
case ZEGO:
return zegosdk.activateVideoPlayStream(streamId, !mute);
case TALRTC:
return talrtcsdk.muteRemoteVideo(streamId, mute);
case TRTC:
return trtcsdk.muteRemoteVideo(streamId, mute);
default:
break;
}

@@ -981,7 +1144,6 @@ };

* @function 开启/关闭麦克风音量回调
* @param open: Boolean true -> 开启,false -> 关闭,必选
* @param open:Boolean true -> 开启,false -> 关闭,必选
* @return void
*/
export const openMicVolumeCb = (open) => {
// TODO ??? 这个方法是什么作用?
rtcsdk.openMicVolumeCb(open);

@@ -991,50 +1153,51 @@ zegosdk.openMicVolumeCb(open);

export const startMixtStream = (args) => {
let params = {};
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
const { config } = args;
params = {
sequence: args.sequence,
outputStream: {
pushType: args.pushType,
rtmpUrls: config.szOutputStream,
videoFps: config.nOutputFps,
videoRate: config.nOutputBitrate,
audioRate: config.nOutputAudioBitrate,
videoWidth: config.nOutputWidth,
videoHeight: config.nOutputHeight,
audioFormat: config.nOutputAudioConfig,
audioChannels: config.nChannels,
backgroundColor: config.nOutputBackgroundColor,
},
inputStreams: [],
};
config.pInputStreamList.forEach(item => {
params.inputStreams.push({
confId: item.confId,
streamId: item.szStreamID,
top: item.layout.top,
right: item.layout.right,
bottom: item.layout.bottom,
left: item.layout.left,
mediaControl: item.nContentControl
});
case RTC:
const { config } = args;
params = {
sequence: args.sequence,
outputStream: {
pushType: args.pushType,
rtmpUrls: config.szOutputStream,
videoFps: config.nOutputFps,
videoRate: config.nOutputBitrate,
audioRate: config.nOutputAudioBitrate,
videoWidth: config.nOutputWidth,
videoHeight: config.nOutputHeight,
audioFormat: config.nOutputAudioConfig,
audioChannels: config.nChannels,
backgroundColor: config.nOutputBackgroundColor,
},
inputStreams: [],
};
config.pInputStreamList.forEach(item => {
params.inputStreams.push({
confId: item.confId,
streamId: item.szStreamID,
top: item.layout.top,
right: item.layout.right,
bottom: item.layout.bottom,
left: item.layout.left,
mediaControl: item.nContentControl
});
console.log(params);
rtcsdk.startRoomMixRecord(params);
break;
case ZEGO:
params = Object.assign(args, {});
delete params.pushType;
delete params.sequence;
params.config.pInputStreamList = params.config.pInputStreamList.map(item => {
const tempObj = Object.assign(item, {});
delete tempObj.confId;
return tempObj;
});
zegosdk.mixStream('start', params);
break;
default:
break;
});
console.log(params);
rtcsdk.startRoomMixRecord(params);
break;
case ZEGO:
params = Object.assign(args, {});
delete params.pushType;
delete params.sequence;
params.config.pInputStreamList = params.config.pInputStreamList.map(item => {
const tempObj = Object.assign(item, {});
delete tempObj.confId;
return tempObj;
});
zegosdk.mixStream('start', params);
break;
default:
break;
}

@@ -1045,12 +1208,12 @@ };

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
rtcsdk.stopRoomMixRecord({ sequence: args.sequence });
break;
case ZEGO:
const params = Object.assign(args, {});
delete params.sequence;
zegosdk.mixStream('stop', params);
break;
default:
break;
case RTC:
rtcsdk.stopRoomMixRecord({ sequence: args.sequence });
break;
case ZEGO:
const params = Object.assign(args, {});
delete params.sequence;
zegosdk.mixStream('stop', params);
break;
default:
break;
}

@@ -1061,3 +1224,3 @@ };

* @function 单路录制
* @param args: Object 必选
* @param args:Object 必选
* {

@@ -1075,26 +1238,26 @@ * type:String 开始/结束, 对应取值start/stop,必选

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
const { institutionId } = window.zby_sdk_init_params;
const rtc = window.zbyAVSDK_init_params.rtc;
let rtmpAddr = `${rtc.recordUrl}/${sid}`;
if (seqNum) {
rtmpAddr += `?seqNum=${seqNum}`;
}
const rtcParams = {
cmd: type,
confId: util.getConfId(institutionId, groupId),
liveId: streamId,
rtmpAddr
};
return rtcsdk.sendRecordingMsg(rtcParams);
case ZEGO:
const zego = window.zbyAVSDK_init_params.zego;
let strTarget = `${zego.recordUrl}/${sid}`;
if (seqNum) {
strTarget += `?seqNum=${seqNum}`;
}
return zegosdk.singleRecord(type, strTarget, streamId);
break;
default:
break;
case RTC:
const { institutionId } = window.zby_sdk_init_params;
const rtc = window.zbyAVSDK_init_params.rtc;
let rtmpAddr = `${rtc.recordUrl}/${sid}`;
if (seqNum) {
rtmpAddr += `?seqNum=${seqNum}`;
}
const rtcParams = {
cmd: type,
confId: util.getConfId(institutionId, groupId),
liveId: streamId,
rtmpAddr
};
return rtcsdk.sendRecordingMsg(rtcParams);
case ZEGO:
const zego = window.zbyAVSDK_init_params.zego;
let strTarget = `${zego.recordUrl}/${sid}`;
if (seqNum) {
strTarget += `?seqNum=${seqNum}`;
}
return zegosdk.singleRecord(type, strTarget, streamId);
break;
default:
break;
}

@@ -1105,3 +1268,3 @@ };

* @function 单路录制
* @param args: Object 必选
* @param args:Object 必选
* {

@@ -1118,19 +1281,19 @@ * type:String 开始/结束, 对应取值start/stop,必选

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
const { institutionId } = window.zby_sdk_init_params;
const rtc = window.zbyAVSDK_init_params.rtc;
const rtcParams = {
cmd: type,
confId: util.getConfId(institutionId, groupId),
liveId: streamId,
rtmpAddr: `rtmp://globalpush.aliyun.zhiboyun.eaydu.com/live_haibian/${streamId}`
};
return rtcsdk.sendRecordingMsg(rtcParams);
case ZEGO:
const zego = window.zbyAVSDK_init_params.zego;
const strTarget = `rtmp://globalpush.aliyun.zhiboyun.eaydu.com/live_haibian/${streamId}`;
zegosdk.singleRecord(type, strTarget, streamId);
break;
default:
break;
case RTC:
const { institutionId } = window.zby_sdk_init_params;
const rtc = window.zbyAVSDK_init_params.rtc;
const rtcParams = {
cmd: type,
confId: util.getConfId(institutionId, groupId),
liveId: streamId,
rtmpAddr: `rtmp://globalpush.aliyun.zhiboyun.eaydu.com/live_haibian/${streamId}`
};
return rtcsdk.sendRecordingMsg(rtcParams);
case ZEGO:
const zego = window.zbyAVSDK_init_params.zego;
const strTarget = `rtmp://globalpush.aliyun.zhiboyun.eaydu.com/live_haibian/${streamId}`;
zegosdk.singleRecord(type, strTarget, streamId);
break;
default:
break;
}

@@ -1141,29 +1304,42 @@ };

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
if (rtcsdk.hasStream(streamId)) {
return streamId;
} else {
defaultApi.writeLog(`zbyavsdk getSnapshootId , no streamId: ${streamId} in rtc room`);
}
break;
case ZEGO:
if (zegosdk.hasStream(streamId)) {
return zegosdk.getChannelIndex(streamId);
} else {
defaultApi.writeLog(`zbyavsdk getSnapshootId , no streamId: ${streamId} in zego room`);
}
break;
case TALRTC:
if (talrtcsdk.hasStream(streamId)) {
return talrtcsdk.getChannelIndex(streamId);
} else {
defaultApi.writeLog(`talrtcsdk getSnapshootId , no streamId: ${streamId} in talrtc room`);
}
default:
break;
case RTC:
if (rtcsdk.hasStream(streamId)) {
return streamId;
} else {
defaultApi.writeLog(`zbyavsdk getSnapshootId , no streamId: ${streamId} in rtc room`);
}
break;
case ZEGO:
if (zegosdk.hasStream(streamId)) {
return zegosdk.getChannelIndex(streamId);
} else {
defaultApi.writeLog(`zbyavsdk getSnapshootId , no streamId: ${streamId} in zego room`);
}
break;
case TALRTC:
if (zegosdk.hasStream(streamId)) {
return talrtcsdk.getChannelIndex(streamId);
} else {
defaultApi.writeLog(`talrtcsdk getSnapshootId , no streamId: ${streamId} in talrtc room`);
}
default:
break;
}
};
export const getAllChannelIndex = () => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
break;
case ZEGO:
return zegosdk.getAllChannelIndex();
case TRTC:
return trtcsdk.getAllChannelIndex();
default:
break;
}
};
/**
* @function 设置摄像头参数
* @function 设置摄像头参数(采集分辨率)
* @param width:Number 分辨率宽,必选,推荐 1280

@@ -1178,4 +1354,3 @@ * @param height:Number 分辨率高,必选,推荐 720

case RTC:
rtcsdk.setCameraParam(width, height, frameRate);
break;
return rtcsdk.setCameraParam(width, height, frameRate);
case ZEGO:

@@ -1185,2 +1360,4 @@ return zegosdk.setCameraParam(width, height);

return talrtcsdk.setCameraCaptureResolution(width, height);
case TRTC:
return trtcsdk.setCameraCaptureResolution(width, height);
default:

@@ -1207,2 +1384,4 @@ break;

return talrtcsdk.setCameraEncodeFps(frameRate) && talrtcsdk.setCameraEncodeResolution(width, height);
case TRTC:
return zegosdk.setVideoEncodeResolution(width, height);
default:

@@ -1226,2 +1405,4 @@ break;

return talrtcsdk.setCameraEncodeBitrate(bitrate);
case TRTC:
return trtcsdk.setCameraEncodeBiarate(bitrate);
default:

@@ -1240,13 +1421,13 @@ break;

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
rtcsdk.localRecordVideo(type, path);
break;
case ZEGO:
zegosdk.localRecordVideo(type, path);
break;
case TALRTC:
talrtcsdk.localRecordVideo(type, path);
break;
default:
break;
case RTC:
rtcsdk.localRecordVideo(type, path);
break;
case ZEGO:
zegosdk.localRecordVideo(type, path);
break;
case TALRTC:
talrtcsdk.localRecordVideo(type, path);
break;
default:
break;
}

@@ -1263,13 +1444,13 @@ };

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
rtcsdk.localRecordAudio(type, path);
break;
case ZEGO:
zegosdk.localRecordAudio(type, path);
break;
case TALRTC:
// FIXME METHOD_NOT_IMPLEMENT;
break;
default:
break;
case RTC:
rtcsdk.localRecordAudio(type, path);
break;
case ZEGO:
zegosdk.localRecordAudio(type, path);
break;
case TALRTC:
// FIXME METHOD_NOT_IMPLEMENT;
break;
default:
break;
}

@@ -1280,16 +1461,18 @@ };

* @function 设置采集扬声器声音
* @param { string } deviceId 设备 id
* @param { boolean } speaker 采集扬声器声音=true/不采集=false
* @param { string } deviceId 设备id
* @param {boolean} speaker 采集扬声器声音=true/不采集=false
* @return void
*/
export const setSpeakerCapture = (deviceId, speaker) => {
export const setSpeakerCapture = (deviceId,speaker) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.setAudioSpeakerCapture(deviceId, speaker);
case ZEGO:
return zegosdk.setAudioSpeakerCapture(speaker);
case TALRTC:
return talrtcsdk.enableAudioSpeakerCapture(speaker);
default:
break;
case RTC:
return rtcsdk.setAudioSpeakerCapture(deviceId,speaker);
case ZEGO:
return zegosdk.setAudioSpeakerCapture(speaker);
case TALRTC:
return talrtcsdk.enableAudioSpeakerCapture(speaker);
case TRTC:
return trtcsdk.setAudioSpeakerCapture(speaker);
default:
break;
}

@@ -1301,3 +1484,3 @@ };

* @param { boolean } type true=开启/false=关闭
* @param { number } id 需要混合的采集器 id
* @param { number } id 需要混合的采集器id
* @param { object } rgb

@@ -1311,11 +1494,11 @@ * @param { number } rgb.r

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.setMixStream(type, id, rgb);
case ZEGO:
break;
case TALRTC:
// FIXME METHOD_NOT_IMPLEMENT;
break;
default:
break;
case RTC:
return rtcsdk.setMixStream(type, id, rgb);
case ZEGO:
break;
case TALRTC:
// FIXME METHOD_NOT_IMPLEMENT;
break;
default:
break;
};

@@ -1330,11 +1513,11 @@ };

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.captureSnapShot(fileName);
case ZEGO:
break;
case TALRTC:
// FIXME METHOD_NOT_IMPLEMENT;
break;
default:
break;
case RTC:
return rtcsdk.captureSnapShot(fileName);
case ZEGO:
break;
case TALRTC:
// FIXME METHOD_NOT_IMPLEMENT;
break;
default:
break;
}

@@ -1349,11 +1532,11 @@ };

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.playerSnapShot(id, fileName);
case ZEGO:
break;
case TALRTC:
// FIXME METHOD_NOT_IMPLEMENT;
break;
default:
break;
case RTC:
return rtcsdk.playerSnapShot(id, fileName);
case ZEGO:
break;
case TALRTC:
// FIXME METHOD_NOT_IMPLEMENT;
break;
default:
break;
}

@@ -1364,16 +1547,16 @@ };

* @function 设置打开/关闭摄像头
* @param { boolean } open true=开启/false=关闭
* @param { boolean } type true=开启/false=关闭
* @return: Promise
*/
export const openOrCloseCameraAndMicrophone = (open) => {
export const openOrCloseCameraAndMicrophone = (type) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.openOrCloseCameraAndMicrophone(open);
case ZEGO:
break;
case TALRTC:
// FIXME METHOD_NOT_IMPLEMENT;
break;
default:
break;
case RTC:
return rtcsdk.openOrCloseCameraAndMicrophone(type);
case ZEGO:
break;
case TALRTC:
// FIXME METHOD_NOT_IMPLEMENT;
break;
default:
break;
}

@@ -1383,3 +1566,3 @@ };

/**
* @function 加载采集插件的输入数据 // 调用后,zego 可以向采集插件传送摄像头数据,用于拼接
* @function 加载采集插件的输入数据 //调用后,zego 可以向采集插件传送摄像头数据,用于拼接
* @return: Promise

@@ -1389,11 +1572,11 @@ */

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
break;
case ZEGO:
return rtcsdk.loadCollectionInputEntry();
case TALRTC:
// FIXME METHOD_NOT_IMPLEMENT;
break;
default:
break;
case RTC:
break;
case ZEGO:
return zegosdk.loadCollectionInputEntry();
case TALRTC:
// FIXME METHOD_NOT_IMPLEMENT;
break;
default:
break;
}

@@ -1403,3 +1586,3 @@ };

/**
* @function 加载采集插件的输出数据 //调用后,zego 可以向采集插件传送摄像头数据,用于拼接
* @function 加载采集插件的输出数据 //调用后,采集插件向zego传送数据
* @return: Promise

@@ -1409,28 +1592,41 @@ */

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
break;
case ZEGO:
return rtcsdk.loadCollectionOutputEntry();
case TALRTC:
// FIXME METHOD_NOT_IMPLEMENT;
break;
default:
break;
case RTC:
break;
case ZEGO:
return zegosdk.loadCollectionOutputEntry();
case TALRTC:
// FIXME METHOD_NOT_IMPLEMENT;
break;
default:
break;
}
};
export const mixedstuVideo = (stuArray) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.rtcLoadCollectionEntry2(stuArray);
case ZEGO:
return zegosdk.loadCollectionInputEntry2(stuArray);
case TALRTC:
return talrtcsdk.loadCollectionInputEntry2(stuArray);
default:
break;
}
};
/**
* @function 向 CDN 推流,目前只支持单流
* @function 加载采集插件的输出数据 //调用后,zego 可以向采集插件传送摄像头数据,用于拼接
* @return: Promise
*/
export const setCDNPublishTarget = (pRtmpUrl, idx) => {
export const setCDNPublishTarget = (pRtmpUrl,idx) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
break;
case ZEGO:
return rtcsdk.setCDNPublishTarget(pRtmpUrl, idx);
case TALRTC:
return talrtcsdk.addPublishRtmpStreamUrl(pRtmpUrl);
default:
break;
case RTC:
break;
case ZEGO:
return rtcsdk.setCDNPublishTarget(pRtmpUrl,idx);
case TALRTC:
return talrtcsdk.addPublishRtmpStreamUrl(pRtmpUrl);
default:
break;
}

@@ -1441,3 +1637,3 @@ };

/**
* @function 设置镜像状态
* @function 设置预览镜像状态
* @param { boolean } type true=开启 false=关闭

@@ -1448,10 +1644,10 @@ * @return: Promise

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.setMirrorStatus(type);
case ZEGO:
return zegosdk.setMirrorStatus(type);
case TALRTC:
return talrtcsdk.setMirrorStatus(type);
default:
break;
case RTC:
return rtcsdk.setMirrorStatus(type);
case ZEGO:
return zegosdk.setMirrorStatus(type);
case TALRTC:
return talrtcsdk.setMirrorStatus(type);
default:
break;
}

@@ -1465,8 +1661,10 @@ };

*/
export const setPlayViewMirror = (type) => {
export const setPlayViewMirror = (type, id) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.setRTCPlayViewMirror(type);
return rtcsdk.setRTCPlayViewMirror(type, id);
case ZEGO:
return zegosdk.setPlayViewMirror(type);
case TALRTC:
return talrtcsdk.setPlayViewMirror(type, id);
default:

@@ -1478,2 +1676,22 @@ break;

/**
* @function 设置推流镜像状态
* * @param { boolean } id 采集器Id
* @param { boolean } mode 1=开启 0=关闭
* @return: Promise
*/
export const setPushViewMirror = (mode) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.setMirrorMode(mode);
case ZEGO:
return zegosdk.setVideoMirrorMode(mode);
case TALRTC:
// FIXME METHOD_NOT_IMPLEMENT;
break;
default:
break;
}
};
/**
* @function 开启美颜

@@ -1485,10 +1703,11 @@ * @param { boolean } type true=开启 false=关闭

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.startSenseMe();
case ZEGO:
return zegosdk.startSenseMe();
case TALRTC:
return talrtcsdk.setPlayViewMirror(type);
default:
break;
case RTC:
return rtcsdk.startSenseMe();
case ZEGO:
return zegosdk.startSenseMe();
case TALRTC:
// FIXME METHOD_NOT_IMPLEMENT;
break;
default:
break;
}

@@ -1504,11 +1723,11 @@ };

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.setBeautifyParam(type, value);
case ZEGO:
return zegosdk.setBeautifyParam(type, value);
case TALRTC:
// FIXME METHOD_NOT_IMPLEMENT;
break;
default:
break;
case RTC:
return rtcsdk.setBeautifyParam(type, value);
case ZEGO:
return zegosdk.setBeautifyParam(type, value);
case TALRTC:
// FIXME METHOD_NOT_IMPLEMENT;
break;
default:
break;
}

@@ -1524,11 +1743,162 @@ };

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.endSenseMe();
case ZEGO:
return zegosdk.endSenseMe();
case TALRTC:
// FIXME METHOD_NOT_IMPLEMENT;
break;
default:
break;
}
};
/**
* @function 40路混音
* @param { number } mixMode //混流模式 0=关闭混流 1=开启混流
* @param { array } streamIdArr //表示要突出声音的channel
* @return: Promise
*/
export const setAudioMixMode = (mixMode, streamIdArr) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
break;
case ZEGO:
return zegosdk.setAudioMixMode(mixMode, streamIdArr);
case TALRTC:
// FIXME METHOD_NOT_IMPLEMENT;
break;
default:
break;
}
};
//获取第三方底层流媒体版本号
export const getSDKVersion = () => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.getSDKVersion();
case ZEGO:
return zegosdk.getSDKVersion();
case TALRTC:
const version = talrtcsdk.getSDKVersion();
return { msg: `\"{'ret': '${version}'}\"` };
default:
break;
}
};
//获取摄像头所支持的分辨率
export const getCameraSupportedResolution = async (deviceId) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return await rtcsdk.getCameraSupportedRes(deviceId);
case ZEGO:
return await zegosdk.getCameraSupportedRes(deviceId);
case TALRTC:
return await talrtcsdk.getCameraResolution(deviceId);
case TRTC:
return await trtcsdk.getCameraResolution(deviceId);
default:
break;
}
};
/**
* @function 发送SEI
* @return: Promise
*/
export const sendMediaSideInfo = (info) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
break;
case ZEGO:
return zegosdk.sendMediaSideInfo(info);
case TALRTC:
return talrtcsdk.sendSEIMsg(info);
case TRTC:
return trtcsdk.sendSEIMsg(info);
default:
break;
}
};
/**
* @function 开启rtc同屏
* @return: Promise
*/
export const startMultiScreen = () => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
break;
case ZEGO:
return zegosdk.startMultiScreen();
case TALRTC:
return talrtcsdk.startMultiScreen();
case TRTC:
return trtcsdk.startMultiScreen();
default:
break;
}
};
/**
* @function 开启rtc同屏
* @return: Promise
*/
export const enableHighlight = (enable) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
break;
case ZEGO:
break;
case TRTC:
return trtcsdk.enableHighlight(enable);
default:
break;
}
};
/**
* @function 开启音频外部采集
* @return: Promise
*/
export const startAudioExCapture = () => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
break;
case ZEGO:
return zegosdk.startAudioExCapture(1);
case TALRTC:
// FIXME METHOD_NOT_IMPLEMENT;
break;
default:
break;
}
};
/**
* @function 设置授课嘉宾头像流id
* @return: Promise
*/
export const setCustomHeadStreamId = (headStreamID) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.endSenseMe();
break;
case ZEGO:
return zegosdk.endSenseMe();
case TALRTC:
// FIXME METHOD_NOT_IMPLEMENT;
break;
return zegosdk.setCustomHeadStreamId(headStreamID);
default:
break;
}
}
/**
* @function 开启音频外部采集
* @return: Promise
*/
export const setAUXAudioType = (type) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
break;
case ZEGO:
return zegosdk.setAUXAudioType(type);
default:
break;
}

@@ -1538,2 +1908,17 @@ };

/**
* @function 开启音频外部采集
* @return: Promise
*/
export const setThirdAudioType = (type) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
break;
case ZEGO:
return zegosdk.setThirdAudioType(type);
default:
break;
}
};
/**
* @function 判断推流类型

@@ -1544,12 +1929,27 @@ * @return: Promise

switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
break;
case ZEGO:
return zegosdk.getStreamType();
default:
break;
case RTC:
break;
case ZEGO:
return zegosdk.getStreamType();
default:
break;
}
};
const setThirdAudioCallbackType = (sdkType) => {
let type = sdkVale[sdkType];
return zegosdk.setThirdAudioType(type);
};
const startMixStreams = (mixTaskId, mixType, srcStreamIds, targetRtcStreamId, targetUrls, backgroundImageId, extraStreamIds=[], coursewareWidth = 1280) => {
console.log('zego startmixStreams');
return zegosdk.startmixStreams(mixTaskId, mixType, srcStreamIds, targetRtcStreamId, targetUrls, backgroundImageId, extraStreamIds, coursewareWidth);
};
const stopMixtStreams = (mixTaskId, targetUrls) => {
console.log('zego stopMixtStreams');
return zegosdk.stopMixtStreams(mixTaskId, targetUrls);
};
export default {

@@ -1596,7 +1996,9 @@ init,

openMicVolumeCb,
startMixtStream, // 已废弃
stopMixtStream, // 已废弃
startMixtStream,
stopMixtStream,
singleRecord,
getSnapshootId,
setCameraParams,
setEncodeParams,
setBitRate,
recordPublishTarget,

@@ -1619,3 +2021,21 @@ localRecordVideo,

setPushStreamVideo,
getSDKVersion,
getCameraSupportedResolution,
setAudioMixMode,
setPushViewMirror,
deinit,
startMultiScreen,
getAllChannelIndex,
startAudioExCapture,
startSoundLevelMonitor,
sendMediaSideInfo,
enableHighlight,
setCustomHeadStreamId,
setAUXAudioType,
setThirdAudioType,
mixedstuVideo,
setThirdAudioCallbackType,
startMixStreams,
stopMixtStreams
// getDeviceState
};

@@ -5,3 +5,5 @@ import zbyAVSDK from './zby-av-sdk/zby-av-sdk';

config,
getAndSetInitParams
// getAndSetInitParams,
// getLogAddress,
getApiCloudBaseUrl
} from './config/config';

@@ -23,2 +25,3 @@ import util from './util/util';

import defaultApi from './default';
import {getDevicePermissionsFun, setMediaPermissionFun, isAppleM1} from './zby-av-sdk/device';
import NOTICE from './notice';

@@ -54,2 +57,13 @@

});
try {
// console.log('获取云控失败上报加入教室code1',window.zby_sdk_init_params);
dataReport.joinRoomResult({
code: '1',
// cloud_api_response: JSON.stringify(window.zby_sdk_cloud_data),
// cloud_api_response: window.zby_sdk_cloud_data,
cloud_api_url: `${getApiCloudBaseUrl()}/rtccloud/class/init`
});
} catch(e) {
defaultApi.writeLog('获取云控接口失败');
}
} else {

@@ -64,3 +78,3 @@ NOTICE.sdkStatus({

}
return zbysdk.changeSDK();
return zbysdk.changeSDK(1);
}

@@ -116,2 +130,6 @@ }

}
// TODO 测试用
// if (initParams.sdkName === 'talrtc') {
// initParams.institutionId = 'd46144';
// }
return util.getStreamId({

@@ -142,3 +160,10 @@ ...initParams,

// 课堂模式,0=小组课/1=新小班
classMode: +baseArgs.classMode
classMode: +baseArgs.classMode,
// saas业务类型-不同的saas业务线有不同的域名(不传默认是银联) 1=标品
saasMode: +baseArgs.saasMode,
//数据上报班课类型
liveType: +baseArgs.liveType,
//是否开启转推功能
isTurnPush: baseArgs.isTurnPush || false,
// isSetAEC: baseArgs.isSetAEC || false,
};

@@ -163,4 +188,12 @@

previewResolutionHeight: +cloudData.previewResolution.split('*')[1],
//rtc同屏分辨率
screenSameResolutionWidth: cloudData.screenSameResolution ? +cloudData.screenSameResolution.split('*')[0] : 1280,
screenSameResolutionHeight: cloudData.screenSameResolution ? +cloudData.screenSameResolution.split('*')[1] : 720,
//rtc同屏帧率 码率
screenSameFps: cloudData.screenSameFps ? +cloudData.screenSameFps : 15,
screenSameBitrate: cloudData.screenSameBitrate ? +cloudData.screenSameBitrate : 512000,
// 转推Rtmp地址
recordUrl: cloudData.recordUrl
recordUrl: cloudData.recordUrl,
aecMode: cloudData.aecMode != null ? cloudData.aecMode : -1,
noiseSuppressMode: cloudData.noiseSuppressMode != null ? cloudData.noiseSuppressMode : -1
};

@@ -178,5 +211,6 @@

}),
agora: Object.assign({}, commonArgs, liveConfig, {
extensionVersion: baseArgs.extension.version.agora || '1.0.0.0',
trtc: Object.assign({}, commonArgs, liveConfig, {
extensionVersion: baseArgs.extension.version.trtc || '1.0.0.0',
appId: cloudData.appId,
usersign: cloudData.txRtcKey,
}),

@@ -190,2 +224,3 @@ zego: Object.assign({}, commonArgs, liveConfig, {

})
};

@@ -206,6 +241,33 @@ return detailArgs;

openListenerLog: false,
//端上初始化时传的false
autoChangeSdk: true,
log_id:null,
setConfig(options) {
Object.assign(sdkConfig, options);
Object.assign(this, options);
},
deviceStatus: {},
// 开始设备检测
// async deviceCheckerInit(cb, extension, env = 'test') {
// if (!extension) {
// defaultApi.writeLog('sdk deviceCheckerInit extension param is required');
// }
// if (deviceCheckerInitStatus > -1) {
// return 'please stop check device first';
// }
// deviceCheckerInitStatus = 0;
// defaultApi.writeLog(`sdk action: deviceCheckerInit ${JSON.stringify({
// cb,
// extension,
// env,
// sdk_version: version
// })}`);
// if (typeof cb === 'function') {
// zbysdk.notice = cb;
// }
// await zbyAVSDK.deviceCheckerInit(extension, env);
// deviceCheckerInitStatus = 1;
// defaultApi.writeLog('sdk devices checked');
// },
async deviceCheckerInit(cb, extension, env = 'test') {

@@ -232,4 +294,9 @@ if (!extension) {

},
// 结束设备检测
stopCheckDevice() {
if (deviceCheckerInitStatus === -1) {
defaultApi.writeLog('please start check device first');
return 'please start check device first';
}
deviceCheckerInitStatus = -1;

@@ -242,2 +309,3 @@ defaultApi.writeLog('sdk stop check device');

if (sdk_status !== -1) {
console.log('not allow init');
dealSDKMsg({

@@ -251,5 +319,2 @@ type: 'error',

}
if (args && args.cloudData && args.cloudData.sdkName) {
window.zbyAVSDK_init_sdk_type = args.cloudData.sdkName;
};
defaultApi.writeLog(`sdk action: init zby_live_sdk_version : ${version}`);

@@ -263,2 +328,3 @@ defaultApi.writeLog(`sdk action: init args : ${JSON.stringify(args)}`);

} catch (e) {};
this.log_id = 0;
sdk_status = 0;

@@ -270,3 +336,12 @@ // 初始化参数存入共享

await liveBaseApi.init();
await toolBaseApi.init();
try {
toolBaseApi.init();
} catch(e) {
console.log('toolBaseApi_Init',e);
}
// try {
// await util.getNetworkTimeStamp();
// } catch(e) {
// console.log('getTimeError',e);
// };
//使用初始化传入的 env, isHttps 参数

@@ -277,7 +352,8 @@ Object.assign(sdkConfig, args);

try {
await getAndSetInitParams({institutionId: args.institutionId, userId: args.userId});
} catch (error) {
return retryInit('getAndSetInitParams', 'init', args, dealSDKMsg);
}
// try {
// await getLogAddress();
// await getAndSetInitParams({institutionId: args.institutionId, userId: args.userId});
// } catch (error) {
// return retryInit('getAndSetInitParams', 'init', args, dealSDKMsg);
// }
const reqParam = {

@@ -319,5 +395,2 @@ clientType: 'pc',

Object.assign(window.zby_sdk_init_params, cloudData);
try {
dataReport.joinRoom({initParams: JSON.stringify(args)});
} catch (e) {};
//通知业务层,初始化完成

@@ -330,4 +403,16 @@ NOTICE.sdkStatus({

await zbyAVSDK.init(sdk_type, detailArgs).catch(error => {
defaultApi.writeLog(`sdk init AVSDK init ${JSON.stringify(error)}`);
defaultApi.writeLog(`sdk init AVSDK init_failed ${JSON.stringify(error)}`);
return;
});
defaultApi.writeLog(`sdk status : setAudioCallbackType , sdk_type : ${sdk_type}`);
try {
await liveBaseApi.setAudioCallbackType(sdk_type);
await zbyAVSDK.setThirdAudioCallbackType(sdk_type);
} catch (e) {
defaultApi.writeLog(`sdk status : setAudioCallbackType , error : ${JSON.stringify(e)}`);
};
try {
// dataReport.joinRoom({initParams: JSON.stringify(args)});
dataReport.joinRoom({initParams: args});
} catch (e) {};
defaultApi.writeLog(`sdk status : init_finished , sdk_type : ${sdk_type}`);

@@ -339,2 +424,10 @@ //通知业务层,初始化完成

});
try {
window.zby_isM1Type =(await isAppleM1()).data.is_Apple_Silicon;
} catch (error) {
defaultApi.writeLog(`sdk action : isAppleM1 error ${JSON.stringify(error)}`);
}
try{
dataReport.initFinished({code:0});
}catch (e){ }
sdk_status = 1;

@@ -358,3 +451,3 @@ sdkRetryCount = 0;

// sendInitChannelMsg(args);
CHANNEL.joinRoom({...args, chatUrl: cloudData.chatUrl}, dealSDKMsg, cloudData.chatType);
CHANNEL.joinRoom({...args, chatUrl: cloudData.chatUrl, guid: window.zby_sdk_init_params.guid}, dealSDKMsg, cloudData.chatType);
},

@@ -374,3 +467,3 @@

const obj = localStorage.getItem(item);
if (obj && obj.indexOf('{') > -1) {
if (obj && obj.indexOf('{') > -1) {
try {

@@ -398,7 +491,8 @@ window[item] = JSON.parse(obj);

try {
await getAndSetInitParams({institutionId: args.institutionId, userId: args.userId});
} catch (error) {
return retryInit('getAndSetInitParams', 'init', args, dealSDKMsg);
}
// try {
// await getLogAddress();
// await getAndSetInitParams({institutionId: args.institutionId, userId: args.userId});
// } catch (error) {
// return retryInit('getAndSetInitParams', 'init', args, dealSDKMsg);
// }

@@ -431,4 +525,4 @@ //使用初始化传入的 env, isHttps 参数

// 接收到信道消息,进行切换SDK操作
async changeSDK(target_sdk_type) {
// from 0:云控 1:重试 2: 上层调用
async changeSDK(from = 0) {
if (!window.zby_sdk_init_params || !window.zby_sdk_req_get_cloud_params) {

@@ -438,9 +532,16 @@ console.log('缺少初始化参数,无法切换SDK');

}
// 通知业务层,切换之前(授课业务逻辑需要)
NOTICE.sdkStatus({
sdk_type: window.zbyAVSDK_init_sdk_type,
status: 'start_sdk_change'
});
//重试(2)不走下一步,否则会陷入死循环,如果是reJoin(1)来的,自动走切sdk逻辑,不触发start_sdk_change回调直接切
if (from < 1) {
// 通知业务层,切换之前(授课业务逻辑需要,比如老师主动调切sdk,云控走的切sdk全部由老师主动切,修复连麦崩溃)
NOTICE.sdkStatus({
sdk_type: window.zbyAVSDK_init_sdk_type,
status: 'start_sdk_change'
});
}
defaultApi.writeLog('sdk status : start_sdk_change');
if (from === 0 && !this.autoChangeSdk) {
return;
}
const initParams = window.zby_sdk_init_params;
let nowSdk = window.zbyAVSDK_init_sdk_type;
let cloudData;

@@ -451,3 +552,4 @@ //请求云控获取更新后的SDK配置相关信息

cloudResponse = await getCloudData(window.zby_sdk_req_get_cloud_params);
} catch (error) {
} catch (error)
{
defaultApi.writeLog(`changeSDK: getCloudData error ${JSON.stringify(error)}`);

@@ -482,11 +584,13 @@ return retryInit('getCloudData', 'changeSDK');

try {
dataReport.sdkChange({
from: window.zbyAVSDK_init_sdk_type,
to: sdk_type
});
} catch (e){};
// try {
// dataReport.sdkChange({
// from: window.zbyAVSDK_init_sdk_type,
// to: sdk_type
// });
// } catch (e){};
// //切换SDK之前,先停止转推
zbyAVSDK.turnPush('stop');
if(window.zbyAVSDK_init_params[sdk_type].isTurnPush) {
zbyAVSDK.turnPush('stop');
};
sdk_status = 0;

@@ -506,2 +610,17 @@

try {
console.log('开始设置rtmp声音回调',sdk_type);
await liveBaseApi.setAudioCallbackType(sdk_type);
await zbyAVSDK.setThirdAudioCallbackType(sdk_type);
} catch (error) {
defaultApi.writeLog(`setAudioCallbackType error : ${JSON.stringify(error)}`);
}
try {
dataReport.sdkChange({
from: nowSdk,
to: sdk_type
});
} catch (e){};
console.log('%cSDK切换完毕' + sdk_type, 'color:blue');

@@ -532,3 +651,3 @@ sdkRetryCount = 0;

const videoSrc = await zbysdk.getOrLocateVideo({
isLocal: true
isLocal: true,
});

@@ -605,3 +724,3 @@ NOTICE.updateLocalPreview({

// sendInitChannelMsg(initParams);
CHANNEL.joinRoom({ ...args, chatUrl: cloudData.chatUrl }, dealSDKMsg, cloudData.chatType);
CHANNEL.joinRoom({...args, chatUrl: cloudData.chatUrl}, dealSDKMsg, cloudData.chatType);

@@ -621,4 +740,5 @@ // 通知业务层,room 切换之前

async setCameraDevice(deviceId) {
await zbyAVSDK.setCameraDevice(deviceId);
defaultApi.writeLog(`sdk action : setCameraDevice ,,deviceId ${deviceId}`);
defaultApi.writeLog(`sdk action : setCameraDevice --start,deviceId ${deviceId}`);
await zbyAVSDK.setCameraDevice(deviceId,'client');
defaultApi.writeLog(`sdk action : setCameraDevice --end,deviceId ${deviceId}`);

@@ -628,3 +748,3 @@ },

async getCameraDeviceList() {
defaultApi.writeLog(`sdk action : getCameraDeviceList, sdkType: ${window.zbyAVSDK_init_sdk_type}`);
defaultApi.writeLog('sdk action : getCameraDeviceList ');
return await zbyAVSDK.getCameraDeviceList();

@@ -634,15 +754,20 @@ },

async openOrCloseCamera(operation) {
defaultApi.writeLog(`sdk action : openOrCloseCamera ${operation} --start`);
await zbyAVSDK.openOrCloseCamera(operation);
try {
dataReport.deviceChange({
device: 1,
device_state: operation? 1 : 0
device_type: 1,
code: operation? 1 : 0,
device_name: window.zbyAVSDK_device_checker_init.camera.name,
device_id: window.zbyAVSDK_device_checker_init.camera.use
});
} catch (e) { };
} catch (e){};
userAndDeviceStatusInfo.camera = operation;
//记录摄像头状态,用作推流类型上报,是否推视频
this.deviceStatus.camera = operation;
sdk_status === 1 && sendDeviceStatus('video', operation);
defaultApi.writeLog(`sdk action : openOrCloseCamera ${operation} `);
defaultApi.writeLog(`sdk action : openOrCloseCamera ${operation} --end`);
},
// 推不推画面
//推不推画面
async setPushStreamVideo(operation) {

@@ -653,11 +778,11 @@ await zbyAVSDK.setPushStreamVideo(operation);

// 看或不看指定用户的视频
async setVideoMute(userId, operation, groupId, streamId) {
const finalStreamId = streamId || generateStreamId(userId, groupId);
await zbyAVSDK.setVideoMute(finalStreamId, operation);
defaultApi.writeLog(`sdk action : setVideoMute userId ${userId}, groupId ${groupId}, operation ${operation}, streamId ${finalStreamId}`);
//看或不看指定用户的视频
async setVideoMute(userId, operation, groupId) {
const streamId = generateStreamId(userId, groupId);
await zbyAVSDK.setVideoMute(streamId, operation);
defaultApi.writeLog(`sdk action : setVideoMute userId ${userId}, groupId ${groupId}, operation ${operation}, streamId ${streamId}`);
},
async getOrLocateVideo(args) {
defaultApi.writeLog(`sdk action : getOrLocateVideo args : ${JSON.stringify(args)}`);
defaultApi.writeLog(`sdk action : getOrLocateVideo --start args : ${JSON.stringify(args)}`);
const videoSrc = await zbyAVSDK.getOrLocateVideo({

@@ -673,12 +798,35 @@ domId: args.domId,

async startPushFlow() {
defaultApi.writeLog('sdk action : startPushFlow');
async linkMicReport(args) {
defaultApi.writeLog(`sdk action : linkMicReport args : ${JSON.stringify(args)}`);
const {name, pull_uid, trace_id} = args;
let pull_uid1 = [];
pull_uid.forEach( item => {
pull_uid1.push(item+'');
});
if (dataReport.hasOwnProperty(name)) {
dataReport[name]({pull_uid:pull_uid1,trace_id});
};
},
async startPushFlow(streamid, idx) {
defaultApi.writeLog(`sdk action : startPushFlow streamId:${streamid} idx: ${idx}`);
try {
dataReport.startPublish({publish_streamid:window.zbyAVSDK_init_params.rtc.streamId});
// dataReport.startPublish({publish_streamid:window.zbyAVSDK_init_params.rtc.streamId});
streamid&&idx ? dataReport.startPublish({publish_rtc_streamid:streamid}) : dataReport.startPublish() ;
} catch (e) {};
await zbyAVSDK.startPushFlow();
await zbyAVSDK.startPushFlow(streamid, idx);
// 不重新推流此情况不适用,推流状态跟着设备开关情况改变,以下仅用作数据上报
// console.log('push_type000',this.deviceStatus.camera,this.deviceStatus.microphone);
if(this.deviceStatus.camera && this.deviceStatus.microphone) {
this.deviceStatus.stream_type = 'both';
} else if(!this.deviceStatus.camera && this.deviceStatus.microphone) {
this.deviceStatus.stream_type = 'audio';
} else if(this.deviceStatus.camera && !this.deviceStatus.microphone) {
this.deviceStatus.stream_type = 'video';
} else {
this.deviceStatus.stream_type = 'none';
}
// console.log('push_type111',this.deviceStatus,this.deviceStatus.stream_type);
const initParams = window.zby_sdk_init_params;
// initParams.role === 'teacher' &&
console.log('-> start turn push ----------------');
zbyAVSDK.turnPush('start');
// initParams.role === 'teacher' && zbyAVSDK.turnPush('start');
if (window.zbyAVSDK_init_sdk_type === 'zego' && initParams.role === 'student') {

@@ -704,13 +852,24 @@ //仅当学生为zego类型时,才确保推流成功之后再发join消息

} else {
CHANNEL.sendAddStream(initParams);
userAndDeviceStatusInfo.isPushingFlow = true;
//rtc同屏流不走信道 !1
if(!idx) {
CHANNEL.sendAddStream(initParams);
userAndDeviceStatusInfo.isPushingFlow = true;
}
}
},
async stopPushFlow() {
defaultApi.writeLog('sdk action : stopPushFlow');
await zbyAVSDK.stopPushFlow();
window.zby_sdk_init_params.role === 'teacher' && zbyAVSDK.turnPush('stop');
userAndDeviceStatusInfo.isPushingFlow = false;
CHANNEL.sendRemoveStream(window.zby_sdk_init_params);
async stopPushFlow(idx, streamid) {
defaultApi.writeLog(`sdk action : stopPushFlow streamid:${streamid} idx:${idx}`);
await zbyAVSDK.stopPushFlow(idx, streamid);
try {
streamid && idx ? dataReport.stopPublish({ stop_rtc_streamid: streamid }) : dataReport.stopPublish();
// dataReport.stopPublish({});
} catch (error) { };
if(window.zby_sdk_init_params.isTurnPush) {
zbyAVSDK.turnPush('stop');
};
if(!idx) {
userAndDeviceStatusInfo.isPushingFlow = false;
CHANNEL.sendRemoveStream(window.zby_sdk_init_params);
}
},

@@ -721,2 +880,14 @@

const streamId = args.streamId || generateStreamId(args.userId, args.groupId);
let {mute, audioOnly} = args;
let streamType = 'none';
if(mute && audioOnly) {
streamType = 'none';
} else if (mute && !audioOnly) {
streamType = 'video';
} else if (!mute && audioOnly) {
streamType = 'audio';
} else {
streamType = 'both';
};
const result = zbyAVSDK.initPullFlow({

@@ -726,4 +897,5 @@ ...args,

});
// defaultApi.writeLog(`sdk action : initPullFlow——result ,${JSON.stringify(result)}`);
try {
dataReport.startPull({pull_uid: args.userId || util.getUidByStreamId(streamId), pull_streamid: streamId});
dataReport.startPull({pull_uid: args.userId || util.getUidByStreamId(streamId), pull_streamid: streamId, stream_type: streamType});
} catch (e) {};

@@ -734,3 +906,3 @@ const {

} = await result.videoSrc;
defaultApi.writeLog(`sdk initPullFlow ${JSON.stringify(args)}, streamId : ${streamId}, result :${result.sdk_type}: ${videoSrc}`);
defaultApi.writeLog(`sdk initPullFlow ${JSON.stringify(args)}, streamId : ${streamId}, result :${result.sdk_type}: ${videoSrc} type:${streamType} playerId:${playerId}`);
if (args.needPlayerId) {

@@ -761,3 +933,4 @@ return {

async stopPullFlow(userId, groupId, recovery) {
async stopPullFlow(userId, groupId, recovery, streamid) {
// const {userId, groupId, recovery, streamid} = args;
if (typeof userId !== 'number' && typeof userId !== 'string') {

@@ -769,7 +942,7 @@ defaultApi.writeLog(`sdk action : stopPullFlow ,userId : ${userId}, groupId: ${groupId}, param error`);

}
const streamId = generateStreamId(userId, groupId);
const streamId = streamid || generateStreamId(userId, groupId);
await zbyAVSDK.stopPullFlow(streamId, recovery);
try {
dataReport.stopPull({ pull_uid: userId, pull_streamid: streamId });
} catch (e) { };
dataReport.stopPull({pull_uid:userId,pull_streamid:streamId});
} catch (e) {};
noticeStreamStatus(userId, 'stream_stopped');

@@ -831,4 +1004,4 @@ defaultApi.writeLog(`sdk action : stopPullFlow ,userId : ${userId}, groupId: ${groupId}, notice: stream_stopped`);

async setSpeakerDevice(deviceId) {
defaultApi.writeLog('sdk action : setSpeakerDevice ');
await zbyAVSDK.setSpeakerDevice(deviceId);
defaultApi.writeLog(`sdk action : setSpeakerDevice deviceId:${deviceId}`);
await zbyAVSDK.setSpeakerDevice(deviceId, 'client');
},

@@ -851,6 +1024,8 @@

dataReport.deviceChange({
device: 3,
device_state: mute ? 0 :1
device_type: 3,
code: mute ? 0 :1,
device_name: window.zbyAVSDK_device_checker_init.speaker.name,
device_id: window.zbyAVSDK_device_checker_init.speaker.use
});
} catch (e) { };
} catch (e){};
defaultApi.writeLog(`sdk action : setSpeakerMute ${mute}`);

@@ -883,3 +1058,3 @@ },

const microPhoneList = await zbyAVSDK.getMicrophoneDeviceList();
defaultApi.writeLog(`sdk action : getMicrophoneDeviceList ${JSON.stringify(microPhoneList)} sdkType: ${window.zbyAVSDK_init_sdk_type}`);
defaultApi.writeLog(`sdk action : getMicrophoneDeviceList ${JSON.stringify(microPhoneList)}`);
return microPhoneList;

@@ -889,3 +1064,3 @@ },

async setMicrophoneDevice(deviceId) {
await zbyAVSDK.setMicrophoneDevice(deviceId);
await zbyAVSDK.setMicrophoneDevice(deviceId, 'client');
defaultApi.writeLog(`sdk action : setMicrophoneDevice ${deviceId}`);

@@ -895,12 +1070,17 @@ },

async openOrCloseMicrophone(operation) {
defaultApi.writeLog(`sdk action : openOrCloseMicrophone ${operation} --start`);
await zbyAVSDK.openOrCloseMicrophone(operation);
try {
dataReport.deviceChange({
device: 2,
device_state: operation ? 1 : 0
device_type: 2,
code: operation ? 1 : 0,
device_name: window.zbyAVSDK_device_checker_init.microphone.name,
device_id: window.zbyAVSDK_device_checker_init.microphone.use
});
} catch (e) { };
} catch (e){};
userAndDeviceStatusInfo.microPhone = operation;
//记录麦克风状态,用作推流类型上报,是否推声音
this.deviceStatus.microphone = operation;
sdk_status === 1 && sendDeviceStatus('audio', operation);
defaultApi.writeLog(`sdk action : openOrCloseMicrophone ${operation}`);
defaultApi.writeLog(`sdk action : openOrCloseMicrophone ${operation} --end`);

@@ -910,7 +1090,6 @@ },

//听或不听指定用户的声音
async setAudioMute(userId, operation, groupId) {
const streamId = generateStreamId(userId, groupId);
async setAudioMute(userId, operation, groupId, streamid) {
const streamId = streamid || generateStreamId(userId, groupId);
await zbyAVSDK.setAudioMute(streamId, operation);
defaultApi.writeLog(`sdk action : setAudioMute userId ${userId} , ${operation}`);
defaultApi.writeLog(`sdk action : setAudioMute userId ${userId}, operation ${operation}, groupId ${groupId}, streamid ${streamid}`);
},

@@ -924,4 +1103,7 @@

*/
async pullAudioFlow(playerId, operation) {
await zbyAVSDK.pullAudioFlow(playerId, operation);
async pullAudioFlow(playerId, operation, streamid) {
defaultApi.writeLog(`sdk action : pullAudioFlow --start playerId ${playerId}, ${operation}, streamid ${streamid}`);
const streamId = streamid ? streamid : undefined;
console.log('pullAudioFlow-streamId',streamId)
await zbyAVSDK.pullAudioFlow(playerId, operation, streamId);
defaultApi.writeLog(`sdk action : pullAudioFlow playerId ${playerId}, ${operation}`);

@@ -966,5 +1148,4 @@

deviceCheckerInitStatus = -1;
await zbyAVSDK.leaveRoom().catch((err) => {
console.error('-> leave room fail ->', err)
});
await zbyAVSDK.leaveRoom();
windowObjArr[0].concat(windowObjArr[1]).forEach(item => {

@@ -977,3 +1158,3 @@ localStorage.removeItem(item);

dataReport.leaveRoom();
} catch (e) { };
} catch (e) {};
defaultApi.writeLog('sdk leaveRoom end ,sdk status : uninstall_finished');

@@ -985,5 +1166,10 @@ //通知业务层,卸载完成

});
this.deinit(); // TODO 临时增加引擎卸载测试使用
},
//崩溃后的销毁引擎,反初始化
async deinit() {
defaultApi.writeLog('sdk action : deinit');
await zbyAVSDK.deinit();
},
/**

@@ -1013,2 +1199,8 @@ * @function 转推,录课

},
mixedstuVideo(stuArray) {
zbyAVSDK.mixedstuVideo(stuArray);
defaultApi.writeLog(`sdk action : mixedstuVideo, stuArray: ${stuArray}`);
},
/**

@@ -1028,2 +1220,8 @@ * @function 单路流录制

},
//开启拉流音量监听
startSoundLevelMonitor() {
defaultApi.writeLog('sdk action : startSoundLevelMonitor --start');
zbyAVSDK.startSoundLevelMonitor();
defaultApi.writeLog('sdk action : startSoundLevelMonitor --end');
},
/**

@@ -1051,5 +1249,10 @@ * @function 多路转推

const streamId = generateStreamId(userId, roomId);
defaultApi.writeLog(`sdk action :getStreamInfo --start, userId : ${userId}, roomId: ${roomId}`);
if (!userId || userId == window.zby_sdk_init_params.userId) {
console.log('getStreamInfo',userId,streamId);
switch (window.current_sdk_type) {
case 'rtc':
try{
dataReport.takeSnapShot({snapshootId:streamId});
}catch(e){}
return {

@@ -1061,2 +1264,5 @@ streamId,

case 'zego':
try{
dataReport.takeSnapShot({getStreamInfoZego:streamId,snapshootId:-1});
}catch(e){}
return {

@@ -1073,3 +1279,12 @@ streamId,

streamId,
snapshootId: streamId
snapshootId: -2
};
case 'trtc':
try {
console.log('拍照上墙trtc',streamId)
dataReport.takeSnapShot({snapshootId:streamId});
} catch (e) {}
return {
streamId,
snapshootId: -3
};

@@ -1088,2 +1303,7 @@ default:

getAllChannelIndex() {
let channelMap = zbyAVSDK.getAllChannelIndex();
return channelMap;
},
/**

@@ -1111,4 +1331,15 @@ * @function 记录日志

defaultApi.writeLog(`sdk action: setCameraParam, args: ${JSON.stringify(args)}`);
zbyAVSDK.setCameraParams(args);
return zbyAVSDK.setCameraParams(args);
},
setEncodeParams(args) {
defaultApi.writeLog(`sdk action: setEncodeParams, args: ${JSON.stringify(args)}`);
return zbyAVSDK.setEncodeParams(args);
},
setBitRate(bitrate) {
defaultApi.writeLog(`sdk action: setBitRate, bitrate: ${bitrate}`);
return zbyAVSDK.setBitRate(bitrate);
},
/**

@@ -1147,3 +1378,3 @@ * @function 本地视频录制

});
} catch (e) { };
} catch (e) {};
await zbyAVSDK.teacherStartLinkMic(mode);

@@ -1168,3 +1399,3 @@ if (mode === 0) {

});
} catch (e) { };
} catch (e) {};
await zbyAVSDK.teacherStopLinkMic(mode);

@@ -1181,3 +1412,3 @@ if (mode === 0) {

//设置采集扬声器声音
setSpeakerCapture(deviceId, speaker) {
setSpeakerCapture(deviceId, speaker){
defaultApi.writeLog(`sdk action: setSpeakerCapture, deviceId: ${deviceId}, speaker: ${speaker}`);

@@ -1230,26 +1461,19 @@ return zbyAVSDK.setSpeakerCapture(deviceId, speaker);

//获取设备状态
async getDeviceState(devicename, devicetype) {
defaultApi.writeLog(`sdk action : getDeviceState devicename: ${devicename} devicetype: ${devicetype}`);
async getDevicePermissions(devicename, devicetype) {
defaultApi.writeLog(`sdk action : getDevicePermissions devicename: ${devicename} devicetype: ${devicetype}`);
try {
// console.log('hsghsg');
// console.log('hsgshg',JSON.parse(JSON.stringify(await toolBaseApi.getDeviceState(devicename, devicetype))).msg);
let res =JSON.parse(JSON.stringify(await toolBaseApi.getDeviceState(devicename, devicetype))).msg.devicestate;
// let res1 = JSON.parse(res).devicestate;
let codemsg = {
'0':'有权限可用',
'1':'没有询问是否开启权限',
'2':'用户未授权',
'3':'未授权,家长限制',
'4':'未知权限类型',
'5':'操作系统不支持权限管理',
'6':'不可用(win10隐私关闭)',
'7':'设备占用'
};
// console.log('hsghsg',codemsg[res]);
return codemsg[res];
let res =await getDevicePermissionsFun(devicename, devicetype);
return res;
} catch (error){};
return 'error';
},
//打开摄像头&麦克风权限(需要关端重启)
async setMediaPermission(caremaPermission,microPhonePermission) {
defaultApi.writeLog(`sdk action : setMediaPermission caremaPermission: ${caremaPermission} microPhonePermission: ${microPhonePermission}`);
return setMediaPermissionFun(caremaPermission,microPhonePermission);
},
/**
* @function 设置镜像状态
* @function 设置预览镜像状态
* @param { boolean } type true=开启 false=关闭

@@ -1267,7 +1491,19 @@ * @return: Promise

*/
setPlayViewMirror(type) {
defaultApi.writeLog(`sdk action: setPlayViewMirror, type: ${type}`);
return zbyAVSDK.setPlayViewMirror(type);
setPlayViewMirror(type, id) {
defaultApi.writeLog(`sdk action: setPlayViewMirror, type: ${type}, id: ${id}`);
return zbyAVSDK.setPlayViewMirror(type, id);
},
/**
* @function 设置推流镜像状态
* @param { boolean } id 采集器Id
* @param { boolean } mode 1=开启 0=关闭
* @return: Promise
*/
setPushViewMirror(mode) {
defaultApi.writeLog(`sdk action: setPushViewMirror, mode: ${mode}`);
return zbyAVSDK.setPushViewMirror(mode);
},
/**
* @function 开启美颜

@@ -1298,3 +1534,82 @@ * @return: Promise

},
/**
* @function zego40路拉流混音接口
* @param { number } mixMode //混流模式 0=关闭混流 1=开启混流
* @param { array } userIdArr //要突出声音的userId的数组集合
* @return: Promise
*/
setAudioMixMode(mixMode, userIdArr) {
let streamIdArr = [];
if(userIdArr.length > 0) {
userIdArr.forEach(item => {
streamIdArr.push(generateStreamId(item));
});
}
defaultApi.writeLog(`sdk action: setAudioMixMode mixMode:${mixMode} userIdArr:${userIdArr} streamIdArr:${streamIdArr}`);
return zbyAVSDK.setAudioMixMode(mixMode, streamIdArr);
},
//获取TalMedia.dll版本号&&获取zegoAvkit.dll版本号
getSDKVersion() {
defaultApi.writeLog('sdk action: getSDKVersion');
return zbyAVSDK.getSDKVersion();
},
//获取摄像头所支持的分辨率
getCameraSupportedResolution(deviceId) {
defaultApi.writeLog(`sdk action: getCameraSupportedResolution deviceId: ${deviceId}`);
return zbyAVSDK.getCameraSupportedResolution(deviceId);
},
//开启rtc同屏
startMultiScreen() {
defaultApi.writeLog('sdk action: startMultiScreen');
return zbyAVSDK.startMultiScreen();
},
//开启高光时刻
startHighlight(enable) {
defaultApi.writeLog(`sdk action: startHighlight enable:${enable}`);
return zbyAVSDK.enableHighlight(enable);
},
//开启外部音频采集
startAudioExCapture() {
defaultApi.writeLog('sdk action: startAudioExCapture');
return zbyAVSDK.startAudioExCapture();
},
//设置授课嘉宾头像流id
setCustomHeadStreamId (headStreamID) {
defaultApi.writeLog(`sdk action: setCustomHeadStreamId headStreamID:${headStreamID}`);
return zbyAVSDK.setCustomHeadStreamId(headStreamID);
},
//RTC同屏 辅助通道音频类型
setAUXAudioType(type) {
defaultApi.writeLog(`sdk action: setAUXAudioType type:${type}`);
return zbyAVSDK.setAUXAudioType(type);
},
//RTC同屏 辅助通道音频类型
setThirdAudioType(type) {
defaultApi.writeLog(`sdk action: setThirdAudioType type:${type}`);
return zbyAVSDK.setThirdAudioType(type);
},
//发送sei
sendMediaSideInfo(info) {
defaultApi.writeLog('sdk action: sendMediaSideInfo');
return zbyAVSDK.sendMediaSideInfo(info);
},
startMixStreams(mixTaskId, mixType, srcStreamIds, targetRtcStreamId, targetUrls, backgroundImageId=0, extraStreamIds=[], coursewareWidth = 1280) {
defaultApi.writeLog(`sdk action: startMixStreams mixTaskId:${mixTaskId} mixType:${mixType} srcStreamIds:${JSON.stringify(srcStreamIds)} targetRtcStreamId:${targetRtcStreamId} targetUrls:${JSON.stringify(targetUrls)} backgroundImageId:${backgroundImageId} extraStreamIds:${JSON.stringify(extraStreamIds)} coursewareWidth:${coursewareWidth}`);
return zbyAVSDK.startMixStreams(mixTaskId, mixType, srcStreamIds, targetRtcStreamId, targetUrls, backgroundImageId, extraStreamIds, coursewareWidth);
},
stopMixtStreams(mixTaskId, targetUrls) {
defaultApi.writeLog(`sdk action: stopMixtStreams mixTaskId:${mixTaskId} targetUrls:${targetUrls}`);
return zbyAVSDK.stopMixtStreams(mixTaskId, targetUrls);
},
/**
* @function 切换sdk类型

@@ -1323,4 +1638,4 @@ * @return: Promise

sdkName,
lectureStreamId: `lecturer_${teacherId}_${liveId}`,
workCode: 0
lectureStreamId:`lecturer_${teacherId}_${liveId}`,
workCode:0
};

@@ -1330,3 +1645,3 @@ let res = await changeSdkInRoom(param);

code = res.code == 0 ? 0 : 1; //0切换成功 ,1切换失败
return code;
return code ;
}

@@ -1333,0 +1648,0 @@ };

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc