基于ARM的嵌入式视频监控系统的设计与实现
2018-10-24杨建国蔡立志
杨建国 蔡立志 郑 红
1(华东理工大学计算机科学与工程系 上海 200237)2(上海计算机软件技术开发中心 上海 200235)
0 引 言
视频监控技术广泛应用于安防、人防等领域,如何更好地获得监控现场的图像数据一直是热点研究问题之一。传统的采用电荷耦合元件CCD(Charge-coupled Device)摄像机获取现场视频信息的方案易于实现,但存在成本较高、布线随意、维护比较困难、设备体积大、系统扩展困难、智能化程度低等问题。
相比较之下,凭借内核可裁剪、实时性强、扩展功能多、网络功能强等方面的诸多优点,ARM和嵌入式Linux系统实现图像的采集与传输的应用具有得天独厚的优势。与其他数据相比,一般的视频信息具有直观、形象、准确和信息容量大等特点。视频的原始数据量非常大,但是如果不经过压缩,这样的视频数据很难在实际的嵌入式系统中应用实现。
嵌入式Linux系统的应用程序可以通过网络进行更新,数据可通过串口向上位机传输,也可以通过以太网向上传递,用户可通过网络客户端实现监控。
1 系统设计方案
本文所设计的系统,是基于S3C2440 ARM9平台和嵌入式Linux系统之上的。系统的主要流程如下:
(1) 在S3C2440 ARM9开发板连接USB摄像头。
(2) 利用Linux操作系统下的V4L2编程接口采集视频信息。
(3) 利用x264对原始信息进行压缩编码。
(4) 对压缩后的码流包成实时传输RTP数据包。
(5) 将数据包封装,通过以太网实时发送到PC客户端VLC Media Player进行播放。
系统视频监控模块的划分如图1所示。
图1 视频监控模块划分
2 视频监控设计方案
视频监控系统分为视频采集、视频压缩和视频传输三部分。
2.1 视频采集
系统视频设备使用的是V4L2。V4L2支持两种方式来采集图像:内存映射方式和直接读取方式。系统通过V4L2接口,采取内存映射方式进行视频数据采集,流程如图2所示。
图2 视频采集部分流程图
2.2 视频编码
视频信息与其他数据相比,视频的原始数据量非常大。按照电视标准委员会NTSC标准的帧速率30帧/s,视频信号的传输率约为26.4 MB/s,远远高于计算机的数据传输速率,原始视频信息很难直接存储到存储媒体上去。因此,必须进行数据压缩。系统编译安装x264源代码,对颜色编码方法YUV格式进行编码。
首先用init_encoder()进行编码参数设置,包括设置帧率分子和帧率分母(它们的比值作为帧率),显示的宽度和高度,采用的编码方式等。接着对编码器初始化,本文定义了一个结构体如下:
typedef struct{
x264_param_t *param;
x264_t *handle;
x264_picture_t *picture;
x264_nal_t *nal;
}Encoder;
其中:param记录设置好的各项参数;handle为句柄;picture说明每一帧序列中的特点;nal为编码后封装好的单元。
2.3 视频传输
系统采用实时传输协议RTP来传输视频数据,在传输数据时将视频数据和RTP头信息打包成RTP包。每个封装好的RTP包由头部和负载两部分组成,其中头部的长度是12个字节,负载是具体的多媒体数据。系统定义了RTP固定头部的结构体如下:
typedef struct
{
u_char csrc_len:4;
u_char extension:1;
u_char padding:1;
u_char version:2;
u_char payload:7;
u_char marker:1;
u_short seq_no;
u_long timestamp;
u_long ssrc;
}RTP_FIXED_HEADER
通过定义RTP固定头结构后,可设置负载类型、时间戳等信息。
3 系统实现和分析
基于ARM的监控系统实现客户端一般采用个人计算机,服务端采用ARM9 S3C2440处理器。在开发阶段,在虚拟机所建立的集成开发环境下进行编程和交叉编译。通过RS232串口线与ARM的SecureCRT进行通信,传递控制信息。
在监控系统实现阶段,首先在客户端安装VLC Player,建立会话描述协议文件并播放;然后,通过终端仿真程序SecureCRT运行服务端程序,让ARM通过网络接口向PC客户端VLC Media Player传递视频数据。
打开VLC Player的“工具”选项,选择“编解码器信息”,可以看到如下实验结果:编码:H264-MPEG-4 AVC;分辨率:320×240;帧率:20。再打开“统计”栏,显示如图3的实验结果。其中:已解码:841块;已显示:1 088帧;内容位率:166 KB/s。
图3 基于ARM的视频监控系统实验解码统计
作为比较,如果直接用摄像头作为捕获设备,对视频进行本地抓取,实验效果如图4所示。可得到以下实验结果:编码:Packed YUV 4∶2∶2,YU∶Y∶V(YUY2);分辨率:320×240;帧率:20。其中:已解码:869块;已显示:3 014帧;内容位率:8 677 KB/s。
图4 编码器信息图
图5是利用VLC Media Player和摄像头捕捉本地视频数据的显示截图。在对结果进行比较时,“内容位率”是一个关键参数,内容位率又称为“码率”,指单位时间内,单个录像通道所产生的数据量。
图5 本地视频监控系统实验解码统计
用三组数据实验,原始视频均采用YUY2方式、320×240像素的分辨率、20帧/s的情况下进行采集。在同一情况下,对于每一帧,x264解码的块数与原始视频处理的块数基本相同,显示帧数与原视频帧数内容位率比为0.02、0.02、0.02。
从图6中可以看到,在基于ARM的视频监控系统中,采用x264压缩编码后,内容位率分别从8 677 KB/s降至166 KB/s,从13 243 KB/s降至208 KB/s,从9 782 KB/s降至187 KB/s,平均降低到2%,有效地提高了x264编码效率。同时视频传输时占据的网络带宽非常低,视频播放流畅,基本可以满足实际应用中的实时监控的要求。
图6 原视频和x264压缩后内容位率对比
在同一情况下,在基于ARM的视频监控系统中,x264压缩视频帧数与原视频的帧数对比依次为0.36、0.33、0.35。如图7所示,由于采用有损编码,基于ARM的视频监控的视频清晰度有所下降。
图7 原视频和x264压缩视频数对比
4 结 语
本文讨论基于ARM的嵌入式视频监控系统的设计,给出了视频系统中的视频图像采集方案和视频压缩方案。在视频系统中,用户可以在客户端播放实时视频信息,以达到实时监控的目的。实验表明,该系统采用x264压缩编码后,有效降低了内容位率。系统开发成本低、体积小、功耗低、使用方便,可用于安防领域,如社会安全监控;医疗领域,如特护病房视频监控;校园安全领域,如安全监控等,具有较好的市场前景。