⼤华摄像头⼆次开发-web端实现实时视频监控
最近客户提需要,需要在现有的系统中集成视频监控功能,摄像头是⼤华的。⽽⼤华⼜没有关于java的sdk,官⽹只能下载到c++的demo
和dll⽂件。⽆奈只能⾃⼰在⽹上了,最后到了⼀些解决办法,把实现⽅法记录⼀下。
使⽤Jna技术调⽤⼤华dll
在⼤华官⽹下载sdk,;下载完成后解压,将⾥⾯的库⽂件复制到其他⽂件夹以⽅便jna的调⽤。具体可以查看demo:,因为这种⽅式使⽤java的swing窗⼝开发⽐较⽅便,由于这次是做web端开发,所以没有详细的去了解,这⾥不作详细分析,可以查看上⾯的demo。
使⽤ie的activex插件
参考:
这种⽅式实现的功能较少,只有实时视频、抓图、录制视频功能。⽽且只⽀持ie浏览器。
1.下载插件并注册
2.使⽤object元素添加视频
<object classid="clsid:30209FBC-57EB-4F87-BF3E-740E3D8019D2"codebase=""id="id"name="playOcx"align="center"width="350"height="300px"
</object>
3.js调⽤开启实时视频
//获取object元素js对象
var SSOcx = ElementById(id);
//登录视频
var flag = SSOcx.SetDeviceInfo("ip", "端⼝", "通道", "⽤户名", "密码");
if (flag) {
//开启实时视频监控
SSOcx.StartPlay();
} else {
return false;
}
4.实时视频全屏实现
全屏button:
<button class="btn btn-white btn-sm"onclick="ElementById('id'))">
<i class="fa fa-arrows-alt"></i>全屏</button>
全屏js:
<script type="text/javascript">
var width = "";
var height = "";
/
/进⼊全屏
function reqFullScreen(element) {
console.log(element.width)
var de = element;
if (de.requestFullscreen) {
remoceWH(de);
} else if (de.mozRequestFullScreen) {
remoceWH(de);
} else if (de.webkitRequestFullScreen) {
de.webkitRequestFullScreen();
remoceWH(de);
remoceWH(de);
} else if (de.msRequestFullscreen) {
de.msRequestFullscreen();
doc = de;
remoceWH(de);
} else {
console.log("进⼊全屏失败")
}
}
function remoceWH(element) {
//保存原始的宽⾼
width = Attribute("width");
height = Attribute("height");
//移除object元素的宽⾼
}
//退出全屏
function exitFullscreen() {
if (itFullscreen) {
}
else if (document.msExitFullscreen) {
document.msExitFullscreen();
}
else if (CancelFullScreen) {
}
else if (document.webkitCancelFullScreen) {
document.webkitCancelFullScreen();
}
setWH();
}
function setWH() {
$("object[name='playOcx']").each(function() {
$(this).attr("width", width);
$(this).attr("height", height);
});
}
//监听esc事件
$(document).keyup(function(event) {
switch (event.keyCode) {
case27:
exitFullscreen();
break;
}
});
</script>
5.总结
这种⽅式实现起来还算⽅便,但是功能较少。不⽀持⾳频等。
使⽤插件
这种⽅式也是使⽤别⼈开发的插件,但是功能⼏乎都有。在web开发这种⽅式应该也是最好的了。但是也有局限性,使⽤⾕歌浏览器和⽕狐浏览器不⾏;对360浏览器⽀持,但是如果使⽤兼容模式还是需要下载另外下载activex插件。
1.下载插件
;解压后安装⾥⾯的,如果是ie浏览器,另外注册上⾯的ocx插件。
2. object元素
ie模式:
<object id="id"width="100%"height="87%"
classid="clsid:7F9063B6-E081-49DB-9FEC-D72422F2727F"
codebase="">
</object>
其他:
<object name="playOcx"id="id"width="100%"height="87%"
type="application/media-plugin-version-3.1.0.2"
VideoWindTextColor="9c9c9c"VideoWindBarColor="414141"> </object>
3. 判断是否安装插件
<script type="text/javascript">
var Sys = {};
var ua = LowerCase();
var s;
(s = ua.match(/(msie\s|trident.*rv:)([\d.]+)/)) ? Sys.ie = s[2] :
(s = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox = s[1] :
(s = ua.match(/chrome\/([\d.]+)/)) ? Sys.chrome = s[1] :
(s = ua.match(/opera.([\d.]+)/)) ? Sys.opera = s[1] :
(s = ua.match(/version\/([\d.]+).*safari/)) ? Sys.safari = s[1] : 0;
var PLUGINS_NAME = 'WebActiveEXE.Plugin.1';
var hasPlugin = checkPlugins();
/**
* 检测浏览器是否存在视频插件
* @return {Boolean}
*/
function checkPlugins() {
var result;
if (Sys.ie) {
try {
result = new ActiveXObject(PLUGINS_NAME);
delete result;
} catch (e) {
return false;
}
return true;
} else {
fresh(false);
result = navigator.mimeTypes["application/media-plugin-version-3.1.0.2"];
return !!(result && abledPlugin);
}
}
</script>
4. js连接摄像头开启实时监控
这个视频控件已经实现了抓图、⾳频和录制功能
var g_ocx = ElementById(sxtList[i].id);
var bRet = g_ocx.LoginDeviceEx('' + sxtList[i].ip, sxtList[i].dkh - 1 + 1, '' + sxtList[i].yhm, '' + sxtList[i].mm, 0);
if (bRet == 0) {
//设置窗⼝数量
g_ocx.SetWinBindedChannel(1, 0, 63, 64);
//设置截图保存地址
g_ocx.SetConfigPath(1,"C:\\视频监控\\images");
//设置录制视频保存地址
g_ocx.SetConfigPath(2,"C:\\视频监控\\vidos");
web端登录
//设置画质 0 ⾼ 1 低
// g_ocx.SetPicQuality(0);
//设置视频实时性 0-10 实时登记依次降低
g_ocx.SetAdjustFluency(0);
//监视模式
g_ocx.SetModuleMode(1);
//连接视频
g_ocx.ConnectRealVideo(0, 1);
} else {
alert("⽹络连接错误!");
return false;
}
5.全屏实现
在这个控件中已经实现了全屏⽅法,经过测试不同的浏览器全屏的实现也有点不同:
function reqFullScreen(element) {
var ocx = element;
if (Sys.ie) {
//ie浏览器
ocx.SwitchToFullScreen();
} else {
//其他浏览器
ocx.OnFullScreenClk();
}
}
6. 其他⽅法
开启⾳频
var ele_id = Attribute("id");
var g_ocx = element;
var soundStatus = g_ocx.PlayOpenSound();
关闭⾳频
var ele_id = Attribute("id");
var g_ocx = element;
var soundStatus =  g_ocx.PlayStopSound();
⾥⾯还有很多⽅法可以⼆次开发,具体可以参考压缩包⾥⾯的⽂档。
最后
⽂件打包下载:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。