基于3G无线网络的视频监控系统前端设计
扫描二维码
随时随地手机看文章
摘要:介绍了一种以ARM926-EJS微处理器为主控制器、Linux为操作系统、WCDMA网络为传输网络的视频监控系统前端。给出了视频监控系统前端的硬件设计、软件设计。重点介绍了视频采集、压缩编码、无线发送过程。将视频监控系统前端输出的H.264视频流封装成大小合适的RTP数据包,然后通过IEEE 802.11g无线传输模块发送到3G传输网络。经实验证明,该系统具有较好的实时性和可靠性,在抢险救灾等领域得到了较广泛的应用。
关键词:监控前端;H.264编码;RTP/RTCP协议;ARM;Linux
0 引言
随着社会的不断发展和进步,人们日常生活中安全问题得到越来越高的重视。视频监控作为安全防范系统的重要组成部分,使得人们可以远距离的观察和调度被控区域的能力,以其直观、准确、及时和信息内容丰富等优势广泛应用于现代化小区、交通、运输、消防等领域。随着科学技术的不断进步和人们对监控系统要求的不断提高,监控系统也经历了从模拟监控时代到数字化网络监控时代的飞速发展变化。基于国内已经投入商业运营的3G网络的无线视频监控系统具有强大的无线网络传输功能,能够克服由于地理位置、布线成本和远距离监控等带来的问题。相对于有限传输,无线传输模式具有安装方便、灵活性强、性价比高等特性,诸多优势使得无线监控系统成为如今视频监控领域新的发展方向。
基于这一发展方向,ARM微处理器具有体积小、功耗低、成本低、性能高等优点,Linux操作系统具有开放源码、可裁剪、易操作等优点。无线视频监控系统前端采用ARM926-EJS微处理器和Linux操作系统,通过无线发射模块把采集、压缩编码好的视频流发送到3G无线网络过程中。本文重点阐述对视频信号的采集、压缩编码、发送过程。
1 视频监控系统前端硬件设计
无线视频监控系统前端,主要完成现场视频的采集、压缩编码、发送。系统硬件平台主要由嵌入式微处理器ARM926-EJS,NAND FLASH,DDR2、TVP5150视频输入、CH7024视频输出、网口LAN8700、LC6311无线发射模块等组成。ARM926-EJS处理器具有EMMA支持强大的视频处理控制,亮度、饱和度、对比度、自动白平衡等参数可调。允许使用全功能操作系统,功耗低、时钟频率为400MHz。所以选择ARM926-EJS为核心微处理器。存储器包括RAM和ROM两部分,RAM采用高速SDRAMHYB18M1G320BF-7.5对处理视频数据有非常好的优势,ROM采用非线性K9F2G08ROA -JIBO NANDFLASH芯片,其存储容量高于线性结构的NORFLASH。TVP5150具有超低功耗、支持NTSC/PAL/SECAM等格式的高性能视频解码器,通过ARM926EJS对TVP5150进行控制使得对视频信号进行A/D解码,达到对视频采集的目的。ARM926-EJS输出的数字视频信号通过CH7024进行D/A解码转换成PAL制式的模拟信号。基于IEEE 802.11b/g协议无线传输模块SIM5218,通过USB与ARM926-EJS进行连接。无线视频监控系统前端硬件原理图如图1所示。
2 视频监控系统前端软件设计
无线视频监控系统前端在设计中以嵌入式Linux操作系统为核心,Linux作为一种开源的操作系统,内核可裁剪,支持多种硬件平台和较强的网络功能。Linux操作系统软件由以下几部分组成:BootLoader、Linux内核、文件系统、应用程序。其中应用程序有视频采集程序、视频压缩编码程序、视频信号发送程序。
2.1 视频采集模块
Video4Linux是Linux中关于视频设备的内核驱动,它为针对视频设备的应用程序编程提供一系列接口函数,通过使用接口提供的函数库,对摄像头进行图像采集。主要通过以下步骤对视频图像进行采集:
(1)用open函数打开视频设备,可以获得相应的文件描述符;
(2)获取视频设备属性,包括名称、类型、通道数、图像宽度、图像高度等;
(3)通过ioctl函数返回采集图像帧的属性,包括图像亮度、色彩、对比度等;
(4)视频的截取有两种方法:第一种是用read()直接读取数据,第二种是用mmap把设备文件映射到内存,用内存映射法的优点是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝,结合以上优点,选择此方法。视频采集流程图如图2所示。
2.2 视频压缩编码模块
采用ARM926-EJS内置的VPU单元硬件编码模块完成H.264压缩编码。H.264采用了基于块的动补偿和编码,同时它还采用一系列新的技术,包括:运动矢量具有亚像素精度,对于亮度信号来说可以达到1/4像素精度;运动补偿使用了块大小可以改变的运动补偿;允许使用多个参考帧;帧内编码使用帧内预测;自适应环路滤波;自适应于内容的算术编码和变长编码等,这些新技术的采用大大提升了视频的压缩率。编码过程如图3所示。
NAL为分层结构,经过VCL编码后的视频数据被组成NAL单元,一组NAL单元组成一个接入单元,一组接入单元组成一个视频序列,再根据不同应用,对视频序列进行处理。图4为流结构的NAL分层示意图。
每个NAL单元由整数个字节大小的包构成,其中第一个字节包含数据类型的标志,其他字节是净荷。NAL单元被划分为VCL NAL单元和非VCL NAL单元两种。VCL NAL单元包含视频图片中采集点的值的表示;非VCL NAL单元包含一切相关的附加信息,例如参数设置(可被应用到大量VCL NAL单元的头数据)和附加的增强信息(时刻信息和其他附加数据,这些数据可能会增强对已解码视频信号的利用,但是又不是在解码视频图像的采样点值必须用到的)。视频压缩编码的工作流程如图5所示。
2.3 视频信号发送模块
由于TCP协议丢包重传造成巨大时延,UDP虽然传输速度比TCP快,但UDP是一种不可靠的传输协议。所以在应用层采用RTP作为实时传输协议。
RTP本身只保证实时数据的传输,不能为按顺序传送数据包提供可靠的传送机制,也不能提供流量控制或拥塞控制。它需要依靠RTCP协议提供周期性的反馈与信道参数有关的信息,动态地改变传输速率,使发送速率适应信道带宽,减少信道中的丢包,从而实现媒体同步、丢包统计、传输检测和传输复用等手段。从而使得视频流高效、快速地传输。
RTP协议的实现采用开源的RTP库JRTPLIB。用户只需通过使用JRTPLIB库相应地发送和接收RTP数据包,而不用关心RTCP数据报是如何被发送和接收的,JRTPLIB自动对到达的RTCP数据报进行处理,并在适当的时候发送RTCP数据报。采用H.264视频流的RTP打包方式对单独的NAL单元进行操作。通过ARM926-EJS内置的硬件编码单元应用程序中H.264视频编码的参数设置,每帧为一个NAL单元。为了避免视频数据在网络层被分割,需要将一帧H.264视频数据分割成一定大小的RTP数据包,由发送端分别封装上RTP报头、UDP报头、IP报头,按照RTP数据包的格式,并配置RTP报头的时间戳以及序列号等参数,最后形成IP数据包,通过无线模块发送。ARM926-EJS内置的硬件编码模块所输出的H.264视频流的RTP封装及传输流程如图6所示。
3 结语
采用ARM926-EJS为微处理器的视频监控系统前端具有功耗低、速度快的特点,同时结合Linux的Video4Linux视频接口技术和内置硬件H.264视频编码和RTP/RTCP传输协议,实现了快速视频采集和传输。实验证明,采用内置硬件编码单元的ARM926-EJS微处理器和嵌入式Linux操作系统,使视频监控系统前端的视频画面清晰流畅,其性能优越、稳定而且构建成本低。该视频监控系统前端在森林火灾场合具有广阔的应用前景。