APP下载

网络摄像机软件架构的研究与设计

2012-08-10黄言磊叶光明

电视技术 2012年23期
关键词:应用层信令线程

黄言磊,叶光明

(武汉邮电科学研究院,湖北 武汉 430074)

责任编辑:任健男

1 视频监控PU统一平台总体架构简介

由于嵌入式操作系统具有低功耗、集成度高、可裁剪等优点,现在嵌入式设备已经越来越多地应用于各个领域。软件架构设计是嵌入式设备的软件设计过程中一个很重要的环节。但不同嵌入式操作产品的软件架构在实现中存在内存泄露、堆栈溢出、竞争条件、死锁、时序问题、可重入条件等各种问题,造成了嵌入式软件开发效率低、周期长,并且影响产品的性能和市场竞争力。

为了很好地解决上述问题,本文提出了一种面向嵌入式应用的新的软件架构解决方案——视频监控PU统一平台总体架构。其架构如图1所示,分为OS适配层、应用层、协议层、硬件适配层。其中OS适配层、协议层、应用层定义为平台软件,平台软件设计要求适应所有类型的前端设备,设备间的差别通过配置文件进行开支[1-3]。硬件适配层定义为产品支持库,该层提供统一的接口与平台软件交互,对于不同的设备类型需开发相应的硬件适配层。

2 OS适配层

图1 视频监控PU统一平台总体架构图

OS适配层(Operation-System Adaptation Layer)定义系统公用的统一接口函数,包括网络通信接口(TCP/UDP)、系统服务接口(定时器、内存管理、线程/进程管理、消息、信号量)、文件I/O接口(录像文件、配置文件)、配置文件接口、系统日志、系统维护。

OS适配层的目的是当需要将代码移植到其他操作系统时,只需要修改该层的内容。

2.1 系统服务接口

1)定时器

在进程执行的期间需要对进程的执行时间加以控制,从而控制进程的执行过程,这需要使用定时器或信号。定时器就像闹钟,可以设置一个时间,进程运行到规定的时间,“闹钟”就会触发,而进程就可以被触发去做一个特定的工作。

2)内存管理

内存池(Memory Pool)是一种内存分配方式。使用new、malloc等API申请分配内存会造成大量的内存碎片并进而降低性能。内存池则是在真正使用内存之前,先申请分配一定数量的、大小相等的内存块留作备用。当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不够再继续申请新的内存。这样可以避免内存碎片,使得内存分配效率得到提升。

3)线程/进程管理

Linux是用线程来实现多任务并发的系统。进程可以共享大多数系统资源,同时拥有足够分享的上下文维护各自的控制线程。因此一个线程的数据可以直接为其他线程所用,线程间通信也方便快捷。线程/进程管理包括初始化线程、建一个线程、分离一个线程、终止线程、线程同步。本架构中的所有任务进程都是基于实时传输控制协议(RSTP)通信机制与其他相关进程通信。

4)消息

消息队列是Linux下进程间通信的一种方式,一般用于传送少量数据,如果大量数据需要在进程间共享,则可以用共享内存。使用一般过程如下:(1)调用ftok接口产生一个key;(2)调用msgget(使用key作为参数)产生一个队列;(3)进程可以用msgsnd发送消息到这个队列,相应的别的进程用msgrcv读取;(4)删除消息队列。

5)信号量

信号量是提供任务间通信、同步和互斥的主要手段。适用于保护多份复制的资源。

2.2 录像文件接口

录像文件接口支持前端录像、平台录像、录像查询、录像回放、录像下载[4]。

2.3 数据库接口

使用开源的SQLite数据实现录像、图片的信息的管理。SQLite数据库是专门为嵌入式系统设计的,与MySQL数据库相比,具有占用内存小的优点。

2.4 配置文件接口

在多用户、多任务环境中,配置文件控制用户权限、系统应用程序、守护进程、服务和其他管理任务。这些任务包括管理用户账号、分配磁盘配额、管理电子邮件和新闻组,以及配置内核参数。

2.5 系统日志

在本系统中,所有的文件系统的变化、添加和改变都被记录到“日志”中。每隔一定时间,文件系统会将更新后的文件及文件内容写入磁盘,之后删除这部分日志。重新开始新日志记录。日志文件系统能够详细记录系统每天发生的各种各样的事件,使数据、文件变得安全。

2.6 系统维护

系统维护模块实现对系统应用任务的活动状态监控,所有被监控的任务通过定时发送活动消息到系统维护模块以表示其活动状态,如果在设定的时间内没有收到应用任务的活动状态将启动维护方式,包括重新启动系统。

3 应用层(Application Layer)

应用层实现系统应用业务流程。包括业务应用(简称Cmd)、媒体传输(简称Media)、设备管理(简称Mg,实现告警输入输出相关功能)、存储(简称Record)、User Interface模块(简称Ui)、网管模块(简称Nm)等模块。应用层应达成如下目的:考虑不同的平台接入需求,可方便扩展支持接入其他的平台。

应用层功能软件的运行由多个任务进程完成,由一个总的控制进程管理所有的进程,它负责监控所有任务进程的状态,同时由于每个进程都具有初始态、挂起态、运行态和终止态等4种基本状态,总控制进程通过发送消息命令控制这4种状态之间的切换。这种机制的优点在于只要定义好任务接口,各个任务进程模块就可以被当作独立软件模块来操作实现。很明显,嵌入式系统应用层这一级的开发提高了代码的复用度。

