基于ARM11的高清网络实时监控系统

  • 格式:docx
  • 大小:42.56 KB
  • 文档页数:8

基于ARM11的高清网络实时监控系统

刘伟杰;李博

【摘 要】针对高清远程监控带来传输带宽增加的压力和时延、保存监控视频的周期短的问题,设计一种基于ARM11的高清网络实时监控系统.采用USB摄像头基于V4L2接口采集图像,结合H.265视频编解码技术,以RTP协议打包封装H.265视频码流经网络传输到Web服务器,利用CGI,JavaScript技术实现多种智能终端登录浏览器显示监控画面,在此基础上实现在LCD终端实时显示监控画面.经测试,该监控系统画面清晰无抖动,网络延时在500 ms以内,视频压缩比在130左右,满足高清视频监控数据的存储.

【期刊名称】《现代电子技术》

【年(卷),期】2018(041)012

【总页数】5页(P47-51)

【关键词】ARM11;V4L2接口;网络实时监控;RTP协议;Web服务器;LCD终端

【作 者】刘伟杰;李博

【作者单位】中北大学仪器科学与动态测试教育部重点实验室,山西太原030051;中北大学仪器科学与动态测试教育部重点实验室,山西太原030051

【正文语种】中 文

【中图分类】TN949.197-3

随着安全性意识逐渐提高,安防监控在公共安全、交通安全和工业生产等各个方面起到至关重要的作用,传统的本地模拟监控已经无法满足重要领域的大范围、远距离监控的需求,网络视频监控以其不受地区、时间限制,在授权的情况下可以随时按需监控,实现即插即用即看,使用方式相当便捷,已经成为监控发展的新趋势。目前网络监控高清已经成为主流,视频编码方面已经由应用广泛H.264标准发展到最新H.265标准,H.265标准是继承H.264的架构并且采用了多种编码的新技术,相比H.264编解码技术H.265能够更好地支持高清视频;同样质量的图像,H265比H.264有20%~40%的码流节省并且压缩视频占用空间是后者的1/3~1/2,而且增加了更多的并行机制和网络传输机制,为高清视频实时传输和实时浏览提供便捷。

伴随着网络监控系统的到来,对监控系统的要求也不断提高,要求实时可靠、经济实用、方便灵活。而嵌入式系统的特点恰好满足以上要求,嵌入式网络监控系统应运而生。本文在嵌入式系统中移植Web boa服务器,搭建网络监控系统应用平台,应用H.265编码技术和RTP网络协议实现视频的采集、编码、发送和实时显示功能。

1 系统设计与实现

1.1 硬件系统设计

本文采用飞凌公司推出的OK6410开发板作为实时视频监控终端。OK6410开发板是以三星公司生产的S3C6410微处理器,ARM1176JZF-S为内核,主频533

MHz/667 MHz,具有64/32位的内部总线,由AXI/AHB/APB总线构成,集成了好多硬件加速器,非常适合音/视频、2D图形、显示运算等运用[1]。S3C6410具有优化的外部存储器接口,256 MB的NOR FLASH,保证程序快速运行,2

GB的NAND FLASH用于启动代码、内核代码、根文件系统和用户程序。开发板包含多种硬件外设,包括USB摄像头接口、24位真彩色LCD控制器、SD卡插座等。硬件系统设计结构图如图1所示。 图1 硬件系统设计结构图Fig.1 Design structure of hardware system

1.2 软件系统设计

OK6410从S3C6410为主控芯片,基于Linux-2.6.30操作系统,系统软件主要是U-boot,zImage和根文件系统,配置内核相关驱动和网络协议,移植ARM端X265和Web boa应用软件。应用软件部分采用多线程编程,包括视频采集线程、LCD终端显示线程、视频压缩存储线程、网络传输线程。应用软件结构框图如图2所示。

图2 软件系统设计结构图Fig.2 Design structure of software system

1.2.1 图像采集线程

V4L2[2]是Linux内核中关于视频设备的驱动模块,它为针对视频设备的应用程序提供了一系列的API[3]。V4L2的驱动程序调用流程如图3所示。

在Linux中,视频设备是设备文件,可以像访问普通文件对其进行读/写,驱动程序在/dev/video*目录下,关键代码部分如下[4]。

1)打开摄像头设备,调用函数fd=open("/dev/vid-eo0",O_RDWR)第一个参数是视频设备在/dev/目录下的设备名,视频设备以非阻塞方式打开。

2)检查视频设备支持的标准,调用ioctl(fd,VIDI-OC_QUERYSTD,&std)检测到的视频设备支持属性保存到std结构中[5]。

图3 V4L2的驱动程序调用流程Fig.3 Call flow for drive program of V4L2

3)设置视频采集格式,调用函 数 ioctl(fd,VIDI-OC_S_FMT,&fmt)设置视频采集分辨率、颜色、采集模式等。

4)申请帧缓冲空间,本文申请4个视频帧缓冲空间用于队列循环采集,这些视频数据保存到内核空间,应用程序不能直接访问内核空间数据。本文采用mmap()方式将内核空间映射到用户空间,内存映射方式方便快捷,省去了大量内存复制,提高了效率。

5) 设备采集图像,调用函数 ioctl(fd,VIDI-OC_STREAMON,&mtd)缓存图像。

6)关闭视频设备close(fd),释放内存。

1.2.2 LCD终端显示线程

