AVDEngine

AVDEngine

new AVDEngine()

Description:
  • AVDEngine构造函数,实例化avdEngine 对象,用于获取摄像头列表、麦克风列表、检查浏览器兼容性、控制日志等级及日志保存等功能。

Example
var avdEngine = new AVDEngine();

Methods

addCallback(type, callback)

Description:
  • 引擎级别的回调

Example
avdEngine.addCallback(EngineCallback.device_microphone_change, onMicrophoneDeviceChangeHandle)
avdEngine.addCallback(EngineCallback.device_camera_change, onCameraDeviceChangeHandle)

//param {String} changeType -  设备变化类型,可以为"add"、"remove"
//param {Array} deviceIdList - 变动的麦克风设备ID列表
function onMicrophoneDeviceChangeHandle(changeType, deviceIdList) {}

//param {String} changeType -  设备变化类型,可以为"add"、"remove"
//param {Array} deviceIdList - 变动的摄像头设备ID列表
function onCameraDeviceChangeHandle(changeType, deviceIdList) {}
Parameters:
Name Type Description
type EngineCallback

回调枚举标识, 包括EngineCallback.device_microphone_changet 和 device_camera_change.

callback Object

回调方法名,可以自定义,建议保持默认值

checkAudioLevel(intervalMilis, showAudioLevel)

Description:
  • 设备检测,麦克风音量的检测回调

Example
avdEngine.checkAudioLevel(1000,showAudioLevel);
function showAudioLevelm(audioLevel) {}
Parameters:
Name Type Description
intervalMilis int

音量采购频率,单位为毫秒

showAudioLevel Object

音量值回调方法

checkBrowserPluginSupport() → {boolean}

Description:
  • 检测当前浏览器是否通过插件支持rtc能力

Example
var browserPluginSupport = avdEngine.checkBrowserPluginSupport();
Returns:
  • 是否支持, false:不支持; true:支持
Type
boolean

checkBrowserSupport() → {boolean}

Description:
  • 检测当前浏览器是否支持rtc能力,目前仅支持Chrome内核的浏览器、firefox和safair.

Example
var browserSupport = avdEngine.checkBrowserSupport();
Returns:
  • 是否支持, false:不支持; true:支持
Type
boolean

checkCloseAudio()

Description:
  • 设备检测,关闭麦克风

Example
avdEngine.checkCloseAudio();

checkCloseVideo()

Description:
  • 设备检测,关闭摄像头

Example
avdEngine.checkCloseVideo();

checkOpenAudio(microphoneId) → {Object}

Description:
  • 设备检测,打开麦克风

Example
avdEngine.checkOpenAudio().then(showAudio).otherwise(alertError);

function showAudio(stream) {
   checkAudio.srcObject = stream;
}
Parameters:
Name Type Description
microphoneId String

麦克风ID,空字符串时则默认选择打开一个麦克风

Returns:
  • 音频流对象
Type
Object

checkOpenVideo(cameraId, resolution, framerate) → {Object}

Description:
  • 设备检测,打开摄像头

Example
avdEngine.checkOpenVideo(cameraId, resolution, framerate).then(showVideo).otherwise(alertError);

function showVideo(stream) {
   checkVideo.srcObject = stream;
}
Parameters:
Name Type Description
cameraId String

摄像头ID,空字符串时则默认选择打开一个摄像头

resolution Int

视频分辨率

framerate Int

视频帧率

Returns:
  • 视频流对象
Type
Object

checkOpenVideoAndAudio(cameraId, microphoneId, resolution, framerate) → {Object}

Description:
  • 设备检测,打开摄像头和麦克风

Example
avdEngine.checkOpenVideoAndAudio().then(showVideoAndAudio).otherwise(alertError);

function showVideoAndAudio(stream) {
   checkVideo.srcObject = stream.videoStream;
   checkAudio.srcObject = stream.audioStream;
}
Parameters:
Name Type Description
cameraId String

摄像头ID,空字符串时则默认选择打开一个摄像头

microphoneId String

麦克风ID,空字符串时则默认选择打开一个麦克风

