《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 基于ARM9的视频监控终端的设计与实现
基于ARM9的视频监控终端的设计与实现
中电网
摘要: 文中设计了一种基于ARM9 架构S3C2410 的嵌入式的视频监控系统。完成了视频图像的采集、编码压缩、传输等功能。 它不仅具有抗干扰能力强, 适合远距离传输, 能够加密, 充分利用现有网络资源等诸多优点, 而且可移植性强、低功耗、成本低、易于安装、使用方便和便于维护等优点,并且采用软件实现其主要功能, 有利于系统的二次开发及升级, 其应用范围和前景将非常广阔。
关键词: ARM ARM9 视频监控 S3C2410
Abstract:
Key words :

视频监控系统是安全防范系统的重要组成部分, 它具有直观, 方便, 信息内容丰富而被广泛应用于许多场合。传统的数字视频监控一般采用基于PC机平台+ 视频采集卡的形式, 该方案有系统体积大、成本高、稳定性不够好等缺点。随着嵌入式系统监控和视频压缩技术的日渐成熟, 以及高网络带宽的普及, 通过嵌入式平台, 实现视频信号采集、压缩, 通过网络传输, 进行视频监控已成为可能。 该设计采用的是韩国三星公司的一款基于ARM920T 内核的嵌入式处理器, 并将国际上流行的MPEG4 压缩编码技术和流媒体传输技术相结合,开发出可靠性高、成本低、体积小、功耗低的远程视频监控系统终端。

1  系统开发硬件平台

系统硬件平台如图1 所示。该设计采用的是韩国三星公司的S3C2410 ARM 嵌入式处理器, 主频可以达到203 MHz. 内置有丰富的外设资源, 包括存储器、串口、网口和USB 等接口控制设备,主要面向手持设备以及高性价比、低功耗的应用。 S3C2410 作为系统控制单元,其出色的性能、丰富的片内外资源、对视频处理功能的优化、低功耗等特点成为系统的首选。该核心板内置了64 MK9F1208 的NAND Flash, 2MSST39VF1601 的Nor Flash, 以及以太网控制芯片国三星公司的S3C2410 ARM 嵌入式处理器, 主频可以达到203 MHz. 内置有丰富的外设资源, 包括存储器、串口、网口和USB 等接口控制设备, 主要面向手持设备以及高性价比、低功耗的应用。 S3C2410 作为系统控制单元,其出色的性能、丰富的片内外资源、对视频处理功能的优化、低功耗等特点成为系统的首选。该核心板内置了64 MK9F1208 的NAND Flash, 2MSST39VF1601 的Nor Flash, 以及以太网控制芯片CS8900Q3. 两路UART 串行口支持RS232 协议,用于和PC 通讯和控制摄像头, 波特率高达115 200 bps. 外接USB 摄像头采用的是基于中星微Z301 芯片的极速摄像头。 像素达到130 万, 色彩位数24 位, 最大帧数可以达到30 帧, 画面流畅、清晰, 支持: S3C2410、QQ2440v3 mini2440 等ARM9 开发板, 即插即用, 对嵌入式系统开发是个不错的选择。

 系统硬件平台

图1 系统硬件平台

该系统通过USB 摄像头采集视频原始数据,S3C2410 作为核心的中央控制和数据处理中心,主要完成视频采集终端控制和视频图像压缩, 并将压缩后的视频数据打包形成标准的网络数据流传输到因特网中。

2  系统的软件设计

系统的软件设计主要包括如下几个方面: 交叉编译环境的搭建、USB 视频采集、视频编码压缩, 以及视频流的网络传输。 系统软件架构如图2 所示。

系统软件架构

图2 系统软件架构

2. 1 交叉编译环境的搭建

由于嵌入式开发板的资源有限, 不能直接在开发板上进行开发和调试, 需要以交叉编译调试的方式进行开发和调试,鉴于嵌入式Linux 强大的网络支持功能, 源代码完全开放、可移植性强、网络功能强大等特点, 选用它作为系统软件平台。在系统开发前需安装Linux 操作系统, 然后在宿主机即PC 机上建立交叉编译环境。安装对应ARM 开发板的交叉编译器cross- 3. 3. 2. tar. bz2. 这样, 一个嵌入式ARM- LINU X 下的交叉编译环境就搭建成功了。

2. 2 视频采集系统的实现

视频采集是通过嵌入式Linux 操作系统调用V4L( video4linux ) 和影像驱动程序来完成的。

V ideo4linux 是linux 的影像流系统与嵌入式影像系统的基础。它是linux kernel 里支持影像设备的一组API( 应用接口程序) , 若配合适当的视频采集卡与驱动程序, video4linux 就可以实现影像采集、AM/FM 无线广播、影像CODEC、频道切换等功能。 目前, V4L 主要应用在影像串流系统与嵌入式影像系统里, 如: 远程教学、远程医疗、视频会议、视频监控、可视电话等。它分为2 层式构架, 上层为video4linux驱动程序本身,下层为影像设备的驱动程序, 如该设计中的中星微摄像头Z301 芯片的驱动程序。 在Linux 操作系统中, 外部设备都作为设备文件来管理, 因此, 对外部设备的操作就转变成对设备文件的操作。 采集程序调用V4L API 对设备文件进行读操作,即可实现视频数据采集。

由于开发板自带的Linux 内核并不支持中星微的摄像头,所以要在网上下载Z301 驱动芯片的补丁, 对应ARM- Linux 版本号。 利用patch 命令打在内核上。 在编译内核的时候,会在usb- > support 出现SPCCA5XX 选项,以模块的形式加载, 开机的时候顺序加载Video4linux 和Spca5x x 模块, 加载成功后, 会在设备文件里看到/ dev/ video0 文件, 说明USB 摄像头驱动加载成功, 就可以在终端对摄像头操作进行集视频采集了。