LCD图像实时显示主要利用Linux系统提供的Fr-amebuffer(帧缓冲)直接写屏实现[5]。Framebuffer是Linux系统为显示设备提供的一个接口,其是一种独立于硬件的抽象图像设备,用户只需要通过应用程序直接读写Framebuffer的内容直接在显存上绘制图像。图像采集在LCD终端显示流程如图4所示。

1)打开显示设备终端,调用函数 fbfd=open("/dev/fb0",O_RDWR),调用

ioctl(fbfd,FBIOGET_FSCREEN-INFO,&finfo)操作获得LCD显示设备相关参数,如屏幕分辨率,像素点比特数和偏移。根据屏幕参数设置屏幕换成屏幕缓冲区大小:screen_size=var.xres*var.yres*var.bits_per_pixel/8;调用mmap()函数将屏幕缓冲区空间印射到用户空间,显示设备初始化完成。

图4 图像采集在LCD终端显示流程Fig.4 Display process of image

acquisition on LCD terminal

2)摄像头采集视频,从视频帧缓冲输出队列得到图像数据,摄像头采集模式YUV格式需要转化为RGB格式,针对处理后的数据的分辨率判断与LCD分辨率是否匹配,进行图像缩放并送入显存显示,再将视频缓冲区送入队列,关键代码如下:

1.2.3 视频压缩存储线程

该系统的视频压缩编码标准选择的是新一代视频压缩编码标准:H.265/HEVC,其是一种高性能的视频压缩编码技术。与其他现有的视频编码标准相比,在相同的带宽下可获得更好的图像质量,可以获得更高的压缩比。X265是一款开源优秀的开源软件,可以针对X86,DSP,ARM等多平台移植,是实现H.265准效率最高的开源代码,实现H.265/HEVC编码步骤如下:

初始化x265编码参数相关结构体:

编码过程:

1)pParam=x265_param_alloc(),为参数x265_param分配内存空间。

2) x265_param_default(x265_param_t*pParam)初始化编码器的相关参数。

3)pHandle=x265_encoder_open( x265_param_t*param)初始化编码器,并对各结构体参数编码、预测等需要的参数进行初始化。

4)按照色度空间分配内存。

5)获取待压缩图像数据。

6)编码视频数据和视频码流。

针对采集线程和视频编码线程对图像数据采集和编码,对处理后的视频数据进行存储,创建视频存储线程将编码数据写入U盘。

1.2.4 网络传输线程

基于视频监控的实时行要求,网络传输机制选择实时传输协议RTP/RTCP。RTP协议负责传输具有实时特性的音视频文件,其是一个应用层程序,既可以工作在TCP协议上又可以工作在UDP协议上。相对TCP协议,UDP协议传输时延更低并且具有更小的网络开销,选择RTP/UDP协议格式进行视频码流传输。RTCP协议是实时传输控制协议,用于实时监控传输数据,为系统提供拥塞和流控制。RTP协议的组成框架在RFC3550中有详细介绍,每个RTP数据包由固定包头和荷载两部分组成。包头由固定的12个字节构成,荷载就是音视频流。H.265的基本流结构分为二层,包括视频编码层(VCL)和网络适配层(NAL)。VCL为被压缩视频序列,VCL数据要封装NAL中才能用来传输和存储。H.265标准指出,当数据流存储在介质上时,在每个NALU上添加起始码:0x00000001,用来指示一个NALU的起始结束。结合RTP协议和H.265的基本流结构,RTP传输H.265视频码流,最新的RF3894提供了传输H.265媒体流RTP打包的方法。在H.265视频码流中剥离出每个NALU,在每个NALU头前添加RTP包头,添加NALU的数据包到荷载,通过UDP协议网络传输。根据RF3894标准,本文算法流程见图5。

图5 RTP协议打包H.265视频码流Fig.5 Packaging of H.265 video code

streams by using RTP protocol

2 实验结果与测试

2.1 系统测试

Web boa服务器主要对网上信息浏览提供服务,支持多端访问。嵌入式boa服务器支持多HTTP连接,同时能够进行远程管理和维护,还能提供公关网管接口(CGI)。客户端通过HTTP协议远程访问boa服务器;服务器通过访问请求判断后,运行相应CGI程序,将数据上传客户端,方便信息交互。实验测试平台采用OK6410开发板。系统启动初始化完成,NFS模式启动内核,开启摄像头,设置采集分辨(1280×720),运行程序。可在LCD终端看到监控画面,如图6所示。同时浏览器通过服务器IP地址访问服务器,客户端通过JavaS-cript技术将VLC播放器加载到网页中,客户端点击播放,服务器根据客户端请求运行CGI程序(网络传输线程),可在VLC播放器看到监控画面,如图7所示,图像质量清晰,无抖动。 图6 LCD终端监控画面Fig.6 Monitoring screen of LCD terminal

图7 浏览器监控画面Fig.7 Monitoring screen of browser

2.2 动态视频测试

动态图像测试采用手机端精准计时器软件,启动摄像头采集秒表时间,LCD终端显示图像如图8所示,网页客户端显示画面如图9所示,可以观察到监控画面清晰无抖动,对比手机终端计时器时间变化可得到网络延迟在500 ms以内。

图8 LCD终端监控画面Fig.8 Monitoring screen of LCD terminal

2.3 视频压缩比

本次实验视频采集的时间为5 min,视频的输入格式为PAL,帧率为25 f/s,分辨率为1280×720。计算后可知:未压缩的数据量为11203.5 MB。硬盘中压缩后的文件的大小为86.18 MB,可以计算得出压缩比为130.4。