# 设备管理
# 1. 输入音频设备管理
# 获取音频输入设备列表
var webPlugin = new WebPlugin();
/**
* @desc 获取音频输入设备列表
*/
webPlugin.GetAudioInputs();
获取音频输入设备列表通知:
var webPlugin = new WebPlugin();
/**
* @desc 获取音频输入设备列表结果
* @param {array} inputs - 音频输入设备列表
* [
* {
* "InputId":"id1",
* "InputName":"name1"
* },
* {
* "InputId":"id2",
* "InputName":"name2"
* }
* ]
*/
webPlugin.OnGetAudioInputsResult = function (inputs) {
var selectDOM = document.getElementById('select-audio-input');
selectDOM.innerHTML = '';
selectDOM.selectIndex = 0;
for (i = 0; i < inputs.length; i++) {
selectDOM.options.add(new Option(inputs[i].InputName, inputs[i].InputId));
}
}
# 设置默认音频输入设备
通话时默认打开设置的音频输入设备。
var webPlugin = new WebPlugin();
/**
* @desc 设置默认音频输入设备
* @param {string} inputId - 输入设备id
*/
var value = selectDOM.options[selectDOM.selectedIndex].value
webPlugin.SetDefaultAudioInput(value);
# 切换当前音频输入设备
音频输入设备进行切换。
var webPlugin = new WebPlugin();
/**
* @desc 切换当前音频输入设备
* @param {string} inputId - 输入设备id
*/
var value = selectDOM.options[selectDOM.selectedIndex].value
webPlugin.ChangeAudioInput(value);
# 音频输入音量上报
音量值 0 - 100
webPlugin.OnAudioInputVolumeNotify = function (volume) {
console.log('OnAudioInputVolumeNotify', volume);
}
# 开关音量上报通知
是否上报
webPlugin.EnableAudioInputVolumeNotify(enable);
# 开启音频输入测试
可以指定音频设备ID,不指定就是默认设备。
webPlugin.EnableAudioInputTest(enable, audioId);
# 2. 输出音频设备管理
# 获取音频输出设备列表
var webPlugin = new WebPlugin();
/**
* @desc 获取音频输出设备列表
*/
webPlugin.GetAudioOutputs()
获取音频输出设备列表通知:
var webPlugin = new WebPlugin();
/**
* @desc 获取音频输出设备列表结果
* @param {array} outputs - 音频输出设备列表
* [
* {
* "OutputId":"id1",
* "OutputName":"name1"
* },
* {
* "OutputId":"id2",
* "OutputName":"name2"
* }
* ]
*/
webPlugin.OnGetAudioOutputsResult = function (outputs) {
console.log('onGetAudioOutputsResult', outputs);
};
# 设置默认音频输出设备
通话时默认打开设置的音频输出设备。
var webPlugin = new WebPlugin();
/**
* @desc 设置默认音频输出设备
* @param {string} outputId - 输出设备id
*/
webPlugin.SetDefaultAudioOutput(outputId);
# 切换当前音频输出设备
音频输出设备进行切换。
var webPlugin = new WebPlugin();
/**
* @desc 切换当前音频输出设备
* @param {string} outputId - 输出设备id
*/
webPlugin.ChangeAudioOutput(outputId);
设置默认音频输出设备和切换音频输出设备示例代码:
function SetAudioOutput() {
var selectDOM = document.getElementById('select-audio-output');
var value = selectDOM.options[selectDOM.selectedIndex].value
if (SDK_STATE.isTalking) {
webPlugin.ChangeAudioOutput(value);
} else {
webPlugin.SetDefaultAudioOutput(value);
}
}
# 3. 视频设备管理
# 获取摄像头列表
var webPlugin = new WebPlugin();
/**
* @desc 获取摄像头列表
*/
webPlugin.GetCameras();
获取摄像头列表的结果通知:
var webPlugin = new WebPlugin();
/**
* @desc 获取摄像头设备列表结果
* @param {array} Cameras - 音频输入设备列表
* [
* {
* "CameraId":"id1",
* "CameraName":"name1"
* },
* {
* "CameraId":"id2",
* "CameraName":"name2"
* }
* ]
*/
webPlugin.OnGetCamerasResult = function (cameras) {
console.log('OnGetCamerasResult', cameras);
}
# 切换摄像头
var webPlugin = new WebPlugin();
/**
* @desc 切换摄像头
* @param {string} cameraId - 摄像头id
*/
webPlugin.SwitchCamera(cameraId);
# 默认摄像头
var webPlugin = new WebPlugin();
/**
* @desc 设置默认摄像头
* @param {string} cameraId - 摄像头id
*/
if (SDK_STATE.isTalking) {
webPlugin.SwitchCamera("cameraId");
} else {
webPlugin.SetDefaultCamera("cameraId");
}
# 4. 第三方网络摄像头
# 支持的厂商
大华、海康
# 初始化
使用第三方网络摄像头,需要在插件初始化之前确定需要使用的第三方摄像头有哪些,并在初始化插件时传入对应的厂商名称。这里要注意:初始化后不能更改、删除、新增要使用的第三方网络摄像头的厂商名称,如果需要更改、删除、新增第三方摄像头厂商,必须先结束插件进程重新初始化。
以下是初始化插件时传入的第三方摄像头厂商名称,具体字段为:webPlugin.initPluginParam.IPCameras,是一个字符串数组。initPluginParam是webplugin.js内置的数据对象,会在调用Init时将initPluginParam数据一起传入插件。
var webPlugin = new WebPlugin();
var appkey = _getValue('checkin-appkey');
var hik = _getCheckboxValue('checkin-ipCameras-hik');
var ipCameras = [];
if (hik) {
ipCameras.push('Hik')
}
var dahua = _getCheckboxValue('checkin-ipCameras-dahua');
if (dahua) {
ipCameras.push('Dahua')
}
webPlugin.initPluginParam.IPCameras = ipCameras;
webPlugin.Init(appkey, "");
# 登录网络摄像头
登录之后避免重复登录,网络摄像头有登出的设定,插件内置了登出功能,当插件销毁时就会登出。
注意:网络摄像头支持Hik(windowsx86,uosx86,uosARM,kylinx86,kylinxARM),Dahua(windowsx86,uosx86,kylinx86)
var webPlugin = new WebPlugin();
// 登录海康
IP_CAMERA.Manufacturer = _getValue('ipCamera-hik-manufacturer');
IP_CAMERA.IP = _getValue('ipCamera-hik-ip');
IP_CAMERA.Port = _getValueNum('ipCamera-hik-port');
IP_CAMERA.UserName = _getValue('ipCamera-hik-userName');
IP_CAMERA.Password = _getValue('ipCamera-hik-password');
console.log("loginHikIPCamera:", IP_CAMERA);
webPlugin.LoginIPCamera(IP_CAMERA);
// 登录大华
IP_CAMERA.Manufacturer = _getValue('ipCamera-dahua-manufacturer');
IP_CAMERA.IP = _getValue('ipCamera-dahua-ip');
IP_CAMERA.Port = _getValueNum('ipCamera-dahua-port');
IP_CAMERA.UserName = _getValue('ipCamera-dahua-userName');
IP_CAMERA.Password = _getValue('ipCamera-dahua-password');
console.log("loginDahuaIPCamera:", IP_CAMERA);
webPlugin.LoginIPCamera(IP_CAMERA);
# 使用
登录成功后,接下来的使用方法和其他摄像头一样,可以通过获取摄像头列表getCameras(),获取摄像头,可以通过切换切换摄像头。可以通过设置界面预览效果。详情查看9.3的讲解。
注意:要在登录网络摄像头成功之后,在操作摄像头(包括获取、打开、切换)。登录网络摄像头和插件登录不是同一回事,要分开理解。
# 第三方网络摄像头连接状态上报
因为网络等因素导致摄像断开、重连都会收到上报,初始连接成功也会收到事件上报。
上报内容
{string} cameraId - 摄像头id
{string} cameraName - 摄像头名称
{string} manufacturerName - 厂商名称
- None 未获取到
- Normal 通用
- Hik 海康
- Dahua 大华
{string} state - 连接状态
- None 未获取到
- Connected 已连接
- Disconnected 已断开
示例代码:
webPlugin.OnIPCameraChangeNotify = function(cameraId, cameraName, manufacturerName, state) {
console.log('OnIPCameraChangeNotify', cameraId, cameraName, manufacturerName, state);
};
# 登出第三方网络摄像头
默认destroy插件的时候登出网络摄像头,可通过该接口提前登出。
示例代码:
/**
* @desc 登出第三方网络摄像头
* @param {object} param - 参数
* 其他参数包含如下:
* Manufacturer: {string} Manufacturer - 厂商:Hik、Dahua
* CameraId: {string} CameraId
*/
webPlugin.LogoutIPCamera(param);
# 5. 获取默认设备
默认的音频输入输出设备和默认的摄像头设备都可以通过GetDefaultDevices接口获取,并通过OnGetDefaultDevicesResult事件上报接收。
webPlugin.GetDefaultDevices();
上报内容
"AudioOutput":{"Name":"Default Speaker","Id":"default"},
"AudioInput":{"Name":"Default Microphone","Id":"default"},
"Camera":{"Name":"Aoni FHD TV Camera","Id":"\\\\?\\usb#vid_0203\u0026pid_145e\u0026mi_00#6\u002637d2bf36\u00263\u00260000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\\global"},
"BridgeType":"OnGetDefaultDevicesResult"
示例代码:
webPlugin.OnGetDefaultDevicesResult = function (camera, audioInput, audioOutput){
console.log('OnGetDefaultDevicesResult', camera, audioInput, audioOutput);
}
# 6. 设备变化通知
# 开启设备检测
设备检测周期,单位毫秒,建议2000毫秒以上。
webPlugin.EnableDeviceDetect(enable, period);
# 设备变化通知
上报内容:
{list} changeTypes 设备类别 [Camera,AudioInput,AudioOutput]
{list} audioInputs 设备类别changeTypes中包含AudioInput时 当前的音频输入列表
{list} audioOutputs 设备类别changeTypes中包含AudioOutput时 当前的音频输出列表
{list} cameras 设备类别changeTypes中包含Camera时 当前的摄像头列表
例如摄像头发生变化 changeTypes为[Camera]
例如摄像头,麦克风发生变化 changeTypes为[Camera,AudioInput]
示例代码:
webPlugin.OnDeviceChangeNotify = function (changeTypes, audioInputs, audioOutputs, cameras) {
console.log('OnDeviceChangeNotify', changeTypes, audioInputs, audioOutputs, cameras);
}
# 7. 设备隐私变化通知
上报内容:
{boolean} camera 摄像头隐私变化
{boolean} microphone 麦克风隐私变化
例如摄像头隐私发生变化 camera不为空(true-允许访问 false-不允许访问) microphone为空
例如麦克风隐私发生变化 microphone不为空(true-允许访问 false-不允许访问) camera为空
示例代码:
webPlugin.OnDevicePrivacyChangeNotify = function (camera, microphone) {
console.log('OnDevicePrivacyChangeNotify', camera, microphone);
}