基于字符串的IPC网络协议的设计与实现_第1页
基于字符串的IPC网络协议的设计与实现_第2页
基于字符串的IPC网络协议的设计与实现_第3页
基于字符串的IPC网络协议的设计与实现_第4页
基于字符串的IPC网络协议的设计与实现_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、本 科 毕 业 设 计(论文)题 目:基于字符串的ipc网络协议的设计与实现学生姓名:学 号:专业班级:终极一班指导教师:2013年 6月15日基于字符串的ipc网络协议的设计与实现摘 要ipc即网络摄像头,嵌入式ipc是指把cpu、音视频解压缩芯片、i/o等硬件设备、操作系统和应用程序集成在一起的ipc。本协议是ipc和ipc、ipc和客户端之间、ipc和中心服务器、以及ipc和手机等各种终端之间的接口协议,适用于ipc同支持其的各类客户端、控制设备,客户端一般通过网络连接ipc,控制设备一般与ipc串行方式通讯。本协议的代码部分采用source insight编辑器,采用linux系统环境

2、下的arm平台交叉编译生成可执行文件以及可升级文件,将可执行文件挂载到ipc或者block365开发板上就可以运行可执行文件,也可以用升级工具将可升级文件升级到ipc或者block365开发板的芯片中。系统最终实现了视频编码,音频功能,网络功能,云台、镜头控制功能,缓存功能,报警输入输出,移动检测报警视频分析,视觉参数调节,编码参数调节,系统集成等一系列的功能。关键词:c/c+;arm平台;linux操作系统;应用层和传输层网络协议design and implementation of network protocol based on the ipc stringabstractipc i

3、s a network camera,embedded ipc refers to the cpu,audio and video codec chip,ivo and other hardware devices,operating system and application integration with ipc.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

4、 interface 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

5、of arm platform 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 real

6、izes video 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;

7、linux operating 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的

8、详细设计实现134.1 整个系统的详细设计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第

9、1章 引言随着国家科技水平的进步以及经济实力的提升,政府和人民对安全的要求越来越重视,安防这一行业正是在这样的背景下发展起来的,我国的安防业从八十年代开始起步,目前已基本成型,且安防行业正经历着一个高速增长期,产品开始走向高清化、行业化、智能化应用,整个安防产业呈现出蓬勃发展的形式,主要表现在以下几个部分:1. 需求量不断增加。目前不仅国内需求广泛,国外也正大量进口我国的安防类产品,比如国内的两大安防巨头,海康和浙江大华,他们早已经发展成一个规模庞大的企业,企业不仅拥有完善的管理制度,更有体系的培养人才的培训机构,在大量销售产品的同时他们还在全国各主要地区以及海外设置了办事处或者生产基地,以供

10、售后服务。你可以在很多场合安装安防类产品(ipc,dvg,hvr),就是说它的应用相当广泛,目前已应用于物联网、智能交通、智能家居、教育、视频会议、医疗等方面。2. 技术创新推动产业升级。安防产业开始以产品发展到以系统竞争为主,企业也从以技术和产品为主转移到以客户服务为主。这是该行业新的发展方向、新的机遇以及新的挑战。大型体育活动比如奥运会以及银行等金融业,城市安全等高端应用中,安防产品正以其无可取代的作用影响着我们的生活学习以及工作,它不仅提高了生活质量,构建了和谐社会,还维护了社会的公共安全以及个人人身财产的安全。3. 自由竞争度高。安防产业闪现着一种“百花齐放”的形式,目前还未形成陇断竞

11、争,以后相当长的一段时间内也不会出现这种状况。虽然目前国内发展很好的两个企业控制着大量的市场,但是依然有小的安防类企业可以生存并快速发展了起来,这在其他很多行业是不可能也是不可思议的。就比如我现在所在的公司,短短的四年时间已发展成一个拥有600多人的小中型企业,并且在华东,华南,华西以及华北都拥有自己的售后服务中心,在我短短的两个月的实习期间我就看到不少海外的顾客或者代理商到我们公司参观以及谈业务。由此可见,安防业的自由竞争度相当高,只要你有技术跟市场,你不必担心大的企业会形成陇断。安防产品种类奇多,包含了报警、门禁、可视对讲、巡更、监控、线缆、巡更等,产品线宽广,厂商不仅可以集中做某种产品,

