大华视频技术文档

一、视频播放功能
1.引入js文件
jsp文件引入js文件,代码如下所示:

<script type="text/javascript" src="${ctx}/js/DPSDK_OCX/ocxfun.js"></script>

2.添加ocx组件
jsp文件添加ocx组件,代码如下所示:

<div id="obj">
    <object id="DPSDK_OCX" classid="CLSID:D3E383B6-765D-448D-9476-DFD8B499926D" style="width: 100%; height: 80%" codebase="DpsdkOcx.cab#version=1.0.0.0"></object>
</div>

因为如果想在浏览器上实现视频播放,需要先下载ocx组件进行注册,所以会在注册表中生成CLSID:D3E383B6-765D-448D-9476-DFD8B499926D的注册表,页面加载时加载active控件。

3.组件初始化

<body  onload="init()"  onunload="ButtonLogout_onclick()" class="easyui-layout"></body>

在视频窗口加载时调用ocxfun.js中的init();调用ButtonCreateWnd_onclick()函数;

获取

<input type="hidden" id="textWndNum" value="4" />

中的value值,根据value值来创建视频窗口数;

4.js方法自动登陆。

4.1 页面初始化时自动获取企业数据生成企业树,并自动获取登陆账号、密码等信息登陆视频系统:
详见videosurveillance.jsp。

4.2 后台login方法:
把获取的数据以json数组形式传到前台。详见videosurveillance.jsp中login方法。

5.企业数据以树的形式展示。

企业数据以树的形式展示后,点击子节点时从后台获取该企业(deviceID)对应的通道ID(cannelId),把通道ID传给Button_StartRealplayByWndNo_onclick()函数,实现播放功能。
由于获取到的通道ID是一个不知道长度的数组,所以如果该数组的长度大于4,利用slice函数截取前4个进行播放,如果小于4个,则选取第一个到最后一个进行播放。

5.1前台js:
5.1.1初始化企业树:
详见videosurveillance.jsp中qyTree()方法。
5.1.2视频分页:
详见videosurveillance.jsp中initPage方法。
5.1.3播放功能:
详见videosurveillance.jsp中Button_StartRealplayByWndNo_onclick方法。
在节点切换的时候要把之前打开的视频窗口进行关闭,所以我用historyWindow数组来存储历史数据,每次播放之前获取这个历史数据,进行窗口关闭,窗口关闭后再把新获得的数据存储成历史数据。
5.1.4查询功能:
详见videosurveillance.jsp中searchQy方法,同时为了实现回车查询,我在页面初始化的时候为搜索文本框绑定了回车事件。
在查询功能中我用了一个全局变量search_content,这样可以在查询的时候同样调用qyTree()方法,只用判断参数search_content是否为空即可,提高了代码的复用性。
6.后台企业数据获取:
因为企业(deviceID)和通道ID(cannelID)存储到一张表的原因,一个企业下边有多个通道,所以需要对查询出来的企业进行去重,我这里把list数据放入map去重,然后把map数据遍历出来放入json中。详见VideoEquipmentInfoAction.java中searchList()方法和cannelList()方法。

二、定时更新企业数据:

大华视频接口是以xml为数据传输格式来进行数据传输的,所以我们首先要获取并解析xml文件来获取设备信息。
1.加载dll文件:
详见IDpsdkCore.java中的IDpsdkCore方法加载dll文件:
(注:这些dll文件是需要在32位jdk环境下运行的,加载地址为jdk的bin目录、tomcat的bin目录等,可以通过System.getProperty(“java.library.path”)来查看加载目录,另外由于dll文件中路径写死的原因吧,IDpsdkCore.java存放的路径为com/dh/DpsdkCore/IDpsdkCore.java。)
2.定时任务:
详见VideoTask.java。其中获取登陆密码为getLoginData()方法,通过后台自动获取数据库中的登录等信息,然后通过OnLogin()方法实现后台自动登录。
当登陆成功的时候执行LoadGroup()方法,通过调用IDpsdkCore.java中的SDK_LoadDGroupInfo()方法加载组织设备信息,然后调用IDpsdkCore.java中的DPSDK_GetDGroupStr()获取组织设备信息串。

2.1将流解析为xml
通过inputStream读取字节流,然后通过InputStreamReader将字节流向字符流转换,然后通过BufferedReader创建字符流缓冲区,最后将流解析为xml。
2.2 Dom4j解析xml
解析xml形式的文本,得到document对象:
Document document = DocumentHelper.parseText(xml.toString());
获取文档的根节点:
Element root = document.getRootElement();
取得根节点下名为”Devices”的单个子节点:
Element department = root.element(“Devices”);
取得Devices节点下名为”Device”的所有字节点并进行遍历,继续获取Device节点下名为”UnitNodes”的所有节点并进行遍历,继续获取UnitNode节点下的名为”Channel”的所有节点进行遍历,获取channel节点的id,name属性进行存储。所得到的就是通道ID和通道名称,获取device节点的name属性进行存储,得到的就是企业名称。
数据存储后执行OnLogout()、OnDestroy()方法进行登出和释放内存操作。

3.定时计划:
详见TimerManagerListener.java类中runVideoTask()方法。
当系统启动,或者数据改变时,如果历史任务不为空,任务立即执行一次,定时任务重复周期为视频设置中的设置参数。
创建一个TimerManagerListener.java类,实现ServletContextListener接口。在web应用程序的初始化过程开始中开启定时计划。
4. 在web.xml里面配置监听器:

com.dh.task.TimerManagerListener

5. 给tomcat配置指定的jdk:
在windows环境下以批处理文件方式启动tomcat,只要运行/bin/startup.bat这个文件,就可以启动Tomcat。在启动时,startup.bat会调用catalina.bat文件,而catalina.bat会调用setclasspath.bat文件来获取JAVA_HOME和JRE_HOME这两个环境变量的值,因此若要在tomcat启动时指向特定的JDK,则需在setclasspath.bat文件的开头处加入以下内容:
set JAVA_HOME=C:\Program Files (x86)\Java\jdk1.7.0_79
set JRE_HOME=C:\Program Files (x86)\Java\jdk1.7.0_79\jre
其中\Program Files (x86)\Java\jdk1.7.0_79就是JDK的安装路径。

附件查看:

会员免费

已有2人支付

1. 本站所有资源来源于用户上传和网络,如有侵权请及时联系删除,本站不承担任何法律责任!
2. 分享目的仅供大家学习和研究,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的教程、源码等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"www.94zyw.com",如遇到无法解压的请联系管理员!
94资源网 » 大华视频技术文档