- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于ARM9的视频监控终端的设计与实现
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 传输协议。
来源:维库开发网
上一篇:基于ZigBee技术的智能调光系统
下一篇:宽带小型化高隔离度SPDT开关的研制