【精品店】基于MFC的视频监控系统客户端软件的实现

电脑杂谈  发布时间:2020-07-05 01:05:04  来源:网络整理

视频监控客户端软件_gps监控服务器端软件_手机下载一个什么软件就可以局域网查看监控视频

-1-基于中国科学技术论文MFC的视频监控系统客户端软件范丽丽,谢刚*(太原理工大学信息工程学院,太原030024)摘要: 解决了基于MFC的视频回放问题视频监视系统客户端,提议的SIP(会话发起协议)协议,RTP(实时传输协议协议和Directshow技术)来接收从服务器发送的视频流数据并进行实时实时播放并成功存储,该系统使用VS 2005作为实现1/4/6/9/13/16通道视频流接收,回放和存储的开发平台,详细介绍了视频监视系统客户端接口设计,SIP注册,呼叫和实时的关键步骤回放和录制视频流,测试结果表明该客户端界面友好,可以实时从服务器接收数据,具有良好的视觉效果和实时性. ntrol技术;视频监控系统;客户;啜; RTP;范丽丽,(1985-),女,硕士,主要研究方向: 视频监控系统. 电子邮件: fll3321@163.com CLC编号: TP37基于MFC的视频监控系统客户端的实现范丽丽,谢刚(太原理工大学信息工程学院,太原030024)摘要: 解决视频广播问题在视频监控系统的客户端中,提出了一种基于SIP协议,RTP协议和Directshow技术的视频流接收,实时播放和视频流存储的方法. 该系统基于VS 2005引入并实现了许,包括接收视频流,实时播放和视频流存储. 此外,UI,SIP寄存器的设计,调用服务器,实时播放等最后视频监控客户端软件,证明了该系统具有友好的用户界面,较好的视觉效果和良好的实时性. 关键词: 自动化控制技术视频监控系统客户;啜; RTP; Directshow 0引言在当今世界,科学技术的发展日新月异,网络和结构化的发展促进了分布式系统的发展,因此原始的终端/主机(Terminal / Mainframe)结构已开发到客户/服务器. (客户端/服务器或C / S)模式.

C / S(客户端/服务器)计算模型由Forester Researeh于1989年在马萨诸塞州的剑桥首次提出. C/ S模式的系统结构是指由一个或多个客户端和一个或多个客户端组成的复合系统. 更多的服务器以及允许分布式计算,分析和表示的底层操作系统和通信系统. C / S是二级结构模型. 应用系统分为两部分: 前端(客户端)和后端(服务器),大量的应用软件集中在客户端上. 它们的功能如下: 应用程序处理由客户端完成,数据访问和事务管理由服务器完成. 该解决方案实现了功能分配,并且一些处理任务由客户端承担,但数据集中在服务器上. 服务器上始终有一个活动的服务进程. 当客户端向服务器发出数据请求时,服务器上的活动服务进程将处理该数据请求,并仅通过网络将查询结果返回给客户端,从而减少了网络占用. 负载提高了网络系统的工作效率[1]. 基于C / S模式的视频监控系统功能强大,交互高效,友好的用户界面,强大的实时处理能力. 由于当数据量相对较小时,TCP(传输控制协议)协议在建立连接过程中占很大一部分,因此连续重传也会导致网络延迟,因此最好使用实时2科学论文RTP(实时传输协议)协议.

视频监控客户端软件_手机下载一个什么软件就可以局域网查看监控视频_gps监控服务器端软件

