当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]基于ARM9的视频监控终端的设计与实现

摘要:设计了一种基于S3C2410 硬件平台和嵌入式操作系统的远程视频监控系统终端, 介绍了该嵌入式系统的软硬件设计思想和体系架构,对系统视频采集, MPEG4 压缩, 网络传输进行了详细分析。 与传统的视频监控系统比较, 该方案具有体积小, 成本低, 稳定性好等优点。

  视频监控系统是安全防范系统的重要组成部分, 它具有直观, 方便, 信息内容丰富而被广泛应用于许多场合。 传统的数字视频监控一般采用基于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 作为核心的中央控制和数据处理中心, 主要完成视频采集终端控制和视频图像压缩, 并将压缩后的视频数据打包形成标准的网络数据流传输到因特网中。[!--empirenews.page--]

  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. 得到的视频文件很清晰、流畅, 分辨率、帧率、时间码率、视频格式都可以更改,非常方便, 可以达到实时视频监控的要求。[!--empirenews.page--]

  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 在协议栈中的位置。



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

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

  3  结论

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

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