基于嵌入式Linux的网络视频监控系统的实现

时间:2022-09-21 10:07:32

基于嵌入式Linux的网络视频监控系统的实现

摘 要

本文针对网络视频监控设备的实际应用需求,设计了基于嵌入式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

上一篇:心理咨询技术在初中班主任工作中的应用 下一篇:关于钢贸行业危机的起因及反思