本文将介绍客户端部分的设计. 根据客户的需求,视频监控系统的客户开发主要分为界面设计和功能设计. 功能模块主要包括视频流的接收,实时播放和存储三个模块. 1接口设计基于实用和美观两个原则,在VS2005环境中使用MFC设计接口. 具体步骤如下: ①创建一个名为IPVC的基于对话框的MFC程序,并将各种控件添加到主对话框. ②界面的左侧是视频显示窗口,由16个PIC控件组成. 左下方是视频窗口切换按钮和呼叫按钮. 这些呼叫按钮用于向服务器发送呼叫请求. 切换按钮是1/4/6 / 9/13/16通道视频切换. ③右侧将完成各种高级功能,包括PTZ控制,设备列表,工具,配置管理. 这些对话框由TAB控件实现. 1.1控件的初始化在界面处理中,需要初始化一些控件,例如PIC控件,以满足客户端的需求,需要将PIC控件的Type属性更改为Bitmap,然后填写ID. 先前导入到“图像属性”中的位图的完成即可. 多窗口显示的初始化才刚刚开始. 如何获取位图区域并使其固定大小?这个想法是在左上角获得PIC控件的区域,在此基础上将其扩展四倍获得的矩形区域是我们的视频显示区域,其后是1/4/6/8/13 / 16频道显示在此基础上实现.

关键代码如下: mVideoWindow [0] .GetWindowRect(&rect); //在左上角的ScreenToClient(&rect);中获取PIC控件的区域; //转换为客户区域Mainwin.left = rect.left; // Mainwin代表整个Blue区域Mainwin.top = rect.top; //以下四行代码初始化Mainwin的左上角和右下角坐标来确定mwinWindow [0] .GetClientRect(&rect);的位置Mainwin.right = Mainwin.left +(rect.right -rect.left)* 2; Mainwin.bottom = Mainwin.top +(rect.bottom-rect.top)* 2;在此基础上实现随后的1/4/6/8/13/16通道显示. 1.2多窗口设计多窗口设计过程中使用的主要方法是SetWindowPos(). 它的函数原型是BOOL SetWindowPos(HWND hWnd,HWND hWndlnsertAfter,int X,int Y,int cx,int cy,UNIT. Flags);该功能的功能是更改子窗口,弹出的顶部窗口和Z顺序的大小和位置.

手机下载一个什么软件就可以局域网查看监控视频_视频监控客户端软件_gps监控服务器端软件

