zby-live-sdk
Version:
This is a live SDK for weclassroom.
2,347 lines • 60.2 kB
JavaScript
/**
* @File: 直播云音视频 SDK
* @Author: xuyuanrui
* @Email: raywhbxyr@163.com
* @Date: 2018-08-09 00:03:46
**/
import rtcsdk from './rtc-sdk.js';
import zegosdk from './zego-sdk.js';
import talrtcsdk from './talrtc-sdk.js';
import trtcsdk from './trtc-sdk.js';
import defaultApi from '../default';
import util from '../util/util';
import globalConfig from '../config/config.js';
const RTC = 'rtc';
const ZEGO = 'zego';
const TALRTC = 'talrtc';
const TRTC = 'trtc';
const NERTC = 'nertc';
const VOLCRTC = 'volcrtc';
// rtc 底层流媒体数据上报地址配置
const rtcReportUrl = {
test: 'test-r.weclassroom.com',
online: 'r.weclassroom.com'
};
const sdkVale = {
zego: 8, //8代表zego采集麦克风+扬声器
talrtc: 101, //101代表talrtc采集声音
nertc: 101, //101代表talrtc采集声音
volcrtc: 101, //101代表talrtc采集声音
trtc: 102, //102代表trtc采集声音
};
/**
* @function 设备检测初始化(新)
*/
export const deviceCheckerInit = async (extension, env) => {
setDefaultZbySDKDeviceCheckerInit();
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 rtc , from avsdk device check init');
};
/**
* @function 设置设备检测对象默认值
*/
export const setDefaultZbySDKDeviceCheckerInit = async () => {
if(window.zbyAVSDK_device_checker_init){
if(!window.zbyAVSDK_device_checker_init.microphone){
window.zbyAVSDK_device_checker_init.microphone = {
hasTest: false,
list: [],
use: '',
name:''
};
};
if(!window.zbyAVSDK_device_checker_init.camera){
window.zbyAVSDK_device_checker_init.camera = {
hasTest: false,
list: [],
use: '',
name: ''
};
};
if(!window.zbyAVSDK_device_checker_init.speaker){
window.zbyAVSDK_device_checker_init.speaker = {
hasTest: false,
list: [],
use: '',
name: ''
};
};
} else {
window.zbyAVSDK_device_checker_init = {
microphone: {
hasTest: false,
list: [],
use: '',
name: ''
},
camera: {
hasTest: false,
list: [],
use: '',
name: ''
},
speaker: {
hasTest: false,
list: [],
use: '',
name: ''
}
};
}
// window.zbyAVSDK_device_checker_init = window.zbyAVSDK_device_checker_init || {
// window.zbyAVSDK_device_checker_init = {
// microphone: {
// hasTest: false,
// list: [],
// use: ''
// },
// camera: {
// hasTest: false,
// list: [],
// use: ''
// },
// speaker: {
// hasTest: false,
// list: [],
// use: ''
// }
// };
defaultApi.writeLog(`setDefaultZbySDKDeviceCheckerInit, ${window.zbyAVSDK_device_checker_init}`);
};
/**
* @function 结束设备检测
*/
export const stopCheckDevice = async () => {
defaultApi.writeLog('zby_av_sdk stop checkDevice');
return zegosdk.stopCheckDevice();
};
/**
* @function 初始化
* @param sdk_type:String 'rtc' | 'zego' | 'agora',必选
* @param args:Object 必选
* {
* rtc: {},
* zego: {},
* agora: {}
* }
* @return Promise | void
*/
export const init = (sdk_type, args) => {
// 将初始化参数存储到全局
window.zbyAVSDK_init_sdk_type = sdk_type;
defaultApi.writeLog(`change zbyAVSDK_init_sdk_type to ${sdk_type} , from avsdk init action`);
window.zbyAVSDK_init_params = args;
setDefaultZbySDKDeviceCheckerInit();
// if (sdk_type !== 'talrtc') { // TODO: 临时处理,后续需要优化
// const config = window.zbyAVSDK_init_params[window.zbyAVSDK_init_sdk_type];
// defaultApi.writeLog(`start checkUpdate, from avsdk init action, config: ${JSON.stringify(config)}`);
// talrtcsdk.checkUpdate(config.institutionId, config.userId, config.role);
// }
return changeSDK(undefined);
};
/**
* @function 恢复sdk
*/
export const recoverSdk = (args) => {
window.zbyAVSDK_init_params = args;
const config = window.zbyAVSDK_init_params[window.zbyAVSDK_init_sdk_type];
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.recoverSdk(config);
case ZEGO:
// return zegosdk.recoverSdk(dealSDKMsg);
default:
break;
}
};
/**
* @function 切换线路
* @param args:Object 可选
* {
* sdk_type, // String,'rtc' | 'zego' | 'agora',可选
* // 无传入的话,sdk 线路默认选择 window.zbyAVSDK_init_sdk_type
* config // Object,配置的参数对象,不同的线路参数对象不同,可选
* // 无传入的话,sdk 线路默认选择 window.zbyAVSDK_init_params 中相应线路的配置
* }
* @return Promise | void
*/
export const changeSDK = async (args) => {
if (args) {
rtcsdk.stopCheckDevice();
await leaveRoomWithChangeSDK().catch((err) => {
console.error('leave room fail:', err);
});
// await unloadExtension();
}
if (args && args.sdk_type) {
window.zbyAVSDK_init_sdk_type = args.sdk_type;
defaultApi.writeLog(`change zbyAVSDK_init_sdk_type to ${args.sdk_type} , from avsdk changeSDK action`);
}
if (args && args.config) {
window.zbyAVSDK_init_params[window.zbyAVSDK_init_sdk_type] = args.config;
}
const sdk_type = window.zbyAVSDK_init_sdk_type;
const config = window.zbyAVSDK_init_params[window.zbyAVSDK_init_sdk_type];
// 默认使用pomelo
globalConfig.usePomelo = true;
// 切换引擎会走到这里
if (args && config) {
delete config.devices;
}
switch (sdk_type) {
case RTC:
return rtcsdk.init(config);
case ZEGO:
return zegosdk.init(config);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.init(config);
case TRTC:
return trtcsdk.init(config);
default:
break;
}
};
/**
* @function 卸载扩展
* @return Promise | void
*/
export const unloadExtension = () => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.unloadRtc();
case ZEGO:
return zegosdk.unloadZego();
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.unloadTalrtc();
case TRTC:
return trtcsdk.unloadTrtc();
default:
break;
}
};
/**
* @function 获取摄像头列表
* @return Promise | void
*/
export const getCameraDeviceList = async () => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return await rtcsdk.getCameraDevice();
case ZEGO:
return await zegosdk.getVideoDeviceList();
case TALRTC:
case NERTC:
case VOLCRTC:
return await talrtcsdk.getCameraDeviceList();
case TRTC:
return await trtcsdk.getCameraDeviceListTrtc();
default:
return await zegosdk.getVideoDeviceList();
break;
}
};
/**
* @function 指定摄像头
* @param deviceId:String 摄像头 id,必须
* @return Promise | void
*/
export const setCameraDevice = async (deviceId, operationType) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return await rtcsdk.setCameraDevice({deviceId, operationType});
case ZEGO:
return await zegosdk.setVideoDevice({deviceId, operationType});
case TALRTC:
case NERTC:
case VOLCRTC:
return await talrtcsdk.setCameraDevice({ deviceId });
case TRTC:
return await trtcsdk.setVideoDevice({deviceId});
default:
break;
}
};
/**
* @function 开摄像/关摄像
* @param operation:Boolean 操作类型,false -> 关闭,true -> 打开,必选
* @return Promise | void
*/
export const openOrCloseCamera = (operation) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.openOrCloseCamera(operation);
case ZEGO:
return zegosdk.enableCamera(operation);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.openOrCloseCamera(operation);
case TRTC:
return trtcsdk.openOrCloseCamera(operation);
default:
break;
}
};
//是否推画面 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:
case NERTC:
case VOLCRTC:
return talrtcsdk.muteLocalVideo(!operation);
case TRTC:
default:
break;
}
};
/**
* @function 是否推声音 ---暂时没有用到,未抛出去未测
* @param operation:Boolean 操作类型,false -> 关闭,true -> 打开,必选
* @return Promise | void
*/
export const setPushAudioMute = (operation) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.muteStreamAudio(!operation);
case ZEGO:
return zegosdk.setMuteStreamAudio(!operation);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.muteLocalAudio(!operation);
case TRTC:
default:
break;
}
};
/**
* @function 开启预览
* @param operation:Boolean 操作类型,false -> 关闭,true -> 打开,必选
* @return Promise | void
*/
export const startPreview = (operation) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.startPreview(operation);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.startPreview(operation);
case ZEGO:
case TRTC:
default:
break;
}
};
/**
* @function 结束预览
* @param operation:Boolean 操作类型,false -> 关闭,true -> 打开,必选
* @return Promise | void
*/
export const stopPreview = (operation) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.stopPreview(operation);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.stopPreview(operation);
case ZEGO:
case TRTC:
default:
break;
}
};
/**
* @function 开始连麦
* @param mode:number 采集器默认, 默认0=站立 1=坐立
* @return Promise | void
*/
export const teacherStartLinkMic = (mode) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.teacherStartLinkMic(mode);
case ZEGO:
return zegosdk.teacherStartLinkMic(mode);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.teacherStartLinkMic(mode);
case TRTC:
return trtcsdk.teacherStartLinkMic(mode)
default:
break;
}
};
/**
* @function 结束连麦
* @param mode:number 采集器默认, 默认0=站立 1=坐立
* @return Promise | void
*/
export const teacherStopLinkMic = (mode) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.teacherStopLinkMic(mode);
case ZEGO:
return zegosdk.teacherStopLinkMic(mode);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.teacherStopLinkMic(mode);
case TRTC:
return trtcsdk.teacherStopLinkMic(mode);
default:
break;
}
};
/**
* @function 获取视频 src 或者将视频绑定到某一个 <video> 标签上
* @param args:Object
* {
* isLocal, // Boolean,是否是本地的视频预览
* streamId, // String,要拉取的视频流的 id,可选,只有拉取远程的视频流的时候才是必选的,本地不用
* domId // String,<video> 标签的 id,可选,如果传了就把视频绑定到对应的 <video> 标签上
* }
* @return Promise | void,可从 Promise 中获取 src,Promise.then((src) => {})
*/
export const getOrLocateVideo = (args) => {
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 TALRTC:
case NERTC:
case VOLCRTC:
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;
}
};
/**
* @function 开始推流
* @return Promise | void
*/
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:
case NERTC:
case VOLCRTC:
return await talrtcsdk.startPush(streamid, idx); // 可能为空,函数内部有判断逻辑,为空时,根据规则生成streamId
case TRTC:
return await trtcsdk.startPush(streamid, idx);//流id需要做兼容处理
default:
break;
}
};
/**
* @function 暂停推流
* @return Promise | void
*/
export const stopPushFlow = (idx, streamId) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.stopPush();
case ZEGO:
return zegosdk.stopPublish(idx);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.stopPush(streamId);
case TRTC:
return trtcsdk.stopPush(idx);
default:
break;
}
};
/**
* @function 初始化拉流
* @param args:Object
* {
* streamId, // String,被拉取的流的 id,必选
* domId // String,<video> 标签的 id,可选,如果传了就把视频绑定到对应的 <video> 标签上
* }
* @return Promise | void,可从 Promise 中获取 src,Promise.then((src) => {})
*/
export const initPullFlow = (args) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
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, args.streamType)
};
case ZEGO:
return {
sdk_type: ZEGO,
videoSrc: zegosdk.initPullFlow(args.streamId, args.domId, args.mute, args.renderId, args.notAutoPlay, args.audioOnly)
};
case TALRTC:
case NERTC:
case VOLCRTC:
return {
sdk_type: window.zbyAVSDK_init_sdk_type,
videoSrc: talrtcsdk.initPullFlow(args.streamId, args.domId, args.mute, args.renderId, args.notAutoPlay, args.audioOnly)
};
case TRTC:
return {
sdk_type: TRTC,
videoSrc: trtcsdk.initPullFlow(args.streamId, args.domId, args.mute, args.renderId, args.notAutoPlay, args.audioOnly)
};
default:
break;
}
};
/**
* @function 恢复拉指定的流
* @param streamId:String 被拉取的流的 id,必选
* @return Promise | void
*/
export const startPullFlow = (streamId) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.play(streamId);
case ZEGO:
return zegosdk.playStream(streamId);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.startPlay(streamId);
case TRTC:
return trtcsdk.startPlay(streamId);
default:
break;
}
};
/**
* @function 暂停拉指定的流
* @param streamId:String 被拉取的流的 id,必选
* @param recovery:Boolean 是否回收播放器, 可选
* @return Promise | void
*/
export const stopPullFlow = (streamId, recovery) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
if (window.zby_isM1Type) {
return;
}
return rtcsdk.stop(streamId, recovery);
case ZEGO:
return zegosdk.stopPlayStream(streamId, recovery);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.stopPlay(streamId, recovery);
case TRTC:
return trtcsdk.stopPlay(streamId);
default:
break;
}
};
/**
* @function 暂停拉所有的流
* @return Promise | void
*/
export const stopAllPullFlow = (streamId, recovery) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.stopAllPullFlow(streamId, recovery);
case ZEGO:
return zegosdk.stopAllPlayStream(streamId, recovery);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.stopPlayAll();
case TRTC:
return trtcsdk.stopPlayAll();
default:
break;
}
};
/**
* @function 销毁拉指定的流
* @param streamId:String 被拉取的流的 id,必选
* @return Promise | void
*/
export const playDestroy = (streamId) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.playDestroy(streamId);
case ZEGO:
return zegosdk.stopPlayStream(streamId, true);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.stopPlay(streamId);
case TRTC:
return trtcsdk.stopPlay(streamId);
default:
break;
}
};
/**
* @function 切换播放流
* @param streamId:String 需要停止流的 id,必选
* @param toStreamId:String 被拉取的流的 id,必选
* @param toDomId:String <video> 标签的 id,可选
* @return Promise | void
*/
export const changePullFlow = (args) => {
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:
case NERTC:
case VOLCRTC:
return talrtcsdk.changePullFlow(args.streamId, args.toStreamId, args.toDomId);
case TRTC:
default:
break;
}
};
/**
* @function 获取本地扬声器列表
* @return Promise | void
*/
export const getSpeakerDeviceList = async () => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return await rtcsdk.getSpeakerDevice();
case ZEGO:
return await zegosdk.getSpeakerDeviceList();
case TALRTC:
case NERTC:
case VOLCRTC:
return await talrtcsdk.getSpeakerDeviceList();
case TRTC:
return await trtcsdk.getSpeakerDeviceListTrtc();
default:
return await zegosdk.getSpeakerDeviceList();
break;
}
};
/**
* @function 指定扬声器
* @param deviceId:String 扬声器设备 id,必选
* @return Promise | void
*/
export const setSpeakerDevice = async (deviceId, operationType) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return await rtcsdk.setSpeakerDevice({speakId:deviceId, operationType});
case ZEGO:
return await zegosdk.setSpeakerDevice({deviceId, operationType});
case TALRTC:
case NERTC:
case VOLCRTC:
return await talrtcsdk.setSpeakerDevice({ deviceId });
case TRTC:
return await trtcsdk.setSpeakerDevice({deviceId});
default:
break;
}
};
export const getSpeakerDevice = async () => {
switch (window.zbyAVSDK_init_sdk_type) {
case ZEGO:
return zegosdk.getCurrentSpeakerDevice();
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.getCurrentSpeakerDevice();
default:
return null;
}
};
/**
* @function 获取扬声器音量
* @return Promise | void
*/
export const getSpeakerVolume = async () => {
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:
case NERTC:
case VOLCRTC:
return await talrtcsdk.getCurrentSpeakerVolume();
case TRTC:
return JSON.parse((await trtcsdk.getCurrentSpeakerVolume()).msg).speakerVolume;
default:
break;
}
};
/**
* @function 设置扬声器音量
* @param volume:Number 扬声器音量,必选,范围 [0, 100]
* @return Promise | void
*/
export const setSpeakerVolume = (volume) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.setSpeakerVolume(volume);
case ZEGO:
return zegosdk.setSpeakerDeviceVolume(volume);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.setCurrentSpeakerVolume(volume);
case TRTC:
return trtcsdk.setCurrentSpeakerVolume(volume);
default:
break;
}
};
/**
* @function 控制扬声器是否静音
* @param mute:Boolean 是否静音,必选
* @return Promise | void
*/
export const setSpeakerMute = (mute) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.setSpeakerMute(mute);
case ZEGO:
return zegosdk.setSpeakerDeviceMute(mute);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.setSpeakerDeviceMute(mute);
case TRTC:
default:
break;
}
};
/**
* @function 获取 App 应用音量
* @return Promise | void
*/
export const getAppVolume = () => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.getCurrentAppSessionVolume();
case ZEGO:
return zegosdk.getSpeakerSimpleVolume();
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.getSpeakerSimpleVolume();
case TRTC:
default:
break;
}
};
/**
* @function 设置 App 应用音量
* @param volume:Number App 音量,必选,范围 [0, 100]
* @return Promise | void
*/
export const setAppVolume = (volume) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.setCurrentAppSessionVolume(volume);
case ZEGO:
return zegosdk.setSpeakerSimpleVolume(volume);
// 由于 Agora 的 App 音量取值范围是 [0, 255],所以需要做比例兼容
// volume = Math.floor((volume / 100) * 255);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.setSpeakerSimpleVolume(volume);
case TRTC:
default:
break;
}
};
/**
* @function 设置 App 静音
* @param mute:Boolean 是否静音,必选
* @return Promise | void
*/
export const setAppMute = (mute) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.setApplicationMute(mute);
case ZEGO:
return zegosdk.setSpeakerSimpleMute(mute);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.setSpeakerSimpleMute(mute);
case TRTC:
default:
break;
}
};
/**
* @function 获取麦克风列表
* @return Promise | void
*/
export const getMicrophoneDeviceList = async () => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return await rtcsdk.getMicrophoneDevice();
case ZEGO:
return await zegosdk.getMicrophoneDeviceList();
case TALRTC:
case NERTC:
case VOLCRTC:
return await talrtcsdk.getMicrophoneDeviceList();
case TRTC:
return await trtcsdk.getMicrophoneDeviceListTrtc();
default:
return await zegosdk.getMicrophoneDeviceList();
break;
}
};
/**
* @function 指定麦克风
* @param deviceId:String 麦克风 id,必须
* @return Promise | void
*/
export const setMicrophoneDevice = async (deviceId, operationType) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return await rtcsdk.setMicrophoneDevice({deviceId, operationType});
case ZEGO:
return await zegosdk.setMicrophoneDevice({deviceId, operationType});
case TALRTC:
case NERTC:
case VOLCRTC:
return await talrtcsdk.setMicrophoneDevice({ deviceId, operationType });
case TRTC:
return await trtcsdk.setMicrophoneDevice({deviceId});
default:
break;
}
};
/**
* @function 开麦/禁麦
* @param operation:Boolean 操作类型,false -> 关闭,true -> 打开,必选
* @return Promise | void
*/
export const openOrCloseMicrophone = async (operation) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return await rtcsdk.setRealTimeAudioMute(!operation);
case ZEGO:
return await zegosdk.enableMic(operation);
case TALRTC:
case NERTC:
case VOLCRTC:
return await talrtcsdk.openOrCloseMicrophone(operation);
case TRTC:
return await trtcsdk.openOrCloseMicrophone(operation);
default:
break;
}
};
/**
* @function 获取麦克风音量
* @return Promise | void
*/
export const getMicrophoneVolume = () => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.getMicrophoneVolume();
case ZEGO:
return zegosdk.getMicDeviceVolume();
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.getCurrentMicrophoneVolume();
case TRTC:
return trtcsdk.getCurrentMicrophoneVolume();
default:
break;
}
};
/**
* @function 设置麦克风音量
* @param volume:Number App 音量,必选,范围 [0, 100]
* @param mute:Boolean 是否静音
* @return Promise | void
*/
export const setMicrophoneVolume = (volume, mute) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.setMicrophoneVolume(volume, mute);
case ZEGO:
return zegosdk.setMicDeviceVolume(volume);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.setCurrentMicrophoneVolume(volume);
case TRTC:
return trtcsdk.setCurrentMicrophoneVolume(volume);
default:
break;
}
};
/**
* @function 控制麦克风是否静音
* @param mute:Boolean 是否静音,必选
* @return Promise | void
*/
export const setMicrophoneMute = (mute) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.setRealTimeAudioMute(mute);
case ZEGO:
return zegosdk.setMicDeviceMute(mute);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.muteLocalAudio(mute);
case TRTC:
default:
break;
}
};
/**
* @function 切换云控时退出房间、退出频道
* @return Promise | void
*/
export const leaveRoomWithChangeSDK = () => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.leaveRoom();
case ZEGO:
return zegosdk.leaveRoomWithChangeSDK();
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.leaveRoom();
case TRTC:
return trtcsdk.leaveRoom();
default:
break;
}
};
/**
* @function 退出房间、退出频道
* @return Promise | void
*/
export const leaveRoom = (type) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.leaveRoom();
case ZEGO:
return zegosdk.leaveRoom(type);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.leaveRoom();
case TRTC:
return trtcsdk.leaveRoom();
default:
break;
}
};
/**
* @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:
case NERTC:
case VOLCRTC:
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:
case NERTC:
case VOLCRTC:
// TODO StartMicrophone 里面有调用 enableAudioVolumeIndication 但目前是注释掉的状态
break;
default:
break;
}
};
/**
* @function 转推,录课
* @param type:String 动作类型,必选,'start' | 'stop' | 'pause' | 'resume'
* @return Promise | void
*/
export const turnPush = (type) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.sendRecordingMsg({ cmd: type });
case ZEGO:
return zegosdk.singleRecord(type);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.controlCdnStreaming(type);
case TRTC:
default:
break;
}
};
/**
* @function 听不听指定的用户的声音
* @param streamId:String 被拉取的流的 id,必选
* @param mute:Boolean 是否静音,必选,true -> 静音,false -> 不静音
* @return Promise | void
*/
export const setAudioMute = (streamId, mute) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.setMute(streamId, mute);
case ZEGO:
return zegosdk.activateAudioPlayStream(streamId, !mute);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.muteRemoteAudio(streamId, mute);
case TRTC:
return trtcsdk.muteRemoteAudio(streamId, mute);
default:
break;
}
};
/**
* @function 是否拉取音频流-是否关闭音频流--通过播放器id控制
* @param operation:Boolean,必选,true关闭 | false不关闭
* @param playerId:Number,必选, 播放器id
* @return Promise | void
*/
export const pullAudioFlow = (playerId, operation, streamId) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.pullAudioFlow(playerId, operation, 'client', streamId);
case ZEGO:
return zegosdk.pullAudioFlow(playerId, !operation, streamId);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.pullAudioFlow(playerId, operation, streamId);
case TRTC:
return trtcsdk.pullAudioFlow(playerId, operation, streamId);
default:
break;
}
};
/**
* @function 获取设备状态
* * @param { string } devicename //(设备名称,可为空)
* * @param { number } devicetype //(设备类型,1摄像头,2麦克风),3扬声器(mac端没有)
* @return: Promise
*/
// export const getDeviceState = (devicename, devicetype) => {
// switch (window.zbyAVSDK_init_sdk_type) {
// case RTC:
// return rtcsdk.getDeviceState(devicename, devicetype);
// case ZEGO:
// return zegosdk.getDeviceState(devicename, devicetype);
// default:
// break;
// }
// };
/**
* @function 看不看指定的用户的画面
* @param streamId:String 被拉取的流的 id,必选
* @param mute:Boolean 是否关闭画面,必选,true -> 关闭画面,false -> 不关闭画面
* @return Promise | void
*/
export const setVideoMute = (streamId, mute) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.controlPullAudioOnly(streamId, mute);
case ZEGO:
return zegosdk.activateVideoPlayStream(streamId, !mute);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.muteRemoteVideo(streamId, mute);
case TRTC:
return trtcsdk.muteRemoteVideo(streamId, mute);
default:
break;
}
};
/**
* @function 开启/关闭麦克风音量回调
* @param open:Boolean true -> 开启,false -> 关闭,必选
* @return void
*/
export const openMicVolumeCb = (open) => {
rtcsdk.openMicVolumeCb(open);
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
});
});
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;
}
};
export const stopMixtStream = (args) => {
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;
}
};
/**
* @function 单路录制
* @param args:Object 必选
* {
* type:String 开始/结束, 对应取值start/stop,必选
* groupId: String 分组id,可选,默认为 sdk初始化分组id
* streamId: String 流id,必选
* seqNum: String
* }
* @return void
*/
export const singleRecord = async (args) => {
const { type, groupId, streamId, userId, seqNum } = args;
const sid = `xrs51_${groupId}_${userId}`;
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;
}
};
/**
* @function 单路录制
* @param args:Object 必选
* {
* type:String 开始/结束, 对应取值start/stop,必选
* groupId: String 分组id,可选,默认为 sdk初始化分组id
* streamId: String 流id,必选
* }
* @return void
*/
export const recordPublishTarget = (args) => {
const { type, groupId, streamId, userId } = args;
const sid = `xrs51_${groupId}_${userId}`;
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;
}
};
export const getSnapshootId = (streamId) => {
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:
case NERTC:
case VOLCRTC:
if (talrtcsdk.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 设置摄像头参数(采集分辨率)
* @param width:Number 分辨率宽,必选,推荐 1280
* @param height:Number 分辨率高,必选,推荐 720
* @param frameRate:Number 帧率,必选,推荐 15
* @return Promise | void
*/
export const setCameraParams = (args, idx, streamId) => {
const { width, height, frameRate } = args;
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.setCameraParam(width, height, frameRate);
case ZEGO:
return zegosdk.setCameraParam(width, height, idx);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.setCameraCaptureResolution(width, height, streamId);
case TRTC:
return trtcsdk.setCameraCaptureResolution(width, height);
default:
break;
}
};
/**
* @function 设置编码分辨率
* @param width:Number 分辨率宽,必选,推荐 1280
* @param height:Number 分辨率高,必选,推荐 720
* @param frameRate:Number 帧率,必选,推荐 15
* @return Promise | void
*/
export const setEncodeParams = (args, idx, streamId) => {
const { width, height, frameRate } = args;
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.setEncodeParam(width, height, frameRate);
case ZEGO:
return zegosdk.setVideoEncodeResolution(width, height, idx);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.setCameraEncodeFps(frameRate, streamId) && talrtcsdk.setCameraEncodeResolution(width, height, streamId);
case TRTC:
return zegosdk.setVideoEncodeResolution(width, height);
default:
break;
}
};
/**
* @function 设置码率
* @param bitrate:Number 码率,必选,推荐 15
* @return Promise | void
*/
export const setBitRate = (bitrate, idx, streamId) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.setBitRate(bitrate);
case ZEGO:
return zegosdk.setVideoBitrate(bitrate, idx);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.setCameraEncodeBitrate(bitrate, streamId);
case TRTC:
return trtcsdk.setCameraEncodeBiarate(bitrate);
default:
break;
}
};
/**
* @function 本地视频录制
* @param type 开始/结束
* @param path 录制路径
* @return Promise | void
*/
export const localRecordVideo = (type, path) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
rtcsdk.localRecordVideo(type, path);
break;
case ZEGO:
zegosdk.localRecordVideo(type, path);
break;
case TALRTC:
case NERTC:
case VOLCRTC:
talrtcsdk.localRecordVideo(type, path);
break;
default:
break;
}
};
/**
* @function 本地音频录制
* @param type 开始/结束
* @param path 录制路径
* @return Promise | void
*/
export const localRecordAudio = (type, path) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
rtcsdk.localRecordAudio(type, path);
break;
case ZEGO:
zegosdk.localRecordAudio(type, path);
break;
case TALRTC:
case NERTC:
case VOLCRTC:
// FIXME METHOD_NOT_IMPLEMENT;
break;
default:
break;
}
};
export const getDesktopPath = () => {
switch (window.zbyAVSDK_init_sdk_type) {
case ZEGO:
return zegosdk.getDesktopPath();
case TALRTC:
case NERTC:
case VOLCRTC:
// return talrtcsdk.getDesktopPath();
default:
return zegosdk.getDesktopPath();
}
};
/**
* @function 本地录制
* @param {string | undefined} fileName
* @param {number} fileType 1:flv 2:mp4
* @param {number} idx 0:主流 1:辅流 2:RTMP流
* @returns {Promise<any>}
*/
export const startCaptureRecord = (fileName, fileType, idx, path) => {
if (idx === 2) {
defaultApi.writeLog(`zbyAVSDK startCaptureRecord idx: ${idx}, use zego sdk`);
return zegosdk.startCaptureRecord(fileName, fileType, idx, path);
}
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
break;
case ZEGO:
return zegosdk.startCaptureRecord(fileName, fileType, idx, path);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.startRecord(fileName, fileType, idx, path);
default:
break;
}
};
/**
* 结束外部音频采集(通知sdk)
* @param {number} idx 0 | 1 | 2
* @returns
*/
export const stopCaptureRecord = (idx) => {
if (idx === 2) {
defaultApi.writeLog(`zbyAVSDK stopCaptureRecord idx: ${idx}, use zego sdk`);
return zegosdk.stopCaptureRecord(idx);
}
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
break;
case ZEGO:
return zegosdk.stopCaptureRecord(idx);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.stopRecord(idx);
default:
break;
}
};
/**
* @function 设置采集扬声器声音
* @param { string } deviceId 设备id
* @param {boolean} speaker 采集扬声器声音=true/不采集=false
* @return void
*/
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:
case NERTC:
case VOLCRTC:
return talrtcsdk.enableAudioSpeakerCapture(speaker);
case TRTC:
return trtcsdk.setAudioSpeakerCapture(speaker);
default:
break;
}
};
/**
* @function 设置混流和背景色
* @param { boolean } type true=开启/false=关闭
* @param { number } id 需要混合的采集器id
* @param { object } rgb
* @param { number } rgb.r
* @param { number } rgb.g
* @param { number } rgb.b
* @return: Promise
*/
export const setMixStream = (type, id, rgb) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.setMixStream(type, id, rgb);
case ZEGO:
break;
case TALRTC:
case NERTC:
case VOLCRTC:
// FIXME METHOD_NOT_IMPLEMENT;
break;
default:
break;
};
};
/**
* @function 采集器截图
* @param { string } fileName 文件名,需要后缀名。例如:333.jpg
* @return: Promise
*/
export const captureSnapShot = (fileName) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.captureSnapShot(fileName);
case ZEGO:
break;
case TALRTC:
case NERTC:
case VOLCRTC:
// FIXME METHOD_NOT_IMPLEMENT;
break;
default:
break;
}
};
/**
* @function 播放器截图
* @param { string } fileName 文件名,需要后缀名。例如:333.jpg
* @return: Promise
*/
export const playerSnapShot = (id, fileName) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.playerSnapShot(id, fileName);
case ZEGO:
break;
case TALRTC:
case NERTC:
case VOLCRTC:
// FIXME METHOD_NOT_IMPLEMENT;
break;
default:
break;
}
};
/**
* @function 设置打开/关闭摄像头
* @param { boolean } type true=开启/false=关闭
* @return: Promise
*/
export const openOrCloseCameraAndMicrophone = (type) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.openOrCloseCameraAndMicrophone(type);
case ZEGO:
break;
case TALRTC:
case NERTC:
case VOLCRTC:
// FIXME METHOD_NOT_IMPLEMENT;
break;
default:
break;
}
};
/**
* @function 加载采集插件的输入数据 //调用后,zego 可以向采集插件传送摄像头数据,用于拼接
* @return: Promise
*/
export const loadCollectionInputEntry = () => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
break;
case ZEGO:
return zegosdk.loadCollectionInputEntry();
case TALRTC:
case NERTC:
case VOLCRTC:
// FIXME METHOD_NOT_IMPLEMENT;
break;
default:
break;
}
};
/**
* @function 加载采集插件的输出数据 //调用后,采集插件向zego传送数据
* @return: Promise
*/
export const loadCollectionOutputEntry = () => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
break;
case ZEGO:
return zegosdk.loadCollectionOutputEntry();
case TALRTC:
case NERTC:
case VOLCRTC:
// 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:
case NERTC:
case VOLCRTC:
return talrtcsdk.loadCollectionInputEntry2(stuArray);
default:
break;
}
};
/**
* @function 加载采集插件的输出数据 //调用后,zego 可以向采集插件传送摄像头数据,用于拼接
* @return: Promise
*/
export const setCDNPublishTarget = (pRtmpUrl,idx) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
break;
case ZEGO:
return rtcsdk.setCDNPublishTarget(pRtmpUrl,idx);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.addPublishRtmpStreamUrl(pRtmpUrl);
default:
break;
}
};
/**
* @function 设置预览镜像状态
* @param { boolean } type true=开启 false=关闭
* @return: Promise
*/
export const setMirrorStatus = (type) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.setMirrorStatus(type);
case ZEGO:
return zegosdk.setMirrorStatus(type);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.setMirrorStatus(type);
default:
break;
}
};
/**
* @function 设置拉流镜像状态
* @param { boolean } type true=开启 false=关闭
* @return: Promise
*/
export const setPlayViewMirror = (type, id) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.setRTCPlayViewMirror(type, id);
case ZEGO:
return zegosdk.setPlayViewMirror(type);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.setPlayViewMirror(type, id);
default:
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:
case NERTC:
case VOLCRTC:
return talrtcsdk.setMirrorStatus(mode);
default:
break;
}
};
/**
* @function 开启美颜
* @param { boolean } type true=开启 false=关闭
* @return: Promise
*/
export const startSenseMe = () => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.startSenseMe();
case ZEGO:
return zegosdk.startSenseMe();
case TALRTC:
case NERTC:
case VOLCRTC:
// FIXME METHOD_NOT_IMPLEMENT;
break;
default:
break;
}
};
/**
* @function 设置美颜参数
* @param { boolean } type true=开启 false=关闭
* @return: Promise
*/
export const setBeautifyParam = (type, value) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.setBeautifyParam(type, value);
case ZEGO:
return zegosdk.setBeautifyParam(type, value);
case TALRTC:
case NERTC:
case VOLCRTC:
// FIXME METHOD_NOT_IMPLEMENT;
break;
default:
break;
}
};
/**
* @function 关闭美颜
* @param { boolean } type true=开启 false=关闭
* @return: Promise
*/
export const endSenseMe = () => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.endSenseMe();
case ZEGO:
return zegosdk.endSenseMe();
case TALRTC:
case NERTC:
case VOLCRTC:
// 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:
case NERTC:
case VOLCRTC:
return talrtcsdk.setAudioMixMode(mixMode, streamIdArr);
default:
break;
}
};
//获取第三方底层流媒体版本号
export const getSDKVersion = async () => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.getSDKVersion();
case ZEGO:
return zegosdk.getSDKVersion();
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.getSDKVersion();
default:
break;
}
};
//获取第三方底层流媒体内核版本号
export const getSDKCoreVersion = async () => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return rtcsdk.getSDKVersion();
case ZEGO:
return zegosdk.getSDKVersion();
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.getSDKCoreVersion();
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:
case NERTC:
case VOLCRTC:
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:
case NERTC:
case VOLCRTC:
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:
case NERTC:
case VOLCRTC:
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:
case NERTC:
case VOLCRTC:
// FIXME METHOD_NOT_IMPLEMENT;
break;
default:
break;
}
};
/**
* 第四路流类型设置
* @param {number} type 6: 视频:主流 音频:麦克风+扬声器 7: 外部音频源,外部视频源,数据来源player
* @returns
*/
export const setFourthStreamType = (type, idx, streamId) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
break;
case ZEGO:
return zegosdk.setFourthStreamType(type, idx);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.setFourthStreamType(type, streamId);
default:
break;
}
};
export const setVideoSource = (idx, type) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
break;
case ZEGO:
return zegosdk.setVideoSource(idx, type);
case TALRTC:
case NERTC:
case VOLCRTC:
// return talrtcsdk.setVideoSource(idx, type);
default:
break;
}
};
/**
* @function 设置辅路通道音频采集模式
* @return: Promise
*/
export const setAUXAudioType = (type) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
break;
case ZEGO:
return zegosdk.setAUXAudioType(type);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.setAudioType(type);
default:
break;
}
};
/**
* @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 设置录制通道音频采集模式
* @return: Promise
*/
export const setThirdAudioType2 = async (type) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
break;
case ZEGO:
return zegosdk.setThirdAudioType(type);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.enableRTCAudioMixMode(type === 32, type);
default:
break;
}
};
/**
* @function 判断推流类型
* @return: Promise
*/
export const getStreamType_zego = () => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
break;
case ZEGO:
return zegosdk.getStreamType();
default:
break;
}
};
export const enableBeautify = (enable, streamId, idx) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return;
case ZEGO:
return zegosdk.enableBeautify(enable, streamId, idx);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.enableBeautify(enable, streamId, idx);
default:
return zegosdk.enableBeautify(enable, streamId, idx);
}
};
export const setBeautifyParam2 = (mode, submode, value, streamId, idx, image) => {
switch (window.zbyAVSDK_init_sdk_type) {
case RTC:
return;
case ZEGO:
return zegosdk.setBeautifyParam2(mode, submode, value, streamId, idx, image);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.setBeautifyParam(mode, submode, value, streamId, image);
default:
return zegosdk.setBeautifyParam2(mode, submode, value, streamId, idx, image);
}
};
export const setEngineConfig = (key, value) => {
switch (window.zbyAVSDK_init_sdk_type) {
case ZEGO:
return zegosdk.setEngineConfig(key, value);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.setEngineConfig(key, value);
default:
return zegosdk.setEngineConfig(key, value);
}
};
export const getMicrophoneLoudness = () => {
switch (window.zbyAVSDK_init_sdk_type) {
case ZEGO:
return zegosdk.getMicrophoneLoudness();
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.getMicrophoneLoudness();
default:
return zegosdk.getMicrophoneLoudness();
}
};
export const getCurrentSpeakerId = () => {
switch (window.zbyAVSDK_init_sdk_type) {
case ZEGO:
return zegosdk.getCurrentSpeakerId();
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.getCurrentSpeakerId();
default:
return zegosdk.getCurrentSpeakerId();
}
};
export const getCurrentMicrophoneId = () => {
switch (window.zbyAVSDK_init_sdk_type) {
case ZEGO:
return zegosdk.getCurrentMicrophoneId();
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.getCurrentMicrophoneId();
default:
return zegosdk.getCurrentMicrophoneId();
}
};
export const getCurrentCameraId = () => {
switch (window.zbyAVSDK_init_sdk_type) {
case ZEGO:
return zegosdk.getCurrentCameraId();
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.getCurrentCameraId();
default:
return zegosdk.getCurrentCameraId();
}
};
export const takeLocalSnapShot = (streamId, idx) => {
switch (window.zbyAVSDK_init_sdk_type) {
case ZEGO:
return zegosdk.takeLocalSnapShot(streamId, idx);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.takeLocalSnapShot(streamId, idx);
default:
return zegosdk.takeLocalSnapShot(streamId, idx);
}
};
export const takeRemoteSnapShot = (streamId) => {
switch (window.zbyAVSDK_init_sdk_type) {
case ZEGO:
return zegosdk.takeRemoteSnapShot(streamId);
case TALRTC:
case NERTC:
case VOLCRTC:
return talrtcsdk.takeRemoteSnapShot(streamId);
default:
return zegosdk.takeRemoteSnapShot(streamId);
}
};
const setThirdAudioCallbackType = (sdkType) => {
let type = sdkVale[sdkType];
return zegosdk.setThirdAudioType(type);
};
export default {
init,
recoverSdk,
deviceCheckerInit,
stopCheckDevice,
changeSDK,
unloadExtension,
startPushFlow,
stopPushFlow,
initPullFlow,
startPullFlow,
stopPullFlow,
stopAllPullFlow,
playDestroy,
changePullFlow,
getCameraDeviceList,
setCameraDevice,
openOrCloseCamera,
startPreview,
stopPreview,
getOrLocateVideo,
getSpeakerDeviceList,
setSpeakerDevice,
getSpeakerDevice,
getSpeakerVolume,
setSpeakerVolume,
setSpeakerMute,
getAppVolume,
setAppVolume,
setAppMute,
getMicrophoneDeviceList,
setMicrophoneDevice,
openOrCloseMicrophone,
getMicrophoneVolume,
setMicrophoneVolume,
setMicrophoneMute,
leaveRoomWithChangeSDK,
leaveRoom,
turnPush,
setAudioMute,
pullAudioFlow,
setVideoMute,
openMicVolumeCb,
startMixtStream,
stopMixtStream,
singleRecord,
getSnapshootId,
setCameraParams,
setEncodeParams,
setBitRate,
recordPublishTarget,
localRecordVideo,
localRecordAudio,
getDesktopPath,
startCaptureRecord,
stopCaptureRecord,
teacherStartLinkMic,
teacherStopLinkMic,
setSpeakerCapture,
setMixStream,
captureSnapShot,
playerSnapShot,
openOrCloseCameraAndMicrophone,
setMirrorStatus,
getStreamType_zego,
startSenseMe,
setBeautifyParam,
endSenseMe,
setPlayViewMirror,
setPushStreamVideo,
getSDKVersion,
getSDKCoreVersion,
getCameraSupportedResolution,
setAudioMixMode,
setPushViewMirror,
deinit,
startMultiScreen,
getAllChannelIndex,
startAudioExCapture,
setFourthStreamType,
startSoundLevelMonitor,
sendMediaSideInfo,
enableHighlight,
setVideoSource,
setAUXAudioType,
setThirdAudioType,
setThirdAudioType2,
mixedstuVideo,
setThirdAudioCallbackType,
enableBeautify,
setBeautifyParam2,
setEngineConfig,
getMicrophoneLoudness,
getCurrentSpeakerId,
getCurrentMicrophoneId,
getCurrentCameraId,
takeLocalSnapShot,
takeRemoteSnapShot,
// getDeviceState
};