时间:2022-09-21 10:07:32
摘 要
本文针对网络视频监控设备的实际应用需求,设计了基于嵌入式Linux和ARM9的单画面视频监控系统。系统的硬件选用三星公司的S3C2440开发板,通过连接USB摄像头进行视频数据的采集。软件以嵌入式Linux的ubuntu操作系统为开发环境、选择H246算法对视频进行压缩,通过SOCKET传送回PC机上,客户端采用Qt技术实现界面并实时显示监控情况,同时以AVI格式存储以便播放历史录像。经测试,该系统能够实现实时视频监控及播放历史,且稳定性较好。
【关键词】嵌入式Linux 视频监控 ARM9 SOCKET
1 引言
随着信息化技术的不断发展,各行各业对视频监控系统的需求越来越广泛,如交通监控、家庭防盗、企业安防等各个领域。视频监控不仅能够起到事前防范的作用,而且还有事后取证的功效。
嵌入式的视频采集以其独特的优势被广泛采用。如具有较强的网络支持功能、强大的移植性、完全开放的源代码等特点。因此,本系统选择嵌入式Linux的ubuntu操作系统为开发环境,以三星公司的ARM9处理器S3C2440为核心开发板,通过建立Client/Server工作模型来实现远程视频监控。
2 系统硬件组成
本系统具有以下功能:
(1)终端能够进行视频数据的采集并传送回PC机;
(2)用户可以通过客户端软件观看监控终端采集到的视频数据;
(3)存储采集到的视频数据以便播放历史录像。
基于此,本系统的硬件功能框图如图1所示。平台以三星公司的S3C2440处理器为核心开发板。配置了64MB的NandFlash存储器和64MB 32位的SDRAM。用户将代码存储在NandFlash中,并从NandFlash启动,之后自动将代码加载到SDRAM中运行如图1。
视频数据的采集通过在USB接口上外接一个USB摄像头,将视频数据接收到核心板。开发板通过5线异步UART串口与目标系统通信,获取开发板调试信息、下载镜像文件等,波特率可达115200bps。引出JTAG接口,用来烧写BootLoader,并通过JTAG接口调试程序。同时外接一个网络芯片与主机相连,用于传送采集到的视频数据,终端接收到视频流进行转码,最终显示到客户端上。
3 系统软件实现
本系统采用模块化设计,从功能上可以划分为如图2所示四个模块:视频采集模块、编码压缩模块、网络传输模块和视频播放模块。
视频采集模块完成视频数据的采集,通过在ARM板上安装USB摄像头进行数据采集。编码压缩模块对视频数据进行编码以减少数据量。网络传输模块将压缩后的视频数据传送回客户端。视频播放模块不仅要实现实时播放监控画面,而且能够回放历史视频。
3.1 视频采集模块
视频采集模块通过调用V4L和底层设备驱动程序实现。V4L为各种视频设备提供了统一的接口,是Linux中的内核驱动程序。应用程序通过调用这些接口函数就可以对不同的设备进行控制。视频采集步骤如下:
(1)打开视频设备。使用open()函数打开所需设备并获取设备标识符。
(2)获取图像信息和设备参数信息。调用v4l_get_capability()函数获取设备参数,如是否具有捕获图像能力、每秒帧数等;通过v4l_get_picture()函数获取图像格式,如:图像大小等。
(3)内存映射。调用mmap()函数实现将设备文件的内容映射到内存空间进行读写操作。
(4)采集视频数据。调用ioctl()函数采集一帧图像并存储到内存空间。
3.2 图像压缩模块
通过摄像头采集到的图像是YUV格式的图像,数据量大,但网络带宽有限,所以要经过视频编码压缩处理后才能进行网络传输。本系统采用目前比较流行的H264编码压缩算法实现,H264压缩算法具有画面质量高、网络适应性强、压缩比高等优点,压缩率可以达到100:1,压缩后的视频数据能够实现快速传输。
3.3 网络传输模块
系统中经过压缩的视频数据需要通过网络传送到PC机上。本系统选用可靠的TCP/IP编程模式,服务器端编程步骤如下:
(1)调用socket()函数创建套接字;
(2)调用bind()函数绑定套接字与地址信息;
(3)调用listen()函数进行监听;
(4)调用accept()函数等待接收连接;
(5)接收视频帧;
(6)关闭socket。
3.4 视频播放模块
视频播放通过客户端实现,客户端将接收到的视频流进行解码,即将视频流转换到rgb空间显示。本系统利用QT技术编写界面,调用QImage将传送回来的压缩视频流显示到QLabel上实现实时播放;同时将视频流转码存储为avi格式,通过Opencv提供的接口去读取视频以便播放历史画面。
客户端监控界面如图3所示,点击“连接”按钮可观看实时监控画面,点击“播放历史”按钮可选择历史记录进行回放。
4 结论
本文实现了一个基于ARM9和嵌入式Linux的单画面网络视频监控系统,经测试,该系统不仅可以实现实时监控,还可以对历史画面进行查看播放。具有成本低、易于安装和维护、稳定性好等优点。对于各种监控需求场合具有很好的应用价值。
参考文献
[1]王滔,于洁.Linux系统下USB摄像头驱动开发[J].计算机应用,2004(11):8-10.
[2]陈波.H.264编码算法研究及嵌入式应用[D].南京:江苏大学硕士论文,2008.
[3]王爱矛.基于ARM-Linux的嵌入式数据采集与远传系统[D].大连:大连理工大学,2008.
作者简介
张永梅(1985-),女,山西大同人。硕士。现为山西农业大学信息科学与工程学院助教。研究方向为图像处理与机器视觉。
作者单位
山西农业大学信息科学与工程学院 山西省晋中市 030801