使用此方法和showwindow方法可以轻松显示多个窗口. 以下是默认的四窗口显示键代码,这些代码是通过严格的数学计算实现的. mVideoWindow [0] .SetWindowPos(&wndTop,Mainwin.left,Mainwin.top,(Mainwin.right– Mainwin.left)* 0.5,(Mainwin.bottom-Mainwin.top)* 0.5,SWP_SHOWWINDOW); mVideoWindow [1] .SetWindowPos(&wndTop,Mainwin.left +(Mainwin.right-Mainwin.left)* 0.502,Mainwin.top,(Mainwin.right -Mainwin.left)* 0.5,(Mainwin.bottom-Mainwin.top)* 0.5,SWP_SHOWWINDOW); mVideoWindow [2] .SetWindowPos(&wndTop,Mainwin.left,Mainwin.top +(Mainwin.bottom -Mainwin.top)* 0.503,(Mainwin.right-Mainwin.left)* 0.5,(Mainwin.bottom-Mainwin.top)* 0.5,SWP_SHOWWINDOW);-3-中国科技论文mVideoWindow [3] .SetWindowPos(&wndTop,Mainwin.left +(Mainwin.right-Mainwin.left)* 0.502,Mainwin.top +(Mainwin.bottom-Mainwin.top) * 0.503,(Mainwin.right-Mainwin.left)* 0.5,(Mainwin.bottom-Mainwin.top)* 0.5,SWP_SHOWWINDOW); for(int i = 4; i <16; i ++){mVideoWindow [i] .ShowWindow(SW_HIDE); // SW_SHOWNORMAL}视频显示的其他通道相同,在此不再赘述.

1.3弹出菜单设计由于创建了基于对话框的程序,因此资源视图中没有菜单选项. 您可以右键单击根节点IPVC,添加资源,选择MENU,系统将自动命名菜单资源IDR_MENU1并自动打开,添加所需的菜单资源,修改ID,添加WM_CONTEXTMENU()[2]消息代码GetDlgItem (IDC_VIDEO_WINDOW)-> GetWindowRect(&rect1); //获取控制区域的矩形if(rect1.PtInRect(point)){CMenu menu1; menu1.LoadMenuA(IDR_MENU1); GetCursorPos(&point); CMenu * pPopup =菜单1.GetSubMenu(0); pPopup-> TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON,point.x,point.y,this); //在当前鼠标位置显示指定菜单}由于要添加到此界面的每个视频窗口中的菜单具有不同的响应,因此必须首先设置菜单区域. 这是上面的代码. 该方法避免了坐标的计算,但是通过获得PIC控制区域即可完成.

手机下载一个什么软件就可以局域网查看监控视频_视频监控客户端软件_gps监控服务器端软件

对于界面底部的按钮,我们需要添加其点击消息. 具体方法是双击按钮以自动创建消息响应功能并自动命名,也可以右键单击控件并选择添加事件处理程序. 然后将相应的代码添加到消息响应功能. 在这里,我们介绍如何单击按钮以显示模式对话框. CSystemDlg dlg; dlg.DoModal();其中CSystemDlg表示要打开的对话框类,但是您需要事先包括此类的头文件. 界面如图1所示. -4-中国科技论文图1客户端主界面图1客户端界面综上所述,基于MFC的客户端界面的设计思想是①添加每个控件和名称根据实际情况确定ID和关联变量②添加初始化代码和消息Response函数. 由于VC ++具有良好的封装和继承性,因此MFC包含大量Windows句柄封装类以及许多Windows内置控件和组件封装类,因此,使用MFC设计和实现视频监视系统的客户端是明智的. 选择. 2功能设计2.1 SIP注册SIP(会话发起协议)[3]被称为会话发起协议,它是由IETF(Internet工程任务组)组织于1999年提出的,它基于IP网络,尤其是Internet. 在结构化的网络环境中,是用于实时通信应用程序的信令协议.

SIP采用类似于HTTP的模型,该模型易于实现. 可以在网络服务器和客户端之间部署各种应用程序. 它是全球多媒体会话控制领域的当前发展趋势之一. SIP主要提供以下功能: ①用户定位: 无论被叫方在哪里,都应确保呼叫到达被叫方. ②对话容量协商: 允许与呼叫有关的组就支持的功能达成协议. ③通话参与者管理: 通话参与者可以介绍其他用户加入通话或取消与其他用户的连接. 此外,可以转移用户或将其保留. ④呼叫建立: 在呼叫方和被叫方之间建立呼叫. ⑤呼叫处理: 处理呼叫转移和结束呼叫. SIP协议定义了两种类型的网络组件: 客户端和服务器. 客户端可以发送SIP请求并接收响应,服务器接收SIP请求并响应请求,因此SIP协议是客户端-服务器协议. 其结构如图2所示. -5-中国科技论文图2 SIP协议的网络结构SIP网络包含两种类型的组件: 用户代理(User Agent)和网络服务器(Network Server). . 这些服务器主要包括: 代理服务器,重定向服务器,注册服务器等.

手机下载一个什么软件就可以局域网查看监控视频_gps监控服务器端软件_视频监控客户端软件

这些类型的服务器为用户代理提供注册,身份验证,身份验证和路由服务. 用户代理分为用户代理客户端和用户代理服务器. 用户代理客户端负责发起SIP呼叫请求,而用户代理服务器负责响应呼叫请求. SIP会话建立过程如图2-3所示. 当主机A尝试与主机B建立会话连接时,主机A首先向主机B发送一个INVITE请求. 此INVITE请求包含有关主机A要使用的媒体类型,编码方法和传输端口的信息. 主机B收到此INVITE消息后,将向主机A发送200响应消息. 此响应消息还包含诸如主机B使用的媒体类型,编码方法和传输端口之类的信息. 当主机A收到此信息时,它将立即向主机B发送确认消息ACK. 协商过程结束,媒体数据开始传输,并建立了会话. -6-中国科技论文图3 SIP会话建立过程在此过程中,线程SIP_UA_MONITOR用于完成上述功能. 现在SIP注册成功,下一步是单击主界面底部的“呼叫”按钮以与服务器建立连接,然后可以接收视频流. 2.2接收视频流接收视频流是此设计中最关键的步骤. 我们使用RTP协议来完成此功能.

在实现此功能的过程中,我在传递参数时遇到了困难,因为SIP注册对话框不在主对话框中,也就是说视频监控客户端软件,主对话框程序需要调用其他对话框的变量. 此处使用的方法是添加一个桥函数类,该类允许主对话框和其他对话框轻松传递参数. 此类已经建立了几个子类SIP和RTP,体现了VC的功能,并且具有良好的封装性. SIP类用于自动注册,RTP类用于实时接收流媒体. 在此过程中,使用了线程SIP_UA_MONITOR [5],这为视频的接收提供了极大的便利. 接收过程如下: 在调用sess.GetNextPacket之后,获取用户指定的端口,创建一个RTP会话,设置接收模式,接收RTP数据报-检索RTP数据报-获取RTP数据报-删除RTP数据报[6]. ()成功接收数据,请调用sess.GotoNextSourceWithData()接收下一个数据包. 图4显示了视频流接收流程图. -7-中国科学技术论文开始获取原始数据. 设置时间戳和最大传输速率. 建立RTP会话. 退出时是否有RTP错误?第一包数据?解码此帧以获得下一个数据包结束数据包? endDataAccessYNNYYN图4实时接收和解码模块的流程图2.3视频流的实时回放接收到视频流后,我们需要在视频显示窗口中使其实时播放. 方法是: 接收到数据包后启动Jrtps线程,然后使用Directshow筛选器呈现在视频窗口上显示.

2.4视频流存储视频流存储的基本思想是设置一个计时器,以检测是否每隔一段时间就接收到一个数据报,如果要检测是哪个通道接收到数据,则要获取当前时间,读取配置文件,比较当前时间是否与配置时间相同. 如果是,请启动记录线程. 启动记录线程的想法是: 每15分钟遍历记录计划,接收数据包,将其放入缓冲区中,然后将其写入硬盘. 1.必须判断文件长度是否超过单个文件的大小,如果是,则重新生成一个新文件. 2.文件数是否超过单通道视频文件数. 如果是,请打开第一个视频文件并覆盖旧数据,即循环保存视频. -8-中国科技论文3结束语术语该解决方案构建的视频监控系统客户端平台采用成熟的Directshow技术,为视频流的捕获和回放提供了强大的支持,并且具有RTP协议的良好实时性. ,该程序无论在LAN或Internet的接收端均可接收流畅的视频,从而确保客户端的实用性. 特别地,在程序中开发的视频流的接收和实时回放具有良好的通用性和便携性. 它不仅可以用于视频会议,还可以用于大多数网络视频监视系统,例如社区监视,流量监视和安全系统. 其中,它对从事视频监控和多媒体软件开发的程序员也具有很高的参考价值.

[参考文献] [参考文献] [1]姚敏. 基于.NET架构的网络视频监控系统的设计与实现[D]. 南昌: 华东交通大学,2008. [2]徐小刚,高兆发,王秀娟. Visual C ++的介绍和改进. 北京. 清华大学出版社. 1999. [3] RFC2543-1999. SIP: 会话发起协议[S]. [4]朱维恩. 基于SIP协议的视频监控系统的设计与实现[D]. 苏州: 苏州大学,2005. [5]我从小就很帅. VoIP eXosip呼叫代码. [2009.7.9]. [6] Jori.JRTPLIB [OL]. [2010-10]. 〜jori /页面/索引. php?n = CS.Jrtplib


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/bofangqi/article-268767-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...