2. 3 视频编码压缩

视频监控系统的要求是要做到实时性, 由于直接通过摄像头采集到的原始图像数据量大, 而网络带宽有限,所以一定要经过视频编码压缩处理后才能进行网络传输, 视频压缩也是该设计的核心内容。

目前, 在众多视频编码算法中, 影响最大并被广泛应用的国际标准是H26X 系列和MPEG 系列。 MPEG系列的MPEG- 4 被ISO/ IEC 批准为正式标准,编号为ISO/ IEC14496, 它不仅针对一定比特率下的视频、音频编码, 更加注重多媒体系统的交互性和灵活性。这个标准主要应用于视频电话, 视频电子邮件等, 对传输速率要求较低, 在4 800~ *00 bit / s 之间, 它能利用很窄的带宽, 通过帧重建技术, 数据压缩, 用最少的数据获得最佳的图像质量。与MPEG1和MPEG2 相比, MPEG4 的特点是更适用于交互AV 服务以及远程监控。 MPEG- 4 是第一个使你由被动变为主动( 不再只是观看, 允许你加入其中, 即有交互性) 的动态图像标准。

目前, 基于MPEG- 4 标准的视频编解码器较多,比较常用的有微软开发的msmpegv3, 以及开放源代码的xvid 和ffmpeg . ffmpeg 是一套完整的录制、转换、流化音视频的解决方案, 它的兼容性很好,包含了业界领先的音视频编解码库,对嵌入式视频监控系统来说是个非常好的选择。 系统采用了FFMPEG 进行视频编码、压缩。 编码过程中主要使用FFMPEG 的libavformat 和libavcodec 这两个函数库, 许多视频文件格式一般只是定义如何将视频流编码进一个独立的文件, 而不明确指出其使用的编码工具, libavformat 库的功能主要是分析视频文件的语法格式, 并将它从流中分理出原始的视频流,libavcodec 库的功能则是按照流格式处理原始的视频流编码。 视频编码的流程如下, 首先打开文件if( av_open_input_file ( & pFormatCtx, f ilename,NU LL, 0, NU LL) ! = 0)。

然后读取流文件的信息选择对应的编解码器,并打开对应的编码器, 在编码端需要使用libavformat 库函数来读取数据包, 滤除掉不需要的非视频流数据, 然后循环调用libavcodec 库函数GetNestFrame. 来处理每帧数据进行编码。 通过试验一段40s 的视频原文件, 分辨率为800×600, 帧率为30, 大小为246 M, 压缩到FLV 格式后, 帧率为25, 分辨率为320×240, 码率为500 K/ s, 压缩后的大小不到2M, 压缩比率为120: 1. 得到的视频文件很清晰、流畅, 分辨率、帧率、时间码率、视频格式都可以更改,非常方便,可以达到实时视频监控的要求。

2. 4 视频数据流的网络传输

利用摄像头设备采集的视频图像经ffmpeg 压缩为MPEG- 4 视频流以后, 需经过网络传输。 视频监控系统的实时性要求较低的时延和较小的丢包率, 由于TCP 的重发机制带来较大的时延, UDP 本身又不提供任何Qos 保证, 因此需要通过实时传输协议( RTP) 和实时控制协议( RTCP) 配合使用, 提供数据实时传输和Qos 服务来满足网络视频数据实时传输的要求。 RTP 数据协议负责对流媒体数据进行封装及完成媒体流的实时传输, 本身并不能为按序传输数据包提供可靠的保证, 也不提供流量控制和拥塞控制。可靠性传输是由与它配合使用的实时传输控制协议RTCP 来负责完成的。 RTP 是目前解决流媒体实时传输问题的最好办法, 系统中的视频传输模块采用了RTP 和RT CP 传输协议。

RTP 协议为传输层协议, RFC 在对RTP 的定义过程中并没有对其底层协议进行定制。 RT P 不提供网络连接, 在使用中通常需要与U DP 等其他协议配合。 RTP 协议使用U DP 的端*并将RT P 执行程序写在U DP 的上层, 它可以看成是传输层的上层子层。 RTP 信息包中封装了编码后的视频数据, 每个RTP 信息包被封装在UDP 信息段中, 然后再封装在IP 数据包中以备网络传输。 图3 给出了RTP/RTCP 在协议栈中的位置。

RT P/ RPTCP 在协议栈中的位置

图3 RT P/ RPTCP 在协议栈中的位置

在实际开发过程中, RTP 执行程序被看做是应用程序的一部分,被集成到应用程序当中。 在发送端, 首先创建RT P 会话, 在创建RTP 信息包的应用程序中写入执行RTP 协议的程序, 然后应用程序将RTP 信息包发送到UDP 的套接接口。 同样, 在接收端,RTP 信息包通过UDP 套接接口输入到应用程序, 并将执行RT P 协议的程序写入到从RTP 信息包中抽出媒体数据的应用程序。

3  结论

文中设计了一种基于ARM9 架构S3C2410 的嵌入式的视频监控系统。完成了视频图像的采集、编码压缩、传输等功能。 它不仅具有抗干扰能力强, 适合远距离传输, 能够加密, 充分利用现有网络资源等诸多优点, 而且可移植性强、低功耗、成本低、易于安装、使用方便和便于维护等优点,并且采用软件实现其主要功能, 有利于系统的二次开发及升级, 其应用范围和前景将非常广阔。

此内容为AET网站原创,未经授权禁止转载。