resolution Int

视频分辨率

framerate Int

视频帧率

Returns:
  • 音视频流对象
Type
Object

getAllDevices() → {Object}

Description:
  • 获取当前所有设备的原始对象,需要应用层自己去疏理摄像头,麦克风等。

Example
avdEngine.getAllDevices().then(onAllDevices).otherwise(showError);

function onAllDevices(devices) {
   devices.forEach(function(device){
	     if (device.kind === 'videoinput' || device.kind === 'video') {
	           console.log("camera:",device);
      }else if(device.kind === 'audioinput' || device.kind === 'audio'){
	           console.log("microphone:",device);
      }else if(device.kind === 'audiooutput'){
	           console.log("speaker:",device);
      }
   }
}
Returns:
  • devices - 所有设备的原始对象
Type
Object

getAudioAutoSub()

Description:
  • 获取当前的音频的订阅方式,true为自动订阅,flase为手动订阅

Example
avdEngine.getAudioAutoSub();

getAudioBatchEnabled()

Description:
  • 获取音频自动订阅时,对多路音频批量订阅处理的状态值

getAudioCoding()

Description:
  • 获取当前的音频编码格式

Example
avdEngine.getAudioCoding();

getBrowserDetect() → {Object}

Description:
  • 获取浏览器检测结果

Example
var detect = avdEngine.getBrowserDetect();

detect.browser.name:  浏览器内核名称
detect.browser.fullVersion: 内核版本
detect.browser.isCustomized: 是否是定制外壳
detect.browser.shellFullVersion:外壳版本
detect.osName: 操作系统名称
detect.getUserMediaSupport:是否支持webrtc的GetUserMedia
detect.RTCPeerConnectionSupport:是否支持webrtc的RTCPeerConnection
detect.dataChannelSupport: 是否支持webrtc的DataChannel
detect.WebSocketSupport: 是否支持WebSocket
detect.screenSharingSupport: 是否支持屏幕共享(chrome42以上及https访问)
detect.h264Support: 是否支持H264(chrome52及以上)
Returns:
  • 浏览器检测结果对象
Type
Object

getCustomerTokenEnabled()

Description:
  • 获取当前是否开启客户自己的认证token状态值

getDataCryptoType()

Description:
  • 获取当前的数据加密类型

Example
avdEngine.getDataCryptoType();

getElectronManager()

Description:
  • 获取ElectronManager对象

Example
var electronManager = avdEngine.getElectronManager();

getMediaConnectType()

Description:
  • 获取媒体通道协议,0 表示udp优先; 1表示 tcp优先,默认为0

Example
avdEngine.getMediaConnectType();

getResolutionEnum()

Description:
  • 获取摄像头分辨率枚举,该枚举值只是罗列了主流的分辨率,而非真实的当前摄像头支持的分辨率集。

Example
avdEngine.getResolutionEnum().then(fillResolutionElement);

function fillResolutionElement(resolutionEnum){
	    for(var key in resolutionEnum){
			 	var resolutionObject = resolutionEnum[key];
			 	var value = resolutionObject.width +" X " + resolutionObject.height;
	     }
}

getRoom(roomId) → {Object}

Description:
  • 获取房间对象

Parameters:
Name Type Description
roomId String

房间ID

Returns:

room - 房间对象

Type
Object

getSimulcastEnabled()

Description:
  • 获取视频是否开启多流的状态值

getStreamExporterManager() → {Object}

Description:
  • 获取流导出对象

Returns:

streamExporterManager - 流导出对象

Type
Object

getVersion() → {String}

Description:
  • 获取当前rtc web SDK的版本号

Example
var Version = avdEngine.getVersion();
Returns:
  • 版本号
Type
String

getVideoCoding()

Description:
  • 获取当前的视频编码格式

Example
avdEngine.getVideoCoding();

init(serverURI, accessToken, isUseCascade)

Description:
  • 引擎初始化

Parameters:
Name Type Description
serverURI String

MCU服务器地址

accessToken String

访问令牌

isUseCascade boolean

是否级联加入会议,可以不传,默认为false

initDevice() → {int}

Description:
  • 初始化摄像头、麦克风设备

    逻辑:摄像头设备会全部初始化到服务器,麦克风设备只会初始化默认的一个到服务器

Example
avdEngine.initDevice().then(function(result){
	   if(result == 1){
	      console.log('设备初始化完成');
    }
});
Returns:
  • 返回初始化完成状态。1:代表完成
Type
int

initWithOEM(serverURI, oemName)

Description:
  • avdEngine OEM初始化

Parameters:
Name Type Description
serverURI String

MCU服务器地址

oemName String

oem名称

obtainRoom(roomId) → {Object}

Description:
  • 获取房间。如房间存在,直接返回,不存在时创建房间后返回

Example
var roomId = '13124323454';
room = avdEngine.obtainRoom(roomId);
Parameters:
Name Type Description
roomId String

房间ID

Returns:

room - 房间对象

Type
Object

refreshDevice()

Description:
  • 设备热插拔时,通过该方法可以更新设备资源。

    逻辑:摄像头设备会全部初始化到服务器,麦克风设备只会初始化默认的一个到服务器

setApplyToElectron(islectron, protocolStr)

Description:
  • Electron开发应用时,设置应用的协议

Parameters:
Name Type Description
islectron Boolean

islectron true为应用于Electron

protocolStr String

protocolStr Electron应用时的协议,可不填,默认为http:

setAudioAutoSub(isAudioAutodSub)

Description:
  • 设置音频订阅方式是否为自动订阅,默认值为true

Example
avdEngine.setAudioAutoSub(false);
Parameters:
Name Type Description
isAudioAutodSub Boolean

true为自动订阅,flase为手动订阅

setAudioBatchEnabled(isAudioBatch)

Description:
  • 音频自动订阅时,设置对多路音频批量订阅处理,这样可以只进行一次SDP交互以提高性能,默认值为false,

Example
avdEngine.setAudioBatchEnabled(true);
Parameters:
Name Type Description
isAudioBatch Boolean

isAudioBatch false为不开启,true为开启

setAudioCoding(audioCodingType)

Description:
  • 设置音频编码格式

Example
avdEngine.setAudioCoding(AudioCodingType.opus);
Parameters:
Name Type Description
audioCodingType AudioCodingType

音频编码格式(枚举型),默认值为AudioCodingType.opus

setAutoGainControl(enable)

Description:
  • 设置自动增益

Parameters:
Name Type Description
enable Boolean

setBugout(logFilename)

Description:
  • 设置日志的可输出下载地址

Example
avdEngine.setBugout(avdlog.txt);
Parameters:
Name Type Description
logFilename String

输出下载地址

setCustomerTokenEnabled(customerTokenEnabled)

Description:
  • 设置是否开启客户自己的认证token,不调接口设置时,默认值为不开启

Example
avdEngine.setCustomerTokenEnabled(true);
Parameters:
Name Type Description
customerTokenEnabled Boolean

customerTokenEnabled false为不开启,true为开启

setDataCryptoType(dataCryptoType)

Description:
  • 设置数据加密类型

Example
avdEngine.setDataCryptoType(DataCryptoType.AES256);
Parameters:
Name Type Description
dataCryptoType DataCryptoType

数据加密类型(枚举型),默认值为DataCryptoType.AES128

setDefaultMediaPublishKeepAliveTime(keepAliveTime)

Description:
  • 设置媒体流推送的保活时长(单位为毫秒),不设置默认为15000毫秒

Parameters:
Name Type Description
keepAliveTime int

保活时长

setDefaultScreenParams(maxWidth, maxHeight, minFrameRate, maxFrameRate)

Description:
  • 设置桌面共享相关的默认参数值

Example
avdEngine.setDefaultScreenParams(1080,720,5,10);
Parameters:
Name Type Description
maxWidth int

分辨率最大宽度,默认值为1920

maxHeight int

分辨率最大高度,默认值为1080

minFrameRate int

最小帧率, 默认值为5

maxFrameRate int

最大帧率, 默认值为10

setDefaultVideoParams(width, height, resolutionSetType, frameRate)

Description:
  • 设置视频相关的默认参数值

Example
avdEngine.setDefaultVideoParams(1080,720,ResolutionSetType.ideal,25);
Parameters:
Name Type Description
width int

分辨率宽,默认值为640

height int

分辨率高,默认值为480

resolutionSetType Object

分辨率设置类型枚举,默认值为强制即ResolutionSetType.ideal

frameRate int

视频帧率,默认值为20

setEchoCancellation(enable)

Description:
  • 设置回声消除

Example
avdEngine.setEchoCancellation(false);
Parameters:
Name Type Description
enable Boolean

是否开启回声消除,默认为true

setEnableHardwareEncoding(isEnable)

Description:
  • 在加入会议之前设置是否启用硬件编码,默认为false,推荐有独立显卡的电脑设备开启,如性能足够,可实现高分辨率、高码率和高帧率

Parameters:
Name Type Description
isEnable Boolean

是否开启硬件编码

setIgnoreModifyResourceReq(isIgnore)

Description:
  • 是否忽略服务器下发的资源调整信令,true则不会响应服务器调整资源的通知,例如没有人订阅时发布的视频不会自动降低分辨率码率等

Parameters:
Name Type Description
isIgnore Boolean

是否忽略修改资源请求

setLog(appenderModel, logLevel)

Description:
  • 设置日志显示方式和日志级别

Example
avdEngine.setLog(Appender.browserConsole, LogLevel.debug);
Parameters:
Name Type Description
appenderModel Appender

日志显示方式(枚举型), 默认值为Appender.browserConsole

logLevel LogLevel

日志级别(枚举型),默认值为LogLevel.info

setMcuClusterRouteParams(mcuClusterRouteParams)

Description:
  • 在分布式集群部署中,设置加入房间时mcu服务器的路由参数分配

Parameters:
Name Type Description
mcuClusterRouteParams Object

参数值格式参考如:{ip_tag":"local","idc_code":"idc_code"} ip_tag:对应于 rtc_node_addr 中的tag标志,用于区分同一台服务器的多网卡地址,可以自定义,然后在参数中传入。 举例的话,比如 'local','internal','dianxin','liantong' idc_code:对应于 rtc_node 中的 idc_code标志,用于区分不同的服务器,唯一,可以自定义。 比如北京服务器设置为'beijing',杭州的设置为'hangzhou',然后在参数中传入,用于定位到服务器。

setMediaConnectType(mediaType,)

Description:
  • 设置媒体通道协议

Example
avdEngine.setMediaConnectType(1);
Parameters:
Name Type Description
mediaType, int

0 表示udp优先; 1表示 tcp优先,默认为0

setNoiseSuppression(enable)

Description:
  • 设置降噪

Parameters:
Name Type Description
enable Boolean

setRecordingMicrophone(microphoneId)

Description:
  • 设置成当前使用的麦克风

Parameters:
Name Type Description
microphoneId String

麦克风设备Id

setReportLogger(appSign, appFunName)

Description:
  • 日志内容通过应用层提供的函数进行上报

Parameters:
Name Type Description
appSign string

应用层设置的标识,用于区别某用户某一次加入会议所产生的所有日志

appFunName Object

应用层设置的方法函数,SDK调用该函数上报日志内容

setRestFullProtocol(protocolStr)

Description:
  • 设置RestFull访问时应用的协议。 不设置默认取document.location.protocol

Parameters:
Name Type Description
protocolStr String

protocolStr RestFull访问应用时的协议,可填写如https:

setSimulcastEnabled(isSimulcast)

Description:
  • 设置视频是否开启多流,默认值为false

Example
avdEngine.setSimulcastEnabled(true);
Parameters:
Name Type Description
isSimulcast Boolean

isSimulcast false为不开启,true为开启

setVideoCoding(videoCodingType)

Description:
  • 设置视频编码格式

Example
avdEngine.setVideoCoding(VideoCodingType.VP8);
Parameters:
Name Type Description
videoCodingType VideoCodingType

视频编码格式(枚举型),默认值为videoCodingType.H264