如何用asp.net实现文件下载网页视频监控

网络视频监控系统――客户端软件设计
网络视频监控系统――客户端软件设计
网络视频监控系统――客户端软件设计
摘要:视频监控经历了模拟时代、数字时代发展到了网络时代。数字视频监控的应用已经扩展到了各行各业。随着计算机的发展和普及,计算机系统数量与日俱增,其配套的环境设备也日益增多,计算机房已成为各大单位的重要组成部分。因此,为了保证计算机系统安全可靠工作,远程监控系统的应用更加广泛。随着计算机网络技术和视频流媒体技术的发展,网络视频的监控方式也在发生着变化。本文主要介绍网络视频监控系统的客户端软件设计,采用面向对象的方法,将整体分为几大模块:管理员登录模块;摄像机画面控制模块; 摄像机分组及管理模块;摄像机存储和报警提示模块;云台和镜头控制模块。设计中还包括监控系统的3大要点:socket编程;云台控制;数据库的实现。本文研究和探讨了网络化视频监控系统的性能、结构和相关功能设计。关键词:Socket编程;远程监控;vc++.net;客户端软件设计
&The Network Video Monitoring System――Client Side Software Design
Abstract:The video monitoring experienced the simulation Age, the Digital Age and has developed the network Age. The application of digital video monitoring already expanded into all the various trades and occupations. Along with the computer development and the popularization, computer system quantity grows day by day, its necessary environmental equipment also increases daily, computer rooms has become the important& unit of each constituent. Therefore, in order to guarantee the computer system can work safely and reliably, the long-distance supervisory system is used more widespread. Along with development of the computer network technology and the flow media technology, the way of controlling network video monitoring also is changing. This article mainly introduction cliental software design of the network video supervisory system, which is divided into the whole several big modules in use of the object-oriented method: the manager registering module, camera picture controlling module, camera grouping and administration module, the camera saving and warning module, rapes with the lens controlling module. There are also three big main points about supervisory system in the design: socket programming, rapes the control, database realization. This article studied and discussed the network video supervisory system performance, the structure and the related functional design. Key words:S Long- vc++. Client side software design&目&&& 录
前言&11视频监控系统简介&21.1 视频监控系统的发展方向&21.2 网络视频监控系统的特点&21.2.1 数字化&21.2.2 网络化&21.3网络视频监控系统工作原理图&31.4 网络视频监控系统的应用&41.4.1 DVR监控系统&41.4.2 IP技术&41.4.3 模拟摄像机&42 视频监控系统设计相关技术讨论&52.1 数字视频信息的处理&52.2 数字视频信息编码与压缩&52.2.1 JPEG标准&52.2.2 H.261标准&62.2.3 MPEG标准&62.3 数字视频的传输&62.3.1 数字视频传输的特点&62.3.2 实时传输协议RTP与RTCP&62.3.3 实时流协议RTSP&72.3.4 资源预订协议RSVP协议&82.3.5& 流水线操作&92.4 数字视频捕获和压缩技术&92.4.1 视频采集&92.4.2 视频压缩&102.5 网络远程视频监控动态IP解决方案&102.5.1 动态域名解析系统&102.5.2 域名解析系统的缺点&112.6 视频监控重要算法&112.6.1 H.264算法介绍&112.6.2 H.264/AVC标准&112.6.3 数字视频编解码技术的演变&122.6.4& H.264 与MPEG-4的比较&123 系统概要设计&133.1 关键术语的理解&133.1.1 网络摄像机&133.1.2 网络视频服务器&143.1.3 动态域名解析服务&143.1.4 网络摄像机使用的影像压缩方式&153.2& 系统的总体构想&153.3 系统整体结构与功能&164 系统详细设计与关键技术&174.1 网络视频监控系统组成部分及原理&174.1.1 监控现场&174.1.2 网络及视频服务器&174.1.3 监控服务器端和客户端软件&174.2 系统实现的主要功能&184.2.1 摄像机画面显示与管理功能&184.2.2 系统时间内容显示及声音控制功能&184.2.3 云台旋转控制功能&184.2.4 镜头控制功能&194.3 网络视频监控系统的实现&204.3.1 软件设计程序流程图&204.3.2 主要界面与代码&214.3.3 Socket连接功能实现&314.3.4 ODBC 数据库功能实现&415 总结与展望&455.1 全文总结&455.2 展望&45&46致谢&47
视频监控系统是安全防范系统的组成部分,它是1种防范能力较强的综合系统。视频监控以其直观、方便、信息内容丰富而广泛应用于许多场合。近年来,随着计算机、网络以及图像处理、传输技术的飞速发展,视频监控制技术也有长足的发展。随着计算机技术、多媒体技术、数字压缩技术以及计算机网络技术的发展, 网络视频监控系统对目标范围实时监控、录入回放,被捕捉的图像存储在硬盘上,还可以根据报警信号的发生自动的实时记录现场情况,事后,从系统数据中查询相应的资料,并通过计算机网络传输到监控中心。网络视频系统采用国际标准TCP/IP底层通讯协议,即可在局域网也可在广域网上进行通讯,充分发挥网络视频监控系统的优势,利用IP技术、数字化传输、数字化存储及图像处理等计算机技术通过LAN/WAN,实现高性能网络视频监控。本文着重点在于网络视频监控客户端软件设计。首先,介绍了网络视频监控系统的发展、特点及其应用。其次,对视频监控系统设计的相关技术做了阐述,描述了数字视频传输的多种协议,介绍了数字视频信息编码与压缩的3种标准:JPEG标准;H.261标准;MPEG标准,分析了网络远程视频监控动态IP解决方案和视频监控的重要算法。然后,主要介绍网络视频监控客户端软件设计的过程和系统的整体结构与功能。系统详细设计主要包括:1.&网络视频监控系统组成部分及原理。2.&系统实现的主要功能:摄像机画面显示与管理功能;系统时间内容显示及声音控制功能;云台旋转控制功能;镜头控制功能。3.&网络视频监控系统的实现:主要界面与代码;Socket连接功能实现;ODBC 数据库功能实现; 云台监控功能实现。最后,对全文做出工作总结和展望,总结出该客户端软件系统设计取得的成果和需要改进的地方。
下页更精彩:1
本文已影响人
网络视频监控系统――客户端软件设计相关推荐
[网络视频监控系统――客户端软件设计]网友评论
<div class="ds-thread" data-thread-key="57661" data-title="网络视频监控系统――客户端软件设计" data-image="">海康威视频监控设备Web查看系统(二):服务器篇声明:本系列文章只提供交流与学习使用。文章中所有涉及到海康威视设备的SDK均可在海康威视官方网站下载得到。文章中所有除官方SDK意外的代码均可随意使用,任何涉及到海康威视公司利益的非正常使用由使用者自己负责,与本人无关。前言: 上一篇文章《海康威视频监控设备Web查看系统(一):概要篇》笼统的介绍了关于海康视频中转方案的思路,本文将一步步实现方案中的视频中转服务端。文中会涉及到一些.net socket处理和基础的多线程操作。我用的是SDK版本是SDK_Win32_V4.2.8.1 。大家根据自己实际情况想在相应的SDK,页面的说明里有详细的设备型号列表。分析官方SDK的Demo: 首先来看看官方SDK中的C#版本的Demo,官方Demo分为两个版本,分别是&实时预览示例代码一&和&实时预览示例代码二&,因为有现成的C#版本,所以我们使用示例代码一中的内容。首先关注名为CHCNetSDK的类,这个类封中装了SDK中的所有非托管方法接口,我们需要来把这个类以及SDK中的DLL文件一起引入到我们的项目中,如果有对C#调用C++类库不了解的朋友请自己Google一下,资料非常多,博客园里也有很多作者写过这一类的文章,本文就不就这个内容做深入讨论。 调用SDK没有问题了,接下来看看SDK的使用,根据SDK使用文档,SDK接口的调用需要通过一个标准流程,流程图如下: 按照这个流程,我们第一步要做的是初始化SDK,然后是三个可选回调函数的设置,接着要做用户注册设备即设备登录,紧接着就是核心的部分了,根据上一篇文章中讲的思路,除了预览模块外其他几个模块的调用不在我们要解决的问题范畴,因此不予考虑。最后一步是注销设备,释放SDK资源。所以,最后根据我们的需求,流程简化如下: 虽然标准流程如此,但是我们的服务端程序只有一个单一的任务,所以也没有必要对为托管资源进行释放,因为如果退出程序以后资源就会释放,不退出程序的话,SDK资源就不应该被释放。因此再简化一下流程每个节点都有相应的代码实现如如下所示: 1 //初始化SDK 2 CHCNetSDK.NET_DVR_Init(); 3
4 //用户登录 5 CHCNetSDK.NET_DVR_DEVICEINFO_V30 DeviceInfo = new CHCNetSDK.NET_DVR_DEVICEINFO_V30(); 6 CHCNetSDK.NET_DVR_Login_V30(设备地址, 设备端口, 用户名, 密码, ref DeviceInfo); 7 //说明:关于设备IP、端口、用户名及密码信息请根据自己要访问设备的设置正确填写 8
9 //预览模块10 CHCNetSDK.NET_DVR_CLIENTINFO lpClientInfo = new CHCNetSDK.NET_DVR_CLIENTINFO();11 lpClientInfo.lChannel =12 lpClientInfo.lLinkMode = 0x0000;13 lpClientInfo.sMultiCastIP = "";14 m_fRealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);15 IntPtr pUser = new IntPtr();16 CHCNetSDK.NET_DVR_RealPlay_V30(m_lUserID, ref lpClientInfo, m_fRealData, pUser, 1);17 //说明:这里的NET_DVR_CLIENTINFO类中缺少预览窗口的句柄,需要预览时,要根据自己的项目设置NET_DVR_CLIENTINFO对象的hPlayWnd属性 可能有朋友看到这里已经忍受不了了,说好的视频中转功能在哪呢?别着急,一切的处理都在回调函数RealDataCallBack中,先耐心看一下这个回调函数的签名void RealDataCallBack(Int32 lRealHandle, UInt32 dwDataType, IntPtr pBuffer, UInt32 dwBufSize, IntPtr pUser) 第一个lRealHandle是预览控件的句柄,第二个参数dwDataType说明回调接收到的数据类型,pBuffer 存放数据的缓冲区指针, dwBufSize 缓冲区大小 ,pUser 用户数据的句柄。我做的这个视频的中转功能其实就是在这个回调函数中实现的。 好了,核心的代码都摘出来了,大家按照SDK提供的Demo照猫画虎就可以把预览功能实现出来了。服务端设计:  实现了预览功能,下面看看中转服务的实现。其中包含三个类:Server,Client以及ClientList类。 Server类主要负责从设备读取数据并将数据缓存到服务器上,并且作为Socket监听服务端;ClientList维护一个客户端列表,并在Server获取到设备数据时便利客户端列表发送数据到客户端;Client类主要负责将服务端缓存的数据分发到各个终端请求上。 三个类的关系及主要成员请看下图:Server类:
1 class Server
int m_lUserID = -1;
byte[] headS
ClientList clientList = ClientList.GetClientList();
CHCNetSDK.REALDATACALLBACK m_fRealD
Socket listenS 10
Semaphore m_maxNumberAcceptedC 11
/// &summary& 12
/// Server构造函数,启动服务端Socket及海康SDK获取设备数据 13
/// &/summary& 14
/// &param name="ipPoint"&服务端IP配置&/param& 15
/// &param name="numConnections"&最大客户端连接数&/param& 16
/// &param name="channel"&设备监听通道&/param& 17
public Server(IPEndPoint ipPoint, int numConnections, int channel) 18
if (!InitHK()) 20
RunGetStream(channel); 24
listenSocket = new Socket(ipPoint.AddressFamily, SocketType.Stream, otocolType.Tcp); 26
listenSocket.Bind(ipPoint); 27
m_maxNumberAcceptedClients = new Semaphore(numConnections, numConnections); 28
listenSocket.Listen(100); 29
Console.WriteLine("开始监听客户端连接......"); 30
StartAccept(null); 31
#region HKSDK 34
private void RunGetStream(int channel) 36
if (m_lUserID != -1)//初始化成功 38
CHCNetSDK.NET_DVR_CLIENTINFO lpClientInfo = new CHCNetSDK.NET_DVR_CLIENTINFO(); 40
lpClientInfo.lChannel = 41
lpClientInfo.lLinkMode = 0x0000; 42
lpClientInfo.sMultiCastIP = ""; 43
m_fRealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack); 44
IntPtr pUser = new IntPtr(); 45
int m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(m_lUserID, ref lpClientInfo, m_fRealData, pUser, 1); 46
Console.WriteLine("开始获取视频数据......"); 47
else//初始化 失败,因为已经初始化了 49
Console.WriteLine("视频数据获取失败......"); 51
private bool InitHK() 55
bool m_bInitSDK = CHCNetSDK.NET_DVR_Init(); 57
if (m_bInitSDK == false) 58
Console.WriteLine("设备SDK初始化成功......."); 64
CHCNetSDK.NET_DVR_DEVICEINFO_V30 DeviceInfo = new CHCNetSDK.NET_DVR_DEVICEINFO_V30(); 65
m_lUserID = CHCNetSDK.NET_DVR_Login_V30("设备IP", 连接端口, "连接用户名", "连接密码", ref DeviceInfo); 66
if (m_lUserID != -1) 67
Console.WriteLine("监控设备登录成功......."); 69
Console.WriteLine("监控设备登录失败,稍后再试......."); 74
private void RealDataCallBack(Int32 lRealHandle, UInt32 dwDataType, IntPtr pBuffer, UInt32 dwBufSize, IntPtr pUser) 80
byte[] data = new byte[dwBufSize]; 82
Marshal.Copy(pBuffer, data, 0, (int)dwBufSize); 83
Console.WriteLine("监控设备连接正常......"); 84
if (dwDataType == CHCNetSDK.NET_DVR_SYSHEAD) 85
headStream = 87
clientList.SetSendData(data); 89 90
#endregion 93
#region Socket 95
/// &summary& 96
/// 监听客户端 97
/// &/summary& 98
/// &param name="acceptEventArg"&&/param& 99
private void StartAccept(SocketAsyncEventArgs acceptEventArg)100
if (acceptEventArg == null)102
acceptEventArg = new SocketAsyncEventArgs();104
pleted += new EventHandler&SocketAsyncEventArgs&(IO_Completed);105
acceptEventArg.AcceptSocket =109
m_maxNumberAcceptedClients.WaitOne();112
bool willRaiseEvent = listenSocket.AcceptAsync(acceptEventArg);113
if (!willRaiseEvent)114
ProcessAccept(acceptEventArg);116
/// &summary&119
/// 增加客户端列表120
/// &/summary&121
/// &param name="e"&&/param&122
private void ProcessAccept(SocketAsyncEventArgs e)123
clientList.AddClient(new Client(e.AcceptSocket, headStream));125
StartAccept(e);126
/// &summary&129
/// Socket回调函数130
/// &/summary&131
/// &param name="
优质网站模板查看:920097|回复:161
助理工程师
时下,越来越多的情况需要应用到远程监控了,
在此将刚做好的一个小项目给大家
首先介绍一下硬件方面,
海康威视DS-7016录像机& && && &1台& &&&
西部数据SATA接口500G硬盘& && &1个& &&&
TP-LINK R460+路由器& && && &&&1个& &
花生壳动态域名专业服务& && &&&1年& &
电源线和视频线随便几百米就够了
搭建你的监控系统
首先将录像机接电源并连接路由器,通过硬盘录像机的默认管理地址进行登陆管理设置,
登陆管理,安装控件后会出现一个登陆的管理界面,
输入默认的管理帐号admin
端口默认8000
登陆成功后,双击左边摄像头列表当中的摄像头,
可以看到一个监控的页面,就证明这个录像机已经正常在本地工作了,
接下来,我们要对录像机进行网络上的配置,
点击操作界面的菜单可进入管理界面。
(166.59 KB)
& &服务器参数这里有几个关键的设置选项, 其中一个是IP地址,这个设置成192.168.0.64子网掩码255.255.255.0,网关192.168.0.1 另外还有2个端口,最近 端口号 8000
这个是视频服务传输用的端口, HTTP端口号 80
这个是在浏览器输入访问要用到的端口
(84.46 KB)
通过以上操作,录像机的设置就要告一段落了
内网输入是能够看到监控了
但是我们需要实现的是远程监控,需要做到的是外网同样都可以访问。
第二步 设置花生壳动态域名解析
注册一个免费的花生壳护照并等待1小时(貌似是花生壳的数据库服务器同步问题)
然后登陆路由器(默认管理的地址为帐号admin密码admin)
在动态DNS里面输入我们刚注册的帐号和密码,并启用动态DNS,点击登陆。
登陆成功后,会直接显示目前护照的花生壳服务级别和能够得到花生壳解析服务的域名
域名zengkebing.gicp.net已经可以绑定我们当前的公网IP了,动态解析服务已经做好了
(116.65 KB)
第三步 设置路由器端口映射
接下来的就是要做路由器的端口映射 需要从路由器将录像机要用到的80和8000端口映射到192.168.0.64 如果你的录像机不是这个IP和端口就随之改动好了,具体操作请见下图 登录到路由器的管理界面(默认管理的地址为帐号admin密码admin)
(83.01 KB)
点击路由器左边操作菜单的“转发规则”—“虚拟服务器” 服务端口号填写为80&&IP地址就输入录像机的内网IP“192.168.0.64” 协议选择“ALL”或者“TCP”都可以 然后别忘了保存,那个常用服务端口只是起到一个帮助提示作用,不用设置
(87.75 KB)
同样的操作,把录像机视频服务的8000端口也给映射到“192.168.0.64”
保存好可以看到已经映射好的端口,已经生效了,端口映射也完成了,
(89.32 KB)
到此视频服务器的设置已经全部完成,然后我们测试服务是否可以正常访问。
第四步 验证服务是否可以正常访问
打开浏览器,在地址栏里面输入动态域名zengkebing.gicp.net 敲回车键,
会得到一个以下的提示,需要安装一个来自“杭州海康威视数字技术股份有限公司”的一个控件,
这个是我们必须要安装的,点击提示按左键进行安装。
然后会得到浏览器的一个提示,我们需要点击安装,才能够进行视频监控。
安装视频控件成功后,我们可以看到令人期待的视频录像机登陆窗口,
输入账号admin和密码12345,以8000端口登陆
(132.42 KB)
登陆成功后,双击左边列表当中的摄像头图标,就可以看到监控的画面了。
(129.69 KB)
点击监控图像下面的按键切换成单画面,非常的清晰和顺畅。
(174.14 KB)
修改一下录像机的默认账户以及密码,点击“配置”选项。
然后在“用户权限”选项礼貌进行修改用户密码,
注意:密码只可以是纯数字(海康真BT)
(72.21 KB)
针对于电信封80端口的问题
目前 广东、福建、四川、湖南四个地区的电信ADSL线路是被封闭80端口的,录像机的HTTP端口需要修改成81或者8080等其他端口,路由器端口映射也随之更改,访问方式改为。
针对于铁通、有线通、长城宽带等NAT的线路问题
目前中国市场唯一没有用NAT的就只有电信了,所以建议南方的用户选择电信ADSL,北方则可选择网通。如果你选择的是一些铁通之类的线路固然是便宜,但是可能会出现你所作的监控只能被和自己用同一个网络运营商线路的用户访问到,电信和网通的用户根本访问不到的(个人觉得是垄断行业上技术限制,防止竞争对手发展壮大)
针对花生壳不稳定,经常掉线的问题
1.1个监控地点一个花生壳动态域名账号,人家没那么傻让你买一个账号多个地方使用的
2.如果你采用的是TP-LINK路由器,在网络参数-WAN口设置的连接方式默认是按需连接的,15分钟没有流量就会自动切断网络,需要更改为自动连接。
内容很不错
高级工程师
不错,不错!!支持一下:(pdd_11):
很好哦~跃跃欲试
还可以,不错,呵呵
初级工程师
学习了,谢谢
相当于教程,说明一下监控系统不一样设置也有所区别
官网也有同样的说明书
说得很详细啊 ,不错我顶一个了
助理工程师
感谢楼主分享
:(pdd_23):
初级工程师
海康威视呀。我们公司就是用这个东东哦。(好像跑题了吧,人家说的可是远程监控哦)
不错,很有启发哦!
:handshake :handshake
很不錯的東西,用來防盜很好,嘿嘿
很经典,,收藏了行,以后可能用的着!
提示: 作者被禁止或删除 内容自动屏蔽
助理工程师
:(pdd_25): 很好阿,应该加精阿~
初级工程师
:(bofu11): :(bofu11):
别看资料,看聊效!!!
O(∩_∩)O哈哈~不错,我也刚好这次做完一个类似的监控项目
顶一下,这个我做过

我要回帖

更多关于 asp.net实现相册功能 的文章

 

随机推荐