首页 > 范文大全 > 正文

基于ARM的移动视频监控终端设计与实现

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于ARM的移动视频监控终端设计与实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要:以S3C2440硬件平台为核心基于Linux操作系统实现移动视频监控终端的设计。设计系统的硬件平台和软件方案,监控终端通过无线网络实现RTP协议下接收H.264视频流,在网络不稳定情况下接收视频包时乱序、丢包的处理方法。利用开源解码库ffmpeg实现视频流解码,显示监控画面。通过实验表明,移动视频监控终端具有灵活性高,便于携带等特点,对于QCIF分辨率有较好的实时监控效果。

关键词:arm; RTP传输协议; H.264解码技术; 监控终端

中图分类号:TN91934; TP36 文献标识码:A 文章编号:1004373X(2012)10000903

随着人们对生活和工作环境的安全性的要求不断提高,安全防范的重要性越来越突出。视频监控技术在各个领域发挥着越来越重要的作用,比如对森林、旅游景点、城市小区等通过视频监控来实时监控现场发生的情况。将嵌入式技术和无线网络技术应用于视频监控终端,与传统的有线视频监控相比,无线视频监控摆脱了网络电缆的束缚,提高了视频监控的灵活性和可扩展性。监控人员可以携带手持监控设备而不必在固定位置值守来监控现场。

在无线网络环境下传输视频,庞大的视频信息量对有限的传输带宽是难以承受的,成为阻碍其应用的瓶颈之一,因此,需要高效率的视频压缩标准来满足无线传输带宽的需求。新一代视频压缩标准H.264是面向Internet和无线网络的视频图像编解码技术,它不仅提高了压缩效率,而且增加了网络适应能力,降低了网络带宽的需求。H.264标准定义了视频编码层VCL(Video Coding Layer)和网络提取层NAL(Network Abstraction Layer)。视频编码层主要采用帧内预测、帧间预测、变换和量化、熵编解码等技术实现视频压缩功能,网络提取层将编码后的数据封装成NALU单元,以适应在无线网络中传输。

移动视频监控终端以ARM微处理器为核心,剪裁适合视频监控终端的嵌入式Linux操作系统。通过配备无线网卡接收监控前端压缩视频数据,解码、显示监控前端发送的视频流,实时显示前端监控画面。本文将重点阐述在视频传输过程中采用RTP/UDP/IP协议时,出现的视频包乱序、丢包处理方法,以及在ARM平台上对H.264解码器的移植和实现。

1 系统的硬件平台

系统硬件平台主要由嵌入式微处理器、NAND FLASH,SDRAM,IEEE802.11协议无线网卡、LCD模块组成。本系统的微处理器选用三星公司ARM9内核的S3C2440,系统时钟采用400 MHz的工作频率。S3C2440内部集成了大量的功能单元,包括:存储器控制器有8个Bank区间、LCD控制器、USB控制器以及丰富的外设接口资源,根据视频监控终端的需求,在此基础上进行电路的配置和扩展[12]。视频监控终端硬件框图如图1所示。

图1 移动视频监控终端硬件框图存储器包括ROM和RAM两部分,ROM配备了非线性结构的K9F1208UOM容量为64M×8 b的NAND FLASH芯片;RAM配备2片HY57V561620BTH组成32位数据总线的SDRAM,适用监控终端处理庞大视频数据的需求。在USB Host接口上外接一块基于IEEE802.11协议的无线网卡,通过无线AP端点接收监控前端视频数据。液晶屏选用TFT真彩液晶屏,并配备相应的触摸屏实现人机交互的目的。

2 系统的软件设计

移动视频监控终端软件设计以嵌入式Linux操作系统为核心,作为一种开源操作系统[3],Linux具有支持多种硬件平台、丰富的设备驱动和良好的网络功能等特点[4]。针对监控终端的具体应用对内核进行配置,剪裁出合适的系统。监控终端应用软件是建立在操作系统之上,为实现RTP/UDP/IP协议下接收H.264视频流和ffmpeg解码库实时解码视频流[5]。

2.1 H.264视频流的传输

2.1.1 传输方式选择

视频的实时传输要求较低的时间延迟,并且允许一定的丢包率。由于TCP协议的3次握手以及丢包重传机制会造成一定的延时,在实时监控系统中有一定缺陷,而UDP协议是面向无链接、不可靠的传输层协议,具有消耗资源小,传输速度快等特点,在视频传输过程中偶尔丢包不会对监控画面产生较大影响[6]。UDP协议不提供数据包分包、封装、数据包排序等缺点,为保障视频流传输的可靠性,网络传输部分采用建立在UDP协议之上的RTP(Realtime Transport Protocol)实时传输协议[7]来实现,通过套接字与前端建立连接,以接收视频流数据。RTP提供带有实时特性的端对端数据传输服务,包括有效载荷类型的定义、序列号、时间戳和传输检测控制。基于RTP/UDP/IP协议传输视频流封装格式如图2所示。

图2 网络传输中视频流封装格式2.1.2 视频流传输

采用UDP协议传输RTP包时会出现乱序的现象,所谓乱序就是监控终端接收到RTP包顺序可能前端发送的顺序不一致[8],因此,首先要对接收的RTP包排序。采用在内存中建立一个双向链表来保存接收的RTP包,按照RTP报头的序列号(Sequence Number)顺序存放到链表中,双向链表结构体定义如下,部分变量用于RTP分片封包模式。

typedef struct PacketNode

{

unsigned char nalu_hdr;

//NALU头

unsigned short seq_no;

//序列号(SN)

unsigned long timestamp;

//时间戳

unsigned char *payload;

//视频流负载

unsigned long payloadsize;

//负载长度