基于字符串的IPC网络协议的设计与实现
《基于字符串的IPC网络协议的设计与实现》由会员分享,可在线阅读,更多相关《基于字符串的IPC网络协议的设计与实现(32页珍藏版)》请在装配图网上搜索。
1、本 科 毕 业 设 计论文题 目:基于字符串的IPC网络协议的设计与实现学生:学 号:专业_终极一班指导20XX 6月15日26 / 32基于字符串的IPC网络协议的设计与实现摘 要IPC即网络摄像头,嵌入式IPC是指把CPU、音视频解压缩芯片、I/O等硬件设备、操作系统和应用程序集成在一起的IPC。本协议是IPC和IPC、IPC和客户端之间、IPC和中心服务器、以及IPC和手机等各种终端之间的接口协议,适用于IPC同支持其的各类客户端、控制设备,客户端一般通过网络连接IPC,控制设备一般与IPC串行方式通讯。本协议的代码部分采用source insight编辑器,采用Linux系统环境下的A
2、RM平台交叉编译生成可执行文件以及可升级文件,将可执行文件挂载到IPC或者BLOCK365开发板上就可以运行可执行文件,也可以用升级工具将可升级文件升级到IPC或者BLOCK365开发板的芯片中。系统最终实现了视频编码,音频功能,网络功能,云台、镜头控制功能,缓存功能,报警输入输出,移动检测报警视频分析,视觉参数调节,编码参数调节,系统集成等一系列的功能。关键词:C/C+;ARM平台;Linux操作系统;应用层和传输层网络协议Design and implementation of network protocol based on the IPC stringAbstractIPC is a
3、 networkcamera,embedded IPCrefers to theCPU,audio and videocodec chip,IVOand other hardware devices,operating systemand application integrationwithIPC.This protocol is IPC and IPC, between IPC and client, IPC and center server, as well as IPC and mobile phone etc. various between terminal interface
4、protocol, suitable for IPC to support all kinds of the client, the client control equipment, general IPC connection through the network, control equipment and IPC serial communication. The code portion of this agreement by the source insight editor, the Linux system under the environment of ARM plat
5、form compiler generates executable file and update file, the executable file is mounted to the IPC or BLOCK365 development board will be able to run the executable file, can also upgrade file to upgrade to IPC or BLOCK365 development board of the chip with the upgrade tool.The system realizes video
6、coding, audio function, network function, PTZ, lens control function, the cache function, input and output of alarm, video analysis of mobile detection alarm, visual parameter adjustment, coding parameter adjustment, system integration and a series of functions.Keywords:C/C+;ARM platform;Linux opera
7、ting system;the application layer and the transport layer protocols目 录第1章 引言1第2章 IPC的基本理论知识32.1 IPC的产品介绍32.2 IPC的主要功能42.3 IPC的分类52.4 IPC的专业术语5第3章 IPC所用到的软件网络以及硬件技术73.1 IPC用到的软件技术73.1.1 用到的组件73.1.2 开发技术以及常用技术73.2 IPC用到的网络协议93.2.1 IPC网络协议的应用层协议93.2.2 IPC网络协议的传输层协议103.3 IPC所用到的硬件技术11第4章 IPC的详细设计实现134.1
8、 整个系统的详细设计134.2 登录登出保活流程134.2.1 普通登录134.2.2 主动注册登录144.2.3 登出144.2.4 保活144.3 监视控制流程144.3.1 普通监视控制144.3.2主动注册监视控制154.4 回放控制流程154.4.1 普通回放控制154.4.2 主动注册回放控制164.5 语音对讲流程164.5.1 普通语音对讲164.5.2主动注册语音对讲164.6 云台控制流程16第5章 IPC的系统功能测试185.1 视频回放过程中的声音卡顿185.2 属性修改问题195.3 视频显示不同步问题20第6章 总结23致 25参考文献26第1章 引言随着国家科技水
9、平的进步以及经济实力的提升,政府和人民对安全的要求越来越重视,安防这一行业正是在这样的背景下发展起来的,我国的安防业从八十年代开始起步,目前已基本成型,且安防行业正经历着一个高速增长期,产品开始走向高清化、行业化、智能化应用,整个安防产业呈现出蓬勃发展的形式,主要表现在以下几个部分:1. 需求量不断增加。目前不仅国需求广泛,国外也正大量进口我国的安防类产品,比如国的两大安防巨头,海康和大华,他们早已经发展成一个规模庞大的企业,企业不仅拥有完善的管理制度,更有体系的培养人才的培训机构,在大量销售产品的同时他们还在全国各主要地区以及海外设置了办事处或者生产基地,以供售后服务。你可以在很多场合安装安
10、防类产品IPC,DVG,HVR,就是说它的应用相当广泛,目前已应用于物联网、智能交通、智能家居、教育、视频会议、医疗等方面。2. 技术创新推动产业升级。安防产业开始以产品发展到以系统竞争为主,企业也从以技术和产品为主转移到以客户服务为主。这是该行业新的发展方向、新的机遇以及新的挑战。大型体育活动比如奥运会以及银行等金融业,城市安全等高端应用中,安防产品正以其无可取代的作用影响着我们的生活学习以及工作,它不仅提高了生活质量,构建了和谐社会,还维护了社会的公共安全以及个人人身财产的安全。3. 自由竞争度高。安防产业闪现着一种百花齐放的形式,目前还未形成陇断竞争,以后相当长的一段时间也不会出现这种状
11、况。虽然目前国发展很好的两个企业控制着大量的市场,但是依然有小的安防类企业可以生存并快速发展了起来,这在其他很多行业是不可能也是不可思议的。就比如我现在所在的公司,短短的四年时间已发展成一个拥有600多人的小中型企业,并且在华东,华南,华西以及华北都拥有自己的售后服务中心,在我短短的两个月的实习期间我就看到不少海外的顾客或者代理商到我们公司参观以及谈业务。由此可见,安防业的自由竞争度相当高,只要你有技术跟市场,你不必担心大的企业会形成陇断。安防产品种类奇多,包含了报警、门禁、可视对讲、巡更、监控、线缆、巡更等,产品线宽广,厂商不仅可以集中做某种产品,而不是整个一系列产品线,也可以做一个系列的产
12、品,就是大家所熟知的一条龙生产线。4. 管理资本力量加速企业发展。安防产业正从之前的边缘性产品逐渐发展为国民生产中的支柱产业。近年来不断地有新的安防企业上市,资金的大量投入为这一行业的加速发展起着不可忽视的作用。一些安防企业要想在这个领域立足必须不断提升整体运营能力以及发展自身培养人才的能力,还要有资金周转以及引进投资的的能力,使企业能够在强大的资本推动下持续健康地发展。另外,市场也是不可忽视的,好的安防企业在全国各区都有办事处甚至是生产基地,有些还把市场伸到了国外。本课题主要是实现IPC和IPC,IPC和客户端,IPC和中心服务器之间以及IPC与手机等终端之间的接口协议,简称IPCIPIP
13、camera Interface Protocol。本协议适用于IPC同支持其的各类客户端、控制设备,客户端一般通过网络连接IPC,连接方式是远程终端控制telnet,通过cmd或者XSHELL打开telnet终端,连接上IPC的IP地址,然后输入用户密码进入Linux操作系统,进入指定目录下运行可执行文件使IPC工作,最终再通过IE端进行控制处理。适用于IPC同支持其的各类客户端、控制设备,客户端一般通过网络连接IPC,控制设备一般与IPC串行方式通讯。系统最终可以实现视频编码,音频功能,网络功能,云台、镜头控制功能,缓存功能,报警输入输出,移动检测报警视频分析,视觉参数调节,编码参数调节,
14、系统集成等一系列的功能。但是由于器材的原因所以我在演示功能的时候有些可能无法展示出来,比如说移动监测报警视频分析,这一功能的实现需要申请报警输入输出设备线,而公司对这一层管理的很严格,所以不能轻易申请下来。再有就是云台、镜头控制功能,公司部设备是无法连到外网上的,或者说公司限制了电脑以及设备的MAC地址连接外网,而这一功能必须要服务器端连接到云平台上,客户通过云平台登录方可实现这一功能。第2章 IPC的基本理论知识2.1 IPC的产品介绍IPC1又叫网络摄像机或者IP摄像机,近几年得益于网络带宽,DSP芯片技术的发展,ARM平台的不断完善,以及算法技术存储技术的进步而得到大力发展。IPC采用标
15、准H.264/MPEG4视频压缩技术,压缩比高,码流控制稳定、准确。采用Sony专业CCD图像传感器,高色彩还原度。支持红外夜视功能,可视距离10到20米。支持多码流,ACF活动帧率控制,支持丰富的网络协议,包括TCP、UDP、NAT等。支持RS485控制以及透明串口功能。支持报警I/O功能,各类事件可联动报警。支持SD卡存储图像功能,可热插拔。支持POE/12VDC功能,支持JPEG抓图等功能。从实现的功能来讲,IPC相当于模拟摄像机+视频编码器DVS构成的联合体,但从设备构成角度讲,IPC与模拟摄像机+DVS的联合体是有本质区别的,IPC从视频采集、编码压缩到网络传输,所有环节都可以实现全
16、数字化,而模拟摄像机+DVS联合体需要经过多次模/数转换过程,即IPC才是真正的纯数字化设备,这是二者的本质区别,也因此导致模拟摄像机+DVS的联合体的图像技术指标无法与IPC相比。IPC本身可以看作是镜头、摄像机、视频采集卡、计算机、操作系统、软件、网卡等多元素的集合体。注意:IPC与我们常见的电脑摄像头不同,电脑摄像头即Web Camera,如身边常见的聊天摄像头,其实质是一种视频采集设备,本身不具备视频编码压缩及传输功能,通常通过USB接口连接到电脑,由电脑实现视频编码及传输功能,而IPC是完全独立的设备,不依赖PC,自带处理器、操作系统及缓存,需要配置IP地址,可以独立完成视频采集、编
17、码压缩及网络传输功能。IPC可以安装在局域网,也可以安装在互联网环境中,用户可以使用IE等浏览器在网络任何位置对IPC进行显示及控制,这种相对独立的工作模式使得IPC既适合大规模视频监控系统应用,也可以独立分散地应用在如商店、学校、家庭等分布式、需要远程视频监控的环境中。举例:、纽约。想象这样一个场景:当你在美国出差时,打开电脑浏览器或PDA手机,输入IP地址或域名及密码,这时屏幕中出现了地球另一端你们家的画面,卧室、客厅各个房间都可进行实时视频浏览,你可以看看你们家的花花草草、看看你们家的阿猫阿狗。你会因此而多一份安心,少一份牵挂。而这仅仅需要在家中安装几个IPC,然后与网络连接即可,非常简
18、单。如今,网络视频监控已经走出了传统安防电视监控的下一领域。2.2 IPC的主要功能要详细介绍IPC的产品功能就得首先介绍一下DVR2的产品功能,DVR和IPC基本原理是一样的,所用的网络协议也一样,不同的是DVR多了一个录像功能,我们来看DVR的含义,DVR全称DIGITAL VIDEO RECORDER,数字视频录像机,就是说它本身自带录像功能,还有就是他带有多个摄像头,目前最多可支持16路。DVR的功能支持本地监控,录像存储,侦测报警,外部报警,录像回放,远程监控等。最主要的功能就是录像存储,录像回放,报警。录像存储包括配置录像,手动录像。侦测报警包括移动侦测,视频遮挡,视频丢失。录像回
19、放包括同步回放,异步回放;优先解码,平分解码,全速解码。IPC与DVR一样支持上面这些功能,另外两者还支持一系列的网络服务功能。比如PPPOE拨号连接、NTP服务、3G、WIFI、ARSP、EMAIL、手机监控、DDNS等。在两者的录像存储中IPC的存储录像功能需要插上存储卡你可以对录像视频中的图像进行抓图,而抓图又可分为手动抓图,配置抓图。云台和键盘的控制:配置相应的波特率,协议,地址位,然后接线正确就可以控制球机或者键盘。编码与解码:不同设备的编解码能力是不一样的例如5008A-S的编码能力最大是支持实时帧率25帧的2D1+6CIF;解码能力就是2D1全实时解码。5016H-E支持16D1
20、的全实时编码,支持8D1的全实时解码。到这里我想可以在IPC和DVR的基础上拓展HVR了。HVR是在DVR的基础上开发的一款DVR与NVR之间过渡的产品,既可以做DVR使用,也可以做NVR使用,也可以同时做DVR和NVR。HVR的出现是为了满足市场对高分辨率图像的需求,目前DVR最大的录像分辨率是960H的,普通DVR只能做到D1编码,根据市场上现有的存储高分辨率图像的产品,主要有3个:NVR,960HDVR,SDI接口录像机,HVR的使用一般是与IPC一起搭配使用。一般的使用都是在局域网上使用。在公网上实现的主要是,远程监控辅码流,远程配置,录像下载,语音对讲等功能。2.3 IPC的分类与平
21、常所用的模拟摄像机一样,IPC也可以分成多种,可以按照外形分类、按照清晰度分类、按照室及室外应用进行分类。通常的分类方法是按照固定摄像机、PTZ摄像机、半球摄像机、一体球摄像机等直观外形特征进行分类。1.标准室枪机网络摄像机:此类摄像机具有固定或手动可变焦距镜头,一般用于监视固定场所,配合安装支架,实现中焦、远景或广角场景的监视功能,配合相应的防护罩可以应用于室外环境,摄像机现场FOVFiled Of View可以手动进行调整。2.高清百万网络摄像机:百万像素摄像机是一种特殊的IPC,顾名思义,百万像素摄像机指成像像素达到100万以上的IPC,目前市场上的可以达到150万像素,而最新产品甚至可
22、以达到200万。这是模拟摄像机最高可达到的分辨率的两倍以上,从而可以显示出更细微的容以便增强对目标识别能力,也可覆盖更大围的场景以节省摄像机安装数量。百万像素摄像机通常配置百万像素图像传感器,其高像素级为网络带宽和存储带来更高的要求。3.PTZ及一体球IPC:此类摄像机为可变焦距、可变角度摄像机,通过远程操作实现焦距及角度的控制,因此拥有大围如室大堂、室外广场、停车场等场景的监视功能。与模拟PTZ摄像机区别在于此类IPC不需要单独布置控制线缆便可以实现对PTZ的控制,因为下行的PTZ控制型号通过网络进行传输。与传统模拟PTZ及一体球型摄像机类似,此类IPC通常具有预置位、隐私遮挡、自动跟踪等多
23、种功能,属于高端应用类摄像机。4.固定半球IPC:此类摄像机一般采用固定焦距或手动变焦镜头,置与半球护罩,外观漂亮便于安装,通常需要天花板支撑安装,缺点是镜头基本固定,由于空间有限难于更换其他焦距的镜头,摄像机现场FOVFiled Of View固定,难于调整。5.红外防水网络摄像机:防水防尘。6.防爆半球型网络摄像机以及红外防爆半球型网络摄像机:与上面的相比多了防爆还有日夜转换的功能。2.4 IPC的专业术语1.IP互联网协议是一种通过网络传输数据的方式,是用于报文交换网络的一种面向数据的协议,数据在IP互联网中传送时会被封装为报文。2.ASIC专用集成电路它是为特定应用设计的一种电路,与一
24、般用途的电路比如微处理器相区分。3.分辨率图像分辨率是度量数码图像清晰程度的一种方法:分辨率越高,图像清晰程度就越高。分辨率可以通过纵向宽度像素数*横向高度像素数来表达,如320*240。4.CIFCIF即通用中间格式。在PAL制式下,CIF是352*288像素,在NTSC制式下CIF是352*240像素的视频分辨率。5.帧率帧率FPS用于描述视频流更新的频率,用帧/秒表示,当帧率达到每秒钟25帧以上PAL时,人眼认为视频是即时的。6.即超文本传输协议,为上运行的文件文本、图形、声音、视频、和其他多媒体文件设定规则,协议在TCP/IP协议组的上端运行。第3章 IPC所用到的软件网络以及硬件技术
25、3.1 IPC用到的软件技术3.1.1 用到的组件IPC与DVR一样,在软件开发过程中用到了一些组件3,如GUI、Widget组件、GDI组件、Comm组件、Media组件、Manager、ExchangeAL组件;Json4、XML、Zlib、ZZIP、Squirrel;Storage、WFS;Infra组件;NetIP组件;TPBase。GUI:图形用户界面,包含了各种GUI界面的实现,是GUI应用的重点。Widget:各个GUI控件的实现6.存储相关硬件7.其他外围8.电源部分。1.处理器:控制完成取出指令和执行指令任务的部件,它是系统的核心部件.我所了解的IPC方案中应用的中央处理器采
26、用的芯片是Hi3515,TI DM365 GM8181等。Hi3516集成高性能的ARM Cortex A9 作为主控CPU,完成系统任务和部分音视频处理功能。其主要规格如下: 集成32KB L1 指令Cache 和32KB L1 数据Cache,集成256KB L2 Cache,集成VFP, 功能最高频率800MHz,处理能力可达2000DMIPS。2.存:连接CPU 和其他设备的通道,用来存储CPU处理的临时数据和程序指令,起到缓冲和数据交换作用。存的性能指标:存储容量,存储速度,存储的可靠性,性能价格比。存的现状:存技术发展主要侧重于提高速度和扩充容量,围绕这个主题,目前已经诞生了多种新
27、技术,比较有代表性的有:DDR SDRAM、SLDRAM以及RDRAM家族的Concurrent RDRAM和Direct RDRAM。3. Flash:闪存是一种无挥发性 Non-Volatile 存,在没有电流供应的条件下也能够长久地保持数据,其存储特性相当于硬盘,这项特性正是闪存得以成为各类便携型数字设备的存储介质的基础。在DVR中Flash主要放置程序和资源。4. 前端视频编解码AD:前端视频解码芯片简称前端AD,目前有Techwell ,Nextchip,Richnex,以及的一些AD厂家。采集前端摄像头的信号,加以一定的处理,转换为后面的视频编码芯片所能接收的数据格式。5. 后端视
28、频解码DA:这里描述的视频解码模块主要是解码芯片及其外围,如VGA输出,如早期我们公司使用的Hi3120和NVP5000 。转化为目前主流的一下些视频输出信号,供外部显示。6. 存储相关硬件:目前嵌入式DVR的存储介质主要是硬盘,刻录光驱,USB存储7. 设备等。PCI-SATA的协议转换的芯片,部集成的SATA接口。8. 其他外围:RTC,报警输入输出,USB,前面板。9. 电源部分:电源部分比较复杂,在此不必列出。第4章 IPC的详细设计实现4.1 整个系统的详细设计整个系统的详细设计也就是工作流程详细设计,主要可以划分为以下几个部分,PU与CU进行交互成功后,除了有需要返回的数据外,还带
29、有一个返回码,具体见返回码定义表,无特别说明,控制流都是通过主socket进行通信。由于整个工作流程很复杂,过程也很多,所以这项工作是团队分工的,我负责的是登录过程、监视控制流程、回放控制流程和语音对讲流程。剩下的都是小组其他成员负责完成的,最终代码有小组组长整合微调并上传。部成员对其他人的代码相互之间也会有一定的了解,有时也会互相帮忙,所以,虽然我只负责了几个功能的实现,但是其他功能也是相对熟悉一些的,比如文件查询流程、日志管理流程等等。下面就以我做的几个功能作一下详细的介绍。4.2 登录登出保活流程4.2.1 普通登录如图4.2.1所示图4.2.1 普通登录建立主Socket连接,用于控制
30、流传输。发送登录请求,请求中包含用户名、密码、加密方式、登录类型。验证用户成功,返回SID、通道个数、设备类型。代码部分的流程:start启动线程,Connectcallback连接回调函数建立主连接,将传入的连接加入InsertConnect中。Reccallback返回回调函数,通过GetConnect不断地获取连接,用AddRef计数将获取到的连接通过AddData再由ProcessMsg进行数据分析、处理,不断地对主连接进行保活操作,筛选之后加入OprMsg中处理,最后调用COpLogin:COpLogin函数进行登录的一系列操作。4.2.2 主动注册登录普通登录是由CU比如IE端向P
31、U比如IPC发送TCP请求,PU端收到请求后对CU端作出应答,允许建立连接。而主动注册登录则是由PU端主动去连接CU端。l PU与CU建立主socket用于控制流传输l PU通过主socket发送登录请求,请求中包含用户名,密码,加密方式,设备类型,通道个数。l CU验证用户成功,返回SID。如图4.2.2所示图4.2.2 主动注册登录4.2.3 登出4.2.4 保活4.3 监视控制流程4.3.1 普通监视控制通过之前的登录已经建立好了主Socket连接,也就是说视频监视的前面的过程和普通登录里的过程是一样的。所以这里在原来的基础上再次建立Socket连接,也就是建立新的套接字,用于传输视频数
32、据。通过新建的套接字发送认领请求,认领成功后返回成功标志,在新建套接字的认领之后要开始监视,则在主连接上发起一个打开监视的命令,而这个命令的执行需要传递给对应的子连接去处理,所以暂时保存主连接收到的信息以使它们可以快速的定位到子连接中去。监视请求中包括动作、通道、码流类型。监权成功后返回成功标志,返回主连接。通过新建套接字开始传输视频数据,包序号1,2,3.数据发送完毕或者CU端请求关闭监视,返回应答并停止发送视频数据,最后关闭新建的套接字。这就是普通监视控制的全过程,由于这里有两个连接,也就是两个Socket,所以主连接我用的是主Socket,子连接我用的是套接字这个词,以方便读者阅读。4.
33、3.2主动注册监视控制类似与普通登录与主动注册登录的关系,普通监视控制与主动注册监视控制也是由PU端去主动连接CU端的。CU通过主socket发送主动注册监视请求,请求中包含通道号,码流类型。PU鉴权返回成功。PU与CU建立套接字用于媒体数据传输。PU通过新建的套接字发送认领请求,请求中包含通道号,码流类型,消息头的SID字段,为CU的SID号。CU请求视频监视,请求中包含通道,码流类型,PU通过这个识别对应的媒体数据发送socket。PU鉴权成功后,返回OK ,并开启捕获模块,开始视频数据发送,视频数据的包序号从1开始递增。CU请求关闭视频监视,请求中包含通道,码流类型,停止捕获模块,停止视
34、频数据发送, PU返回应答信息,关闭对应媒体数据发送socket。4.4 回放控制流程4.4.1 普通回放控制前面的主Socket仍然是普通登录里建立的。新建Socket用于传输视频数据,通过新建套接字发送认领请求,认领成功返回成功标志;通过主Socket请求回放,回放包括动作、文件名、开始时间、结束时间。监权成功后找到文件,返回成功标志;之后开始传输视频数据,包序号为1,2,3.请求暂停动作,文件名;暂停成功后返回成功标志;请求继续回放动作,文件名继续回放成功,返回成功标志;请求定位回放动作,文件名,开始时间,结束时间定位回放成功后返回标志;请求停止回放,停止回放成功后返回标志;请求关闭,关
35、闭成功返回标志,关闭视频数据套接字;文件回放结束后PU会在媒体数据包的endflag字段设置为1,停止数据发送,发送EOF通知CU关闭Socket。4.4.2 主动注册回放控制由PU端主动连接CU端,其他过程与上面的回放过程类似。4.5 语音对讲流程4.5.1 普通语音对讲前面的普通登录建立好主连接后,CU与PU建立新套接字用于对讲数据传输。CU通过新建套接字发送认领请求,请求中包含通道号目前只支持一路对讲,通道号为0,未登陆的主连接必需要先认领,否则其上的操作一概不理认领后就变成子连接了。消息头的SID字段是CU的SID号,子连接认领成功后,CU通过主socket请求语音对讲,命令只针对子连
36、接有效主连接需要转发此命令给子连接,如果是主的话, 转给子连接继续处理,请求中包含通道号目前只支持一路对讲,通道号为0。同时只支持一个CU与PU进行语音对讲,如果已经与其他CU开启了语音对讲,返回已经开始对讲错误码。命令的应答还是从主连接上走的。PU鉴权成功后,PU开启捕获模块,开始语音数据发送,语音数据的包序号从1开始递增,同时CU也开始语音数据发送,语音数据的包序号从1开始递增。CU请求关闭语音对讲,请求中包含通道号,PU停止捕获模块,停止语音数据发送, PU返回应答信息,关闭新建socket,CU收到应答信息后,停止向PU发送语音数据,关闭新建socket。4.5.2 主动注册语音对讲这
37、一部分不是由我完成的,所以这里不作过多说明,而且过程与上面的相似。4.6 云台控制流程云台控制这一块虽然不是由我完成,但是完成该部分的人出差去了海外,所以这一块暂时也交给我负责,主要是维护,防止出现BUG,另外还有之前提到,PU连接到云平台,CU通过云平台访问PU端;CU直接通过DNS解析将PU端的端口解析成自己能够识别的端口号。现在打算把这两个功能全放到云台控制中去。这一过程也是由我负责的,所以在此有必要说一下云台控制流程。在代码中是用VVNAT代表的云平台。首先初始化云服务状态机的驱动,如果有启动则关闭启动,如果服务器上有客户端则踢出,释放服务器资源,这里面用到了一种单件模式,就是说在整个
38、过程中只调用一次并返回值。因为单件模式的函数在整个过程中只满足它的条件一次,所以只需调用一次。NAT状态转换图。0状态:DNS探测校验IP地址的有效性,校验成功后就进入状态1。因为进入该状态的前状态可能是2也可能是1,两者通过是否清s_NatServerIp来区分,以保证s_NatServerIp的正确,因为如果从2=0则使用老的地址再尝试一次。1状态:连接服务器,第一次初始化,如果服务器为空则在服务器端创建Socket并分配空间,这时候就开启服务器了。测试连接状态:获取NAT穿越的服务器的连接状态,连接成功就进入状态2,如果3分钟还没有连接就进入状态0;重新探测DNS,释放资源,提出该服务器
39、上的所有客户端,释放服务器资源。2状态:日常信息维护测试连接状态,连接断开时进入状态0,连接服务器。此处不释放m_pServerNAT_OBJID以使再次DNS探测成功之后先用上次的IP地址继续尝试。第5章 IPC的系统功能测试整个IPC的功能实现后我们并开始了一系列的测试,在测试的过程的遇到了一些功能没有实现的模块,还有一些功能虽然实现了但是没有达到预期的效果,小组的各成员都存在着一定的功能实现问题,这其实是正常的情况,因为在编写代码的时候不能结合设备进行实时测试,而这也是不科学的,效率太低,所以一般是等代码部分全部完成并组合起来联合调试。调试时我们只是做一下初步测试,发现没有什么明显的BU
40、G就算是通过了,然后就把编译生成的可执行文件交给测试部,测试过程是由测试部完成的,他们发现问题并反馈给相应的代码负责人,代码负责人首先在开发板上复现问题,然后判断是哪一过程的问题,接着查看这一部分的代码并试着优化代码,最终解决问题。下面我就按照测试部反馈给我的问题的时间顺序作一下详细说明。5.1 视频回放过程中的声音卡顿视频回放过程中有时候声音会一顿一顿的,就是平时所说的卡。这是最新开发的程序中出现的问题,因此我参考了之前的可执行文件的效果。刚开始的时候我录了我手机里的几首歌,发现大部分声音还是正常的,只是放到那几首歌时会出现卡的情况,经研究发现我手机里的音乐竟然分成十几种不同的码率,也就是b
41、ps,举个例子,有一首歌是192bps,192比特每秒,就是说每秒传送192位。起初我判断的是声音卡顿跟声音的比特率有关,但是主管说所有的声音mp3,wma之类在PU端都已经转化成G711格式的声音,就是所说的网络传输中的公用的格式,码率是72bps,所以我之前得到的结论就这样被推翻了。接着我就做出假设,声音卡顿的问题可能和传送的资源、转换为G711格式时是否有丢帧、发送速度过慢、网络延时、刷新网络状态慢、速度控制、网络休眠时间等有关,于是又开始了大量的调节测试。最后发现不可能是丢帧,因为丢帧的话根本不会发送出去,还有就是发送速度只要够快,客户端可以把接收到的数据暂时储存起来,当存储空间满了可
42、以返回一个命令使PU端暂时停止发送数据,也就是说只要数据发送及时就不会出现声音卡顿问题。经过一连串的排查,花了我两天多的时间最终发现问题可能在网络休眠时间那块。图像是每秒钟发送25帧,声音跟图像一样,所以每40ms发一次是最佳状态,超过40ms会卡,低于40ms客户端可能会存在存储问题,所以40ms是最佳的。代码里采用的休眠时间只是一个估计值,用的是默认的20ms,再加上两次调用函数的时间差值,差不多是40ms,当时间差高于20ms时就会出现卡顿,因为总时间超过了40ms,所以我就试着修改了这部分的代码。我把每次发送的间隔时间固定在40ms,休眠时间设置成40ms减去两次两次调用函数的时间差。
43、至此,读者可能会问如果两次调用函数的时间超过40ms出现了负值怎么办,不是还会卡吗?这点我也考虑过,但是我们的开发板采用的是高性能的DSP芯片,而可执行文件的运行环境是Linux操作系统,他的处理速度是相当快的,而我们的函数执行速度也是很快的,所以不会出现两次调用的时间差超过40ms的情况。修改完后再测试发现效果很好,测试部的详细测试后也没再反映问题。所以这一次的修改BUG过程算是完成了,也是自己的一次初次尝试,通过这次的修改BUG过程我大致有了修改BUG的方向,这为之后修改BUG的时候提供了经验也节省了时间。但是由于才改了几次BUG,所以还是不太熟练,等以后熟练了我会把经验总结一下以供之后的
44、人参考。5.2属性修改问题登录IPC之后新增用户改变部分属性后不能重启设备。这个BUG同样是由测试部反馈给我们的,为此,我特意申请了一个IPC,在IE端的新增用户组里添加了新的用户,并用新用户重新登录,登陆之后改变了IPC的部分属性,我选择的是改变制式,一般情况下,系统默认的用户admin在改变属性后有一个重启提示,确认后IPC将重新启动,但是新增用户在改变属性后却无法重启,而且就连用户在刚建立时属性都选择不了,全是系统默认的属性,这样明显是无法适应用户的使用的,所以我就开始找相应部分的代码。在这我要声明一下,这次的毕业设计中我用到了很多在大学里面从来没接触过的函数,很多功能也只是了解一些却无
45、法熟练使用,比如memset、memcpy、Json之类,所以我是边学习这些函数的使用方法边写代码的,而且很多头文件以及接口函数都是公司库里面的,这么说吧,有些函数我只看得懂名字,知道它是干嘛的,但它是怎么实行的却不在我的掌握围之,这就是面向对象的思想吧,还有一些函数接口是我这部分的,这些接口我必须实现它们的功能,也就是说它们是如何实现的,过程是什么必须一步步的安排好。还有就是我在写代码之前看了好多别人写的代码,自己也参考了一下格式,总之学到了很多经验,但是还是由于自己以前代码写得少的缘故,检查代码时特别费劲,更加不可思议的是我的限选课选的方向是嵌入式和软件,关于网络的课程一门都没选,而我的工
46、作又是更网络密不可分的,所以我还要一边看书一边了解网络协议,要不然根本无法理解inet_ntoa9与htonl,TCP与UDP的含义还有区别。回到正题,其实这个BUG的原因很好找,只是由于我对代码的结构不是太熟悉所以找了很久,这就是个权限问题,admin用户类似与windows系统里的Administrator以及Linux系统里的root,所以他可以拥有一切该有的权限,而IPC里分为admin,guest还有其他用户这三种类别,只需在建立新用户组时把其他用户归入guest组里就可以拥有所有不威胁到系统安全的权限,这也是我从代码里总结出的结论,这一次的BUG其实严格意义上来说不算BUG,但是正
47、是通过查阅代码才找到了解决的方法,所以从代码中寻找是正确的途径。5.3 视频显示不同步问题视频源连接到BLK5016T-S系列开发板上,当16路视频接的同一视频源时IE端16路画面显示之间不同步。这一问题是由客户反馈给我们的销售人员,再由销售人员和我反映的,在和销售人员的交流中我明显感觉到有必要与客户直接交流一下才能具体的知道用户究竟反映的是什么样的问题,但是从销售人员口中得知客户是美洲那边的,也不是说英语国家的,所以我只能看他们的聊天记录,我这四级水平勉强能看懂,不过幸好我要求看了一下,因为销售人员提供给我们的问题里漏了一句关键的话,那就是用户说的不一致是由于丢帧引起的,就是说画面一卡一卡的
48、,有些没及时发送过来,而我们的理解是画面与画面之间有几到几十毫秒的延时,客户反映的是我们的新产品有问题,去年11月份的是正常的,这在后面会详细讲到。经过这次经验我充分了解到直接交流的重要性,因为传递口信的人有事可能没完全理解传达者的本意,所以传达消息时可能会出现偏差,这对解决问题的总方向的把握会有绝对的影响的。为了检验接受画面时是否就已经产生16画面不一致我采取了拍照的方式,多次取样后发现实时画面是一致的,这说明问题确实出在网络这一块,也就是我们部分负责的。IE端的画面通过截图后发现果然存在偏差,这是肉眼看不出来的,因为画面之间误差只有不到0.15s,而人的视觉暂留时间在0.1到0.4s之间,
49、所以一般是看不出来的。如图5.31所示图5.31 16路画面不一致这是我手在不停的来回晃动时IE端截下的图,细看就会发现图与图之间存在一些误差,这个问题出在了代码部分的transport库里面的TransportServer里,这部分代码采用的是多线程处理技术10。这是发送图像的函数,整个图像的发送是由Heartbeat线程从Send队列中取数据然后进行发送的,最多支持16路画面,所以有16个队列,另外还申请了一块节点空间,Send队列不断地取节点到各个队列中,用完的节点再释放回节点池,这一过程中Send的效率是足够高的,问题最终出现在Heartbeat线程这一块,因为在Linux终端打印消息
50、时出现了Heartbeat线程所调用的一个函数里的失败的消息,是由于Heartbeat线程没能及时把Send线程里的数据发送出去造成的,所以最终把问题锁定了。在我反复查看代码以及参考之前出的产品的效果我发现这是由于两个线程竞争锁的关系,我在Heartbeat_TCP、Heartbeat_UDP以及Heartbeat_VVNAT这三个线程都添加了互斥锁,而在画面传输这方面我们采用的是TCP传输,所以和UDP之间的锁不会发生竞争,在经过一个多星期的反复修改加测试后我发现TCP这一块的锁去掉后画面效果变得更好,比以前更一致了,而且也没发现丢帧画面也没出现发不出去的情况。我分析了一下,这是由于在TCP
51、中加了一些不必要的锁,这些锁虽然没和Send线程发生竞争,但是进入以及退出锁时会花费时间,这对画面的发送是有影响的,即便如此,在去掉这些锁之后,画面仍然没达到完全一致的地步,这是因为函数调用进入队列会有一定的时间误差,而且Send线程里也有一些互斥锁,需要花费一定时间,所以这个问题没有最终解决,不过客户那边接受了修改之后的产品.如图5.32所示图5.32 16路画面一致第6章 总结本课题采用C+语言,应用source insight编辑器,在Linux环境下使用ARM平台交叉编译生成可执行文件,最后将该文件移植入DSP芯片,通过设定芯片所在设备的IP地址以及MAC地址公司部的MAC地址是无法连外网的在IE端或者指定的软件上执行程序,使设备运行。系统最终实现了视频编码,音频功能,网络功能,
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。