应用层的业务交互如图2所示。

视频监控平台(包括其他厂家平台)通过Cmd模块实现信令交互。媒体处理信令通过调用Media模块接口进行。存储抓拍信令通过调用Record模块接口进行。其他信令(包括参数配置等)直接调用Mg模块接口。

Web客户端通过Nm模块实现对设备的访问。Nm模块中,对于设备的操作统一通过Mg模块实现。对于媒体流,Nm模块需要与Media的媒体控制子模块进行交互。

对于车载、单兵等具有本地显示的设备,通过Ui实现对设备的访问。Ui模块中,对于设备的操作统一通过Nm模块实现。

图2 应用层的业务交互示意图

3.1 业务应用模块

业务应用模块实现与平台之间的信令交互处理流程。实现要求如下:接收并处理来自平台的SIP信令;媒体传输信令调用媒体传输模块接口函数;告警处理信令调用告警处理模块接口函数。

业务交互模块分为信令交互子模块和信令处理子模块。信令交互子模块实现信令的接收、分发和发送等功能。信令处理子模块实现对信令的处理流程。

3.2 媒体传输模块

媒体传输模块实现设备与平台之间的媒体传输,包括视频传输、音频传输,支持UDP传输和TCP传输。模块分两部分,一部分mediaControl用于媒体控制,主要是指对设备通道资源的控制,编码器开启关闭,通道占用与释放的工作都在这个文件中进行处理;另一部分为mediaTrans,用于媒体传输部分,专门负责媒体数据的传输,现支持TCP与UDP传输。将媒体模块分为两部分的好处在于以后如果需要接入其他平台,只需修改mediaTrans模块的传输协议部分,mediaControl部分可以不用修改,直接调用。

3.3 存储模块

存储模块分为录像存储子模块、抓拍子模块和录像回放子模块。

录像存储子模块录像文件的类型分为三种,即定时录像、报警录像和手动录像。定时录像又分为每天模式和每周模式,不管什么模式,每天最多有3个定时录像的时间段,且每个录像的时间段是不能重叠的,也不能跨天。报警录像可能包括报警预录和延迟录像,其中报警预录是可选的,且预录的时间不超过30 s。

录像模块主要由以下子模块组成:1)定时器。该定时器的定时精度为1 s,用于检测周期录像的开始和结束时间,同时维护录像控制中的相对时间。2)录像线程。从预录队列中取视频数据,然后保存到存储设备。3)缓冲队列。编码库出的视频数据,加上存储帧头以后,存于缓冲队列中。为了避免出现内存碎片,同时兼顾每个节点的访问速率,缓冲队列应采用大内存管理机制。根据视频的最大码率及预录的时间,一次性分配所有的内存空间。缓冲队列采用数组的形式,节点空间的分配和回收都由大内存管理模块进行。

录像文件的命名规则为:PUID_通道号_录像类型_录像开始时间.后缀。录像名共43 byte,每个域所占的字节数如表1所示,对应的格式如表2所示。例如:420000000267908936_01_01_20111105160000.264。

表1 录像命名规则中每个域的详细信息表

表2 录像命名规则中每个域的格式表

抓拍子模块的规则与录像规则类似。

4 协议层(Protocol Layer)

协议层实现与PU相关的网络协议,包括SIP,RTP,RTCP,RTSP,SOAP,HTTP 等。

5 硬件适配层(Hardware Adaptation Layer)

硬件适配层的目的是当系统需要支持不同的硬件方案时,只需要修改硬件适配层的内容。该层包括看门狗、串口、CODEC、告警、设备配置、云台控制等模块。采用嵌入式DSP处理器用于计算离散时间信号,在图像处理方面上有很高的编译效率和执行速度。该层位于架构的最底层,它封装了硬件的各种功能行为,包括硬件初始化、中断的产生和处理、硬件看门狗启动、硬件时钟管理,提供了对各种开发板的硬件功能操作的统一软件接口,这是保证操作系统可移植性的关键。

6 总结

本文提出的这种新的软件架构方案,具有较好的容错能力、可重用性、安全性、扩展性、可管理性。当某一层需要调整时,可以不对其他层面进行任何修改,从而降低了整个设计系统之间的依赖性。同时它能够让设计开发人员在编码分工变得更加明确更加优化,只要做好各个层次的接口定义即可,缩小了工作冗余量,提高了研发人员的效率。通过研究和项目实践证实了这种方案可被很好地用于中兴力维接入平台。

[1]梅大成,杨大千,赵娜.基于Linux的嵌入式网络摄像机设计[J].微计算机信息,2007(23):45-47.

[2]劲松.基于TMS320DM355的高清网络摄像机的设计与实现[D].南京:南京邮电大学,2009.

[3]汤凯,刘峰.基于TMS320DM355的网络高清视频监控系统的设计与实现[J].电视技术,2009,33(12):98-101.

[4]吴海龙,孙运强.网络摄像机监控系统的应用研究[D].太原:中北大学,2010.

猜你喜欢

应用层信令线程
SLS字段在七号信令中的运用
移动信令在交通大数据分析中的应用探索
基于信令分析的TD-LTE无线网络应用研究
浅谈linux多线程协作
基于分级保护的OA系统应用层访问控制研究
LTE网络信令采集数据的分析及探讨
新一代双向互动电力线通信技术的应用层协议研究
物联网技术在信息机房制冷系统中的应用
Current advances in neurotrauma research: diagnosis, neuroprotection, and neurorepair
Linux线程实现技术研究