12、而不是整个一系列产品线,也可以做一个系列的产品,就是大家所熟知的一条龙生产线。4. 管理资本力量加速企业发展。安防产业正从之前的边缘性产品逐渐发展为国民生产中的支柱产业。近年来不断地有新的安防企业上市,资金的大量投入为这一行业的加速发展起着不可忽视的作用。一些安防企业要想在这个领域立足必须不断提升整体运营能力以及发展自身培养人才的能力,还要有资金周转以及引进投资的的能力,使企业能够在强大的资本推动下持续健康地发展。另外,市场也是不可忽视的,好的安防企业在全国各大地区都有办事处甚至是生产基地,有些还把市场伸到了国外。本课题主要是实现ipc和ipc,ipc和客户端,ipc和中心服务器之间以及ipc

13、与手机等终端之间的接口协议,简称ipcip(ip 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平台的不断完善

15、,以及算法技术存储技术的进步而得到大力发展。ipc采用标准h.264/mpeg4视频压缩技术,压缩比高,码流控制稳定、准确。采用sony专业ccd图像传感器,高色彩还原度。支持红外夜视功能,可视距离10到20米。支持多码流,acf(活动帧率控制),支持丰富的网络协议,包括tcp、udp、nat等。支持rs485控制以及透明串口功能。支持报警i/o功能,各类事件可联动报警。支持sd卡存储图像功能,可热插拔。支持poe/12vdc功能,支持jpeg抓图等功能。从实现的功能来讲,ipc相当于“模拟摄像机+视频编码器(dvs)”构成的联合体,但从设备构成角度讲,ipc与“模拟摄像机+dvs”的联合体是

16、有本质区别的,ipc从视频采集、编码压缩到网络传输,所有环节都可以实现全数字化,而“模拟摄像机+dvs”联合体需要经过多次模/数转换过程,即ipc才是真正的纯数字化设备,这是二者的本质区别,也因此导致“模拟摄像机+dvs”的联合体的图像技术指标无法与ipc相比。ipc本身可以看作是镜头、摄像机、视频采集卡、计算机、操作系统、软件、网卡等多元素的集合体。注意:ipc与我们常见的电脑摄像头不同,电脑摄像头即web camera,如身边常见的聊天摄像头,其实质是一种视频采集设备,本身不具备视频编码压缩及传输功能,通常通过usb接口连接到电脑,由电脑实现视频编码及传输功能,而ipc是完全独立的设备,不

17、依赖pc,自带处理器、操作系统及缓存,需要配置ip地址,可以独立完成视频采集、编码压缩及网络传输功能。ipc可以安装在局域网,也可以安装在互联网环境中,用户可以使用ie等浏览器在网络任何位置对ipc进行显示及控制,这种相对独立的工作模式使得ipc既适合大规模视频监控系统应用,也可以独立分散地应用在如商店、学校、家庭等分布式、需要远程视频监控的环境中。举例:“青岛、纽约”。想象这样一个场景:当你在美国出差时,打开电脑浏览器或pda手机,输入ip地址或域名及密码,这时屏幕中出现了地球另一端“青岛”你们家的画面,卧室、客厅各个房间都可进行实时视频浏览,你可以看看你们家的花花草草、看看你们家的阿猫阿狗

18、。你会因此而多一份安心,少一份牵挂。而这仅仅需要在家中安装几个ipc,然后与网络连接即可,非常简单。如今,网络视频监控已经走出了传统“安防电视监控”的下一领域。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的编码

20、能力最大是支持实时帧率25帧的2d1+6cif;解码能力就是2d1全实时解码。5016h-e支持16d1的全实时编码,支持8d1的全实时解码。到这里我想可以在ipc和dvr的基础上拓展hvr了。hvr是在dvr的基础上开发的一款dvr与nvr之间过渡的产品,既可以做dvr使用,也可以做nvr使用,也可以同时做dvr和nvr。hvr的出现是为了满足市场对高分辨率图像的需求,目前dvr最大的录像分辨率是960h的,普通dvr只能做到d1编码,根据市场上现有的存储高分辨率图像的产品,主要有3个:nvr,960hdvr,sdi接口录像机,hvr的使用一般是与ipc一起搭配使用。一般的使用都是在局域网上

21、使用。在公网上实现的主要是,远程监控(辅码流),远程配置,录像下载,语音对讲等功能。2.3 ipc的分类与平常所用的模拟摄像机一样,ipc也可以分成多种,可以按照外形分类、按照清晰度分类、按照室内及室外应用进行分类。通常的分类方法是按照固定摄像机、ptz摄像机、半球摄像机、一体球摄像机等直观外形特征进行分类。1.标准室内枪机网络摄像机:此类摄像机具有固定或手动可变焦距镜头,一般用于监视固定场所,配合安装支架,实现中焦、远景或广角场景的监视功能,配合相应的防护罩可以应用于室外环境,摄像机现场fov(filed of view)可以手动进行调整。2.高清百万网络摄像机:百万像素摄像机是一种特殊的i

22、pc,顾名思义,百万像素摄像机指成像像素达到100万以上的ipc,目前市场上的可以达到150万像素,而最新产品甚至可以达到200万。这是模拟摄像机最高可达到的分辨率的两倍以上,从而可以显示出更细微的内容以便增强对目标识别能力,也可覆盖更大范围内的场景以节省摄像机安装数量。百万像素摄像机通常配置百万像素图像传感器,其高像素级为网络带宽和存储带来更高的要求。3.ptz及一体球ipc:此类摄像机为可变焦距、可变角度摄像机,通过远程操作实现焦距及角度的控制,因此拥有大范围如室内大堂、室外广场、停车场等场景的监视功能。与模拟ptz摄像机区别在于此类ipc不需要单独布置控制线缆便可以实现对ptz的控制,因

23、为下行的ptz控制型号通过网络进行传输。与传统模拟ptz及一体球型摄像机类似,此类ipc通常具有预置位、隐私遮挡、自动跟踪等多种功能,属于高端应用类摄像机。4.固定半球ipc:此类摄像机一般采用固定焦距或手动变焦镜头,内置与半球护罩内,外观漂亮便于安装,通常需要天花板支撑安装,缺点是镜头基本固定,由于空间有限难于更换其他焦距的镜头,摄像机现场fov(filed of view)固定,难于调整。5.红外防水网络摄像机:防水防尘。6.防爆半球型网络摄像机以及红外防爆半球型网络摄像机:与上面的相比多了防爆还有日夜转换的功能。2.4 ipc的专业术语1.ip(互联网协议)互联网协议是一种通过网络传输数

24、据的方式,是用于报文交换网络的一种面向数据的协议,数据在ip互联网中传送时会被封装为报文。2.asic(专用集成电路)它是为特定应用设计的一种电路,与一般用途的电路(比如微处理器)相区分。3.分辨率图像分辨率是度量数码图像清晰程度的一种方法:分辨率越高,图像清晰程度就越高。分辨率可以通过纵向(宽度)像素数*横向(高度)像素数来表达,如320*240。4.cifcif即通用中间格式。在pal制式下,cif是352*288像素,在ntsc制式下cif是352*240像素的视频分辨率。5.帧率帧率(fps)用于描述视频流更新的频率,用帧/秒表示,当帧率达到每秒钟25帧以上(pal)时,人眼认为视频是

25、即时的。6.httphttp即超文本传输协议,为网站上运行的文件(文本、图形、声音、视频、和其他多媒体文件)设定规则,http协议在tcp/ip协议组的上端运行。第3章 ipc所用到的软件网络以及硬件技术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界面的实现,是

26、gui应用的重点。widget:各个gui控件的实现(button,combobox、listbox等)gdi:各种图形算法的实现,输入法,多语言,字库。comm组件:包括报警、云台、串口、前面板media组件:gui业务核心组件,包括dvr的一些核心功能(视频编码、回放、录像、语音对讲(音频编码)、抓图、预览)。manager、exchangeal组件:配置管理、事件管理、日志、用户管理、升级、自动维护、配置交换。infra组件:线程、定时器、信号量、互斥锁、时间。3.1.2 开发技术以及常用技术可以在linux下开发,也可以在windows下开发。由于本人对windows下的开发工具相对而

27、言熟悉一点,这是在实习的初期。所以当时选择在windows下进行开发。当然经过两个多月的学习发现其实linux下的功能也很强大,在linux下编译时只需写一个makefile文件,把文件中的依赖以及它的路径还有命令行写好就可以通过终端的一个make命令对工程进行编译,生成可执行文件。我们是生成一个可执行文件包,里面包括可执行文件,可升级文件以及串口升级文件等等,所以我们采用的是make pack命令。之前我一直用的vc工具进行编辑编译以及链接运行,在公司大家都是用的是source insight编辑器,而我在学习这一编辑器后发现它的功能确实强大,使用也很方便。它内置对c/c+、java甚至x8

28、6汇编语言程序的解析。在编程时可以给你提供有用的函数、宏、参数等提示,可能刚开始的时候使用起来不太方便,但是习惯后绝对是你编程的首选,当然这也和个人习惯有关,有些人用惯了vc,就愿意使用vc,这也是无可厚非的,没有谁规定必须用哪一个工具经行编辑。程序写好以后就要进行编译了。编译是在linux操作系统环境下的arm5平台交叉进行的。当把编译过程中的错误改完后就可以生成可执行文件了,我们生成的是sofia文件以及可升级的bin文件。由于公司的编译环境早就搭好,所以一直以来我是直接用的,没有考虑到搭建环境这一环节,知道回学校的十天前。在之前的工作中,早已意识到编译环境不简单,因为它要适应各种类型的d

29、sp6芯片,各种类型的开发板,而这些都需要在各种arm平台上才能运行,所以需要在linux系统中或者虚拟机中植入arm平台方可进行gcc7和g+交叉编译。了解了这些后我就跟主管要了一个linux安装包,他给了我一个ubuntu还有dm365的arm平台安装软件包,而主管在给我这些后就不再管我了,我想他是想试试我的个人能力。因为我在跟他反映安装中出现的问题时他对我说这个你自己解决就行了,所以一遇到问题我就只能百度解决了,但是由于百度上面的问题解答有时和我遇到的具体问题不是太接近,所以我只能慢慢搜寻答案,虽然明白编译环境不是那么好搭建,但我仍要一直仔细的寻找,慢慢的找下去,即使缓慢也能接近吧。当我

30、欣喜若狂的自以为配好环境并改变了linux系统的环境变量,我以为我成功了,可是再次开启系统时怎么也打不开,百度才知道是因为有些不必修改的环境变量被修改了,只要改回来就行,可是我用ctrl+alt+f1进入终端,再进入vi /etc/profile改回来也无法启动系统,说到这我要声明一下为什么我安装ubuntu系统而不是安装虚拟机,因为我的系统内存只有2g,而且电脑用了好几年,内部有些零部件开始氧化,已经非常卡了,如果再按虚拟机的话系统可能跑不起来,所以我就安装了ubuntu系统。再一次安装完系统并成功植入arm平台而且改好环境变量后依然是无法编译,我根据终端给出的错误提示适当的修改了makef

31、ile文件,在这还要声明一下,之前在公司为了配合整个公司的研发工作,所有写好的程序都必须放到服务器上固定的目录下,每个人都有一个自己专属的目录,所以makefile文件中的依赖关系中的文件路径都必须写好以方便其他同事使用,也就是说makefile文件编写必须统一。所以我把程序转移到自己的电脑后也需要对makefile文件进行相应的修改。可是明明已经修改对了还是无法通过编译,浪费了两天时间才知道原来我安装的ubuntu是64位操作系统,对我需要的arm不兼容,不过此时我没有浪费时间的失望以及无法解决问题的灰心的感觉,因为我仿佛看到了胜利的曙光。果然在我换好32为操作系统并进行一系列的环境变量配置

32、,arm平台移植后可以进行编译了,尽管还是会遇到细微的编译错误,但这些都是很容易解决的,我只需加一条chmod命令使它对后面所有遇到需要获取权限的文件有效就可以了。终于在连续一周时间内的每天下午7点到夜里12点的这段时间内成功配置好了编译环境,因为白天是要工作的,在公司不允许你干自己的事。说到这可能你会有疑问,既然不允许干自己的事那我毕业设计怎么能在工作时间做的,那是因为我的毕业设计就是我的工作之一,我写好的程序以后工作中会用到,而且这也是领导安排给我的任务。3.2 ipc用到的网络协议传统模拟闭路电视监控系统已经无法客户的需求。ipc重要功能之一是能够实现远程监控。ipc存储数据的网络传输、

33、集中管理功能更是广大客户的喜好。3.2.1 ipc网络协议的应用层协议ipc在应用层的协议8包括http、ftp、rtsp、ddns、adsl、dhcp、pppoe、smtp、dns、qos等等。http:一种超文本传输协议,是基于客户端浏览器以及其他程序与web服务器间的通信协议。端口号:80。错误代码解释:http 400 - 请求无效。http 403 - 禁止访问。http 404 - 无法找到文件。http 405 - 资源被禁止。http 406 - 无法接受。error 501 - 未实现。http 502 - 网关错误。ftp:一种文件传输协议,主机间可以通过输入相互之间的ip

34、地址共享文件。端口:21、20。rtsp:定义:定义了一对多应用程序如何有效地通过ip网络传送多媒体数据。应用:实时流协议是应用级协议,控制实时数据的发送。它提供了一个可扩展框架,使实时数据,如音频与视频,的受控、点播成为可能。数据源包括现场数据与存储在剪辑中数据。ddns:将用户的动态ip地址映射到一个固定的域名解析服务上,用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态ip地址传送给位于服务商主机上的服务器程序,服务项目器程序负责提供dns服务并实现动态域名解析。ddns在监控行业中的应用:目前isp大多为我们提供动态ip(adsl拨号上网),而很多网络视频服务器和网络摄像机

35、通过远程访问时需要一个固定的ip,而固定ip的费用很难让客户接受。所以ddns为大家提出了一种全新的解决方案,它可以捕获用户每次变化的ip,然后将其与域名相对应,这样客户可以通过域名来进行远程监控了。ddns解决方案:1、路由器外挂 。2、集成ddns的监控设备。3、运行ddns客户端软件。adsl非对称数字用户环路,一种非对称的dsl技术,所谓非对称是指用户线的上行速率与下行速率不同,上行速率低,下行速率高,特别适合传输多媒体信息业务,如视频点播、多媒体信息检索和其他交互式业务。dhcp:一个局域网的网络协议,使用udp协议工作,主要有两个用途:给内部网络或网络服务供应商自动分配ip地址给用

36、户给内部网络管理员作为对所有计算机作中央管理的手段。pppoe:可以使以太网的主机通过一个简单的桥接设备连到一个远端的接入集中器上。smtp:是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。dns:在internet上域名与ip地址之间是一对一(或者多对一)。qos:一种安全的网络机制, 可以解决网络延迟和阻塞等问题。3.2.2 ipc网络协议的传输层协议ipc在传输层上的协议主要包括tcp以及udp,我们公司还提供了一种云服务vvnat。tcp是目前传输层上应用相对广泛的协议,因为他的三次握手保证了发送的可靠性安全性,根据接收到的数据量来确定的数据确认数及数据发送、接收

37、完毕后何时撤消联系,并建立虚连接。不容易出现发送丢帧的情况,即使发生了也会有很好地解决措施。udp是直接发送,发送的时候不用向pu(前端,指编码器,包括dvr,dvs,ipc等)或者cu(客户端,指web,sns等)发送请求,qq就采用的这种发送方式,所以qq经常会出现发送的信号丢失的情况,但是udp协议在语音对讲时采用的很多。为了保证实时性所以udp协议在这是必要的。还有我们公司自己提供的vvnat,也称云平台,pu端连接到云平台,cu端通过云平台来访问pu端。之前还有一种访问方式,就是说pu端分配了好多ip地址,这些ip地址用了不同的端口,cu端访问这些端口时通过dns解析将pu端的端口解

38、析成自己能够识别的端口进行访问,之前这两种访问方式是分开进行的,最近正在调试将两种合在一起,把第二种也加进云平台,这样就可以统一在云平台给用户提供服务,这部分代码我已经完成,应用部那边还没改好,需要与他们联合调试,所以一直未能进行,这项工作我想会在毕业以后回单位再跟他们合作完成吧。3.3 ipc所用到的硬件技术目前dvr以及ipc的平台厂商主要有:大陆海思半导体(hisilicon)、德州仪器(ti)、台湾智源(faraday)、以及其他的一些方案等等。但dvr硬件的组成不尽相同,dvr方案设计中的硬件大致有一下几个部分组成:1.处理器。2.内存3.flash4.前端视频编解码(ad)5.后端

39、视频解码(da)6.存储相关硬件7.其他外围8.电源部分。1.处理器:控制完成取出指令和执行指令任务的部件,它是系统的核心部件.我所了解的ipc方案中应用的中央处理器采用的芯片是hi3515,ti (dm365) gm8181等。hi3516集成高性能的arm cortex a9 作为主控cpu,完成系统任务和部分音视频处理功能。其主要规格如下: 集成32kb l1 指令cache 和32kb l1 数据cache,集成256kb l2 cache,集成vfp, 功能最高频率800mhz,处理能力可达2000dmips。2.内存:连接cpu 和其他设备的通道,用来存储cpu处理的临时数据和程序

40、指令,起到缓冲和数据交换作用。内存的性能指标:存储容量,存储速度,存储的可靠性,性能价格比。内存的现状:内存技术发展主要侧重于提高速度和扩充容量,围绕这个主题,目前已经诞生了多种新技术,比较有代表性的有:ddr sdram、sldram以及rdram家族的concurrent rdram和direct rdram。3. flash:闪存是一种无挥发性( non-volatile )内存,在没有电流供应的条件下也能够长久地保持数据,其存储特性相当于硬盘,这项特性正是闪存得以成为各类便携型数字设备的存储介质的基础。在dvr中flash主要放置程序和资源。4. 前端视频编解码(ad):前端视频解码芯

41、片简称前端ad,目前有techwell ,nextchip,richnex,以及台湾的一些ad厂家。采集前端摄像头的信号,加以一定的处理,转换为后面的视频编码芯片所能接收的数据格式。5. 后端视频解码(da):这里描述的视频解码模块主要是解码芯片及其外围,如vga输出,如早期我们公司使用的hi3120和nvp5000 。转化为目前主流的一下些视频输出信号,供外部显示。6. 存储相关硬件:目前嵌入式dvr的存储介质主要是硬盘,刻录光驱,usb存储7. 设备等。pci-sata的协议转换的芯片,内部集成的sata接口。8. 其他外围:rtc,报警输入输出,usb,前面板。9. 电源部分:电源部分比

42、较复杂,在此不必列出。 第4章 ipc的详细设计实现4.1 整个系统的详细设计整个系统的详细设计也就是工作流程详细设计,主要可以划分为以下几个部分,pu与cu进行交互成功后,除了有需要返回的数据外,还带有一个返回码,具体见返回码定义表,无特别说明,控制流都是通过主socket进行通信。由于整个工作流程很复杂,过程也很多,所以这项工作是团队分工的,我负责的是登录过程、监视控制流程、回放控制流程和语音对讲流程。剩下的都是小组其他成员负责完成的,最终代码有小组组长整合微调并上传。内部成员对其他人的代码相互之间也会有一定的了解,有时也会互相帮忙,所以,虽然我只负责了几个功能的实现,但是其他功能也是相对

43、熟悉一些的,比如文件查询流程、日志管理流程等等。下面就以我做的几个功能作一下详细的介绍。4.2 登录登出保活流程4.2.1 普通登录如图4.2.1所示 图4.2.1 普通登录建立主socket连接,用于控制流传输。发送登录请求,请求中包含用户名、密码、加密方式、登录类型。验证用户成功,返回sid、通道个数、设备类型。代码部分的流程:start启动线程,connectcallback()连接回调函数建立主连接,将传入的连接加入insertconnect()中。reccallback()返回回调函数,通过getconnect()不断地获取连接,用addref()计数将获取到的连接通过adddata

44、()再由processmsg()进行数据分析、处理,不断地对主连接进行保活操作,筛选之后加入oprmsg()中处理,最后调用coplogin:coplogin()函数进行登录的一系列操作。4.2.2 主动注册登录普通登录是由cu(比如ie端)向pu(比如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

45、 登出4.2.4 保活4.3 监视控制流程4.3.1 普通监视控制通过之前的登录已经建立好了主socket连接,也就是说视频监视的前面的过程和普通登录里的过程是一样的。所以这里在原来的基础上再次建立socket连接,也就是建立新的套接字,用于传输视频数据。通过新建的套接字发送认领请求,认领成功后返回成功标志,在新建套接字的认领之后要开始监视,则在主连接上发起一个打开监视的命令,而这个命令的执行需要传递给对应的子连接去处理,所以暂时保存主连接收到的信息以使它们可以快速的定位到子连接中去。监视请求中包括动作、通道、码流类型。监权成功后返回成功标志,返回主连接。通过新建套接字开始传输视频数据,包序号

46、1,2,3.数据发送完毕或者cu端请求关闭监视,返回应答并停止发送视频数据,最后关闭新建的套接字。这就是普通监视控制的全过程,由于这里有两个连接,也就是两个socket,所以主连接我用的是主socket,子连接我用的是套接字这个词,以方便读者阅读。4.3.2主动注册监视控制类似与普通登录与主动注册登录的关系,普通监视控制与主动注册监视控制也是由pu端去主动连接cu端的。cu通过主socket发送主动注册监视请求,请求中包含通道号,码流类型。pu鉴权返回成功。pu与cu建立套接字用于媒体数据传输。pu通过新建的套接字发送认领请求,请求中包含通道号,码流类型,消息头的sid字段,为cu的sid号。

47、cu请求视频监视,请求中包含通道,码流类型,pu通过这个识别对应的媒体数据发送socket。pu鉴权成功后,返回ok ,并开启捕获模块,开始视频数据发送,视频数据的包序号从1开始递增。cu请求关闭视频监视,请求中包含通道,码流类型,停止捕获模块,停止视频数据发送, pu返回应答信息,关闭对应媒体数据发送socket。4.4 回放控制流程4.4.1 普通回放控制前面的主socket仍然是普通登录里建立的。新建socket用于传输视频数据,通过新建套接字发送认领请求,认领成功返回成功标志;通过主socket请求回放,回放包括动作、文件名、开始时间、结束时间。监权成功后找到文件,返回成功标志;之后开

48、始传输视频数据,包序号为1,2,3.请求暂停(动作,文件名);暂停成功后返回成功标志;请求继续回放(动作,文件名)继续回放成功,返回成功标志;请求定位回放(动作,文件名,开始时间,结束时间)定位回放成功后返回标志;请求停止回放,停止回放成功后返回标志;请求关闭,关闭成功返回标志,关闭视频数据套接字;文件回放结束后pu会在媒体数据包的包头endflag字段设置为1,停止数据发送,发送eof通知cu关闭socket。4.4.2 主动注册回放控制由pu端主动连接cu端,其他过程与上面的回放过程类似。4.5 语音对讲流程4.5.1 普通语音对讲前面的普通登录建立好主连接后,cu与pu建立新套接字用于对

49、讲数据传输。cu通过新建套接字发送认领请求,请求中包含通道号(目前只支持一路对讲,通道号为0),未登陆的主连接必需要先认领,否则其上的操作一概不理认领后就变成子连接了。消息头的sid字段是cu的sid号,子连接认领成功后,cu通过主socket请求语音对讲,命令只针对子连接有效主连接需要转发此命令给子连接,如果是主链接的话, 转给子连接继续处理,请求中包含通道号(目前只支持一路对讲,通道号为0)。同时只支持一个cu与pu进行语音对讲,如果已经与其他cu开启了语音对讲,返回已经开始对讲错误码。命令的应答还是从主连接上走的。pu鉴权成功后,pu开启捕获模块,开始语音数据发送,语音数据的包序号从1开

50、始递增,同时cu也开始语音数据发送,语音数据的包序号从1开始递增。cu请求关闭语音对讲,请求中包含通道号,pu停止捕获模块,停止语音数据发送, pu返回应答信息,关闭新建socket,cu收到应答信息后,停止向pu发送语音数据,关闭新建socket。4.5.2 主动注册语音对讲这一部分不是由我完成的,所以这里不作过多说明,而且过程与上面的相似。4.6 云台控制流程云台控制这一块虽然不是由我完成,但是完成该部分的人出差去了海外,所以这一块暂时也交给我负责,主要是维护,防止出现bug,另外还有之前提到,pu连接到云平台,cu通过云平台访问pu端;cu直接通过dns解析将pu端的端口解析成自己能够识

51、别的端口号。现在打算把这两个功能全放到云台控制中去。这一过程也是由我负责的,所以在此有必要说一下云台控制流程。在代码中是用vvnat代表的云平台。首先初始化云服务状态机的驱动,如果有启动则关闭启动,如果服务器上有客户端则踢出,释放服务器资源,这里面用到了一种单件模式,就是说在整个过程中只调用一次并返回值。因为单件模式的函数在整个过程中只满足它的条件一次,所以只需调用一次。nat状态转换图。0状态:dns探测校验ip地址的有效性,校验成功后就进入状态1。因为进入该状态的前状态可能是2也可能是1,两者通过是否清s_natserverip来区分,以保证s_natserverip的正确,因为如果从2=

52、0则使用老的地址再尝试一次。1状态:连接服务器,第一次初始化,如果服务器为空则在服务器端创建socket并分配空间,这时候就开启服务器了。测试连接状态:获取nat穿越的服务器的连接状态,连接成功就进入状态2,如果3分钟内还没有连接就进入状态0;重新探测dns,释放资源,提出该服务器上的所有客户端,释放服务器资源。2状态:(日常信息维护)测试连接状态,连接断开时进入状态0,连接服务器。此处不释放m_pservernat_objid以使再次dns探测成功之后先用上次的ip地址继续尝试。第5章 ipc的系统功能测试整个ipc的功能实现后我们并开始了一系列的测试,在测试的过程的遇到了一些功能没有实现的

53、模块,还有一些功能虽然实现了但是没有达到预期的效果,小组的各成员都存在着一定的功能实现问题,这其实是正常的情况,因为在编写代码的时候不能结合设备进行实时测试,而这也是不科学的,效率太低,所以一般是等代码部分全部完成并组合起来联合调试。调试时我们只是做一下初步测试,发现没有什么明显的bug就算是通过了,然后就把编译生成的可执行文件交给测试部,测试过程是由测试部完成的,他们发现问题并反馈给相应的代码负责人,代码负责人首先在开发板上复现问题,然后判断是哪一过程的问题,接着查看这一部分的代码并试着优化代码,最终解决问题。下面我就按照测试部反馈给我的问题的时间顺序作一下详细说明。5.1 视频回放过程中的

54、声音卡顿视频回放过程中有时候声音会一顿一顿的,就是平时所说的卡。这是最新开发的程序中出现的问题,因此我参考了之前的可执行文件的效果。刚开始的时候我录了我手机里的几首歌,发现大部分声音还是正常的,只是放到那几首歌时会出现卡的情况,经研究发现我手机里的音乐竟然分成十几种不同的码率,也就是bps,举个例子,有一首歌是192bps,192比特每秒,就是说每秒传送192位。起初我判断的是声音卡顿跟声音的比特率有关,但是主管说所有的声音(mp3,wma之类)在pu端都已经转化成g711格式的声音,就是所说的网络传输中的公用的格式,码率是72bps,所以我之前得到的结论就这样被推翻了。接着我就做出假设,声音

55、卡顿的问题可能和传送的资源、转换为g711格式时是否有丢帧、发送速度过慢、网络延时、刷新网络状态慢、速度控制、网络休眠时间等有关,于是又开始了大量的调节测试。最后发现不可能是丢帧,因为丢帧的话根本不会发送出去,还有就是发送速度只要够快,客户端可以把接收到的数据暂时储存起来,当存储空间满了可以返回一个命令使pu端暂时停止发送数据,也就是说只要数据发送及时就不会出现声音卡顿问题。经过一连串的排查,花了我两天多的时间最终发现问题可能在网络休眠时间那块。图像是每秒钟发送25帧,声音跟图像一样,所以每40ms发一次是最佳状态,超过40ms会卡,低于40ms客户端可能会存在存储问题,所以40ms是最佳的。

56、代码里采用的休眠时间只是一个估计值,用的是默认的20ms,再加上两次调用函数的时间差值,差不多是40ms,当时间差高于20ms时就会出现卡顿,因为总时间超过了40ms,所以我就试着修改了这部分的代码。我把每次发送的间隔时间固定在40ms,休眠时间设置成40ms减去两次两次调用函数的时间差。至此,读者可能会问如果两次调用函数的时间超过40ms出现了负值怎么办,不是还会卡吗?这点我也考虑过,但是我们的开发板采用的是高性能的dsp芯片,而可执行文件的运行环境是linux操作系统,他的处理速度是相当快的,而我们的函数执行速度也是很快的,所以不会出现两次调用的时间差超过40ms的情况。修改完后再测试发现

57、效果很好,测试部的详细测试后也没再反映问题。所以这一次的修改bug过程算是完成了,也是自己的一次初次尝试,通过这次的修改bug过程我大致有了修改bug的方向,这为之后修改bug的时候提供了经验也节省了时间。但是由于才改了几次bug,所以还是不太熟练,等以后熟练了我会把经验总结一下以供之后的人参考。5.2 属性修改问题登录ipc之后新增用户改变部分属性后不能重启设备。这个bug同样是由测试部反馈给我们的,为此,我特意申请了一个ipc,在ie端的新增用户组里添加了新的用户,并用新用户重新登录,登陆之后改变了ipc的部分属性,我选择的是改变制式,一般情况下,系统默认的用户admin在改变属性后有一个重启提示,确认后ipc将重新启动,但是新增用户在改变属性后却无法重启,而且就连用户在刚建立时属性都选择不了,全是系统默认的属性,这样明显是无法适应用户的使用的,所以我就开始找相应部分的代码。在这我要声明一下,这次的毕业设计中我用到了很多在大学里面从来没接触过的函数,很多功能也只是了解一些却无法熟练使用,比如memset()、memcpy()、json()之类,所以我是边学习这些函数的使用方法边写代码的,而且很多头文件以及接口函数都是公司库里面的,这么说吧,有些函数我只看

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论