梁伯虎?夏颖?张劲松
摘要:在打击违法犯罪、维护社会公共安全、促进社会和谐稳定方面,视频监控系统起到了至关重要的作用。因此,设计了一种基于Linux平台的无线网络视频监控系统。系统采用V4L2架构对摄像头进行图像采集,移植x264编码器对采集的图像进行编码压缩,使用Live555框架对编码数据进行流化处理,最后通过RTSP实时流传输协议将视频流发送出去。监控端需要安装特定的软件,用来接收和解码视频流,这样就可以监测摄像头采集的图像。整个系统实现了无线网络视频监控的基本功能。
关键词:无线网络视频监控;V4L2;x264;Live555
一、前言
随着人们生活质量的不断提高,人身和财产安全变成了大众关注的焦点。视频监控系统也随之出现在人们能接触到的方方面面,比如出现在十字街口,为了确保交通安全;出现在学校,为了防止校园霸凌;出现在居民社区,为了维护社会公共安全[1]。因此,视频监控系统在促进社会和谐稳定和打击违法犯罪等方面发挥着不可替代的保障作用,它的地位也越来越重要,人们对它的需求也越来越高。针对这个趋势,本文设计了一种基于Linux平台的无线网络视频监控系统。系统采用V4L2架构对摄像头进行图像采集,移植x264编码器对采集的图像进行编码压缩,使用Live555框架对编码数据进行流化处理,最后通过RTSP实时流传输协议将视频流发送出去。监控端需要安装特定的软件,用来接收和解码视频流,这样就可以监测摄像头采集的图像。基本实现了无线网络视频监控的功能。
二、系统总体设计方案
系统总体设计方案包括无线网络视频监控系统的硬件设计和无线网络视频监控系统的软件设计,如图1。
对于硬件部分:主控芯片是系统的核心,控制着各个电路模块的正常运转。所以,主控芯片的选择决定着系统的性能指标。本文采用北京君正公司的X1000型号芯片,它的工作主频相对较高,功耗相对较低,同时还拥有丰富的总线接口,比较适合系统的使用。首先搭建以主控芯片为主,电源、时钟、复位和调试等基本电路模块为辅的最小系统。最小系统的成功建立可以确保硬件平台运行的稳定。然后根据系统的需要,添加摄像头电路,负责图像采集功能。
对于软件部分:本文采用Linux系统软件开发平台。它的可移植性和扩展性都相对较好,如果后续有硬件电路的更新,软件修改的代码量相对较小。电脑端需要安装Linux操作系统,提供交叉编译环境。硬件开发板采用u-boot-2016.09(系统引导加载程序)和kernel-4.4.93(系统内核框架)的代码版本。将u-boot和kernel的代码,根据主控芯片的性能指标进行移植和裁剪。经过充分的调试,确保硬件开发板可以稳定的运行。图像采集端使用V4L2架构,负责采集摄像头的图像数据。图像数据首先被送到x264编码器进行编码压缩,然后被送到Live555模块进行流化处理,最后经过RTSP实时流传输协议,通过WIFI模块将视频流发送出去,完成系统中数据流从采集、处理到发送的全过程。监控端通过安装内置RTSP协议的软件,就可以监测摄像头采集到的图像。
三、硬件设计
(一)主控芯片
本文主控芯片采用北京君正公司的X1000型号处理器。它的工作主频在1GHz,可以使软件模块将视频数据处理得相对较快,为视频实时传输提供硬件基础;它内置有低功耗内存,避免内存电路的设计,可以极大缩短系统的研发时间和成本;它的功耗小于200mW,通过电源电路的设计,可以实现用锂电池供电,拓展了使用范围;它还具有丰富的总线接口,可以扩展摄像头电路、Wi-Fi电路和存储等其他电路。
(二)摄像头电路
本文摄像头采用Omni Vision公司的OV9712模组,如图2。它是1/4英寸CMOS图像传感器,分辨率是1280×800,每秒钟可以采集30帧图像,有曝光控制、白平衡和缺陷像素消除等功能[2]。它的性能指标比较适合在无线网络视频监控系统中使用。
按图2电路图连接好。根据上电时序,依次将VDD_IO(I/O电源),VDD_A(模拟电源),VDD_D(数字电源)和PWDN(电源开关)给电,软件通过SIOC和SIOD(i2c总线接口)设置采集图像的分辨率,对比度和白平衡等相关参数,同时给输入时钟MCLK合适的工作频率,测量输出时钟PCLK,行时钟同步信号HREF和帧时钟同步信号VSYNC波形是否正确。最后,用V4L2模块将D0-D7的8位图像数据读取,并且保存成文件,通过专门显示原始图像的软件打开,验证是否是摄像头拍摄的图像,同时作为系统的原始数据。
(三)WIFI电路
本文Wi-Fi采用正点原子公司的ATK-MW8266D模块,如图3。它的传输速率是54Mbps,为视频实时传输提供硬件基础。
按图3电路图,将电源VDD,地GND,重启RST,数据接收RXD和数据发送TXD与主控芯片连接好。通过电源电路给VDD提供3.3V电压,WIFI模块就可以正常工作。产商将WIFI相关操作封装成AT命令,方便使用。只需要根据AT文档提供的相关指令,就可以实现WIFI模块的基本功能,比如配置网络参数,收发数据等。配置成功后,可以在监控端安装网络封包分析软件Wireshark,验证来自图像采集端发送数据的正确性。为视频数据的正确传输,提供硬件基础。
(四)存储电路
本文存储芯片采用Giga Device公司的GD25LQ128C型号芯片,它是SPI串行总线接口的闪存芯片,如图4。它的引脚数相对较少,仅有8个,简化了电路的设计;芯片尺寸相对较小,减少了存储电路的面积,在一定程度上,节约了研发成本。芯片支持四线的QPI收发模式,传输速率在240Mbit/s,为视频实时传输提供硬件基础。
将存储芯片与主控芯片按图4电路图连接好。通过电源电路给VDD提供1.8V电压,时钟电路给CLK提供合适的工作时钟,以及CS片选信号配置好,存储芯片就可以正常工作。通过使用标准的数据读写和擦除指令,就可以在输入和输出接口引脚,进行数据的传输。利用存储芯片的烧写器将芯片里的数据读取出来,和软件编程写入的数据进行对比,验证软件对存储芯片数据读写的正确性。为视频数据的正确存储,提供硬件基础。
四、软件设计
(一)V4L2模块
V4L2(Video for linux2)作为无线网络视频监控系统中的视频采集驱动程序框架。根据摄像头的工作原理,实现V4L2提供的底层结构体接口v4l2_subdev, videobuf2和video_device等[3]。读取摄像头图像数据时,可以使用V4L2应用层接口,简要操作流程如下:
1.通过系统I/O函数open,打开摄像头设备节点。
2.通过结构体v4l2_pix_format,设置采集图像数据存储类型和采集图像分辨率等参数。
3.通过ioctl函数中VIDIOC_STREAMON参数,开启摄像头的图像采集。
4.通过结构体v4l2_requestbuffers,来对采集图像数据进行读取。ioctl函数中VIDIOC_QBUF参数可以从采集图像数据的队列中取出buf,进行图像的后续操作;ioctl函数中VIDIOC_DQBUF参数可以将读取后的buf,重新放回采集图像数据的队列中。循环往复,可以得到摄像头连续的图像数据,供后续模块使用。
5.通过ioctl函数中VIDIOC_STREAMOFF参数,停止摄像头的图像采集。
6.通过系统I/O函数close,关闭摄像头设备节点。
(二)x264模块
如果直接将摄像头采集的图像数据进行传输,图片相对较大,对传输带宽要求很苛刻。但是,如果提前将图像数据进行编码压缩,传输的数据就会相对较小。所以,引入x264,它是一个开源的H.264/MPEG-4 AVC视频编码函数库,编码速度相对较快,视频数据的压缩比也相对较高[4]。即使在网络带宽很差的情况下,依然可以正常传输图像数据。简要操作流程如下。
1.通过x264_param_default函数,给编码器的参数设置初值。
2.通过x264_param_parse()函数,解析自定义配置的命令行编码器的相关参数。
3.通过x264_encoder_open函数,开启编码器,将编码器的初值,写入编码器。
4.通过x264_encoder_encode函数,将V4L2采集的图像数据,经过数据存储类型转换,送到编码器处理。编码器可以输出每帧编码后的数据,供后续模块继续处理。
5.通过x264_encoder_close函数,关闭编码器,并且打印相关统计信息。
(三)Live555模块
Live555的源代码架构设计简洁,支持多种视频编码格式的流化、接收和处理[5]。简要操作流程如下:
初始时,首先创建socket,绑定本地IP地址,将网络端口设置为8554,监听连接请求事件。一旦播放端有socket连接请求时,第一时间响应并且创建RTSP连接,并且将实例化的句柄加入哈希表中,供后续操作继续使用。Live555流媒体服务器将x264编码后的视频数据进行流化处理,根据RTP协议把视频编码数据打包成RTP包,自适应调节模块来完成对视频数据发送速率的动态调节。当收到播放端发送的DESCRIBE请求时,就会获取到对应的流媒体信息描述发送给播放端;当收到播放端发送的SETUP请求时,就会建立新的数据Sink;当收到播放端发送的PLAY请求时,使用Sink获得RTP包。Sink不断地向Source请求视频数据,Source取得视频数据后就调用回调函数,把视频数据给Sink处理,Sink就将视频数据源源不断的发送给播放端。
五、结语
本文阐述了一种基于Linux平台的无线网络视频监控系统的设计方法。详细地介绍了系统的设计:首先是硬件设计部分,分别从各个芯片的选型,到硬件电路的搭建和调试,确保硬件平台可以稳定的运行;然后是软件设计部分,视频数据是V4L2架构采集摄像头的图像数据,先被送到x264编码器进行编码压缩,接着被送到Live555框架进行流化处理,最后通过RTSP实时流传输协议发送出去。监控端需要安装VLC视频播放软件,就可以监测摄像头采集的图像。本系统采用Linux开发平台,它的可移植性和扩展性都相对较好。
参考文献
[1]王英吉,周凤新.基于社区警务的公安视频监控系统建设研究[J].辽宁警察学院学报,2022,24(02):68-71.
[2]张宝龙,李丹,王靖云,等.基于OV9712的串行器解串器视频编码方案[J].液晶与显示,2015,30(06):965-971.
[3]陈二微.基于Linux V4L2子系统的ISP及Camera驱动接口标准化方法及应用[J].计算机与网络,2021,47(12):26-27.
[4]王哲诚,葛万成,吴晔.x264视频编码器中参数设置对编码效率影响的研究[J].信息通信,2018(02):40-42.