基于嵌入式Linux的无线视频监控系统设计

基于嵌入式Linux的无线视频监控系统设计,第1张

高性能、低功耗嵌入式CPU和高可靠性网络 *** 作系统的面世,使得可视电话、视频会议、远程视频监控等运算数据量大的应用在嵌入式设备中实现成为可能。传统的基于同轴电缆视频监控系统结构复杂、稳定性差、可靠性低且价格昂贵,因而出现了嵌入式网络视频服务器等远程Web视频监控系统。在本嵌入式无线视频监控系统中,使用高性能ARM9芯片作微处理器,控制video4linux实现USB摄像头视频数据采集,采集的视频数据经JPEG压缩后,在 ARM9芯片的控制下通过2.4GHz无线发送/接收模块进行视频数据传输;视频传输模块再将视频数据通过串口或网络提交给视频应用服务端,最后由视频应用服务端将接收到的压缩数据帧重组、复合成视频图像,实现无线视频监控。

1 系统组成结构

整个系统由视频采集终端、2.4G无线发送模块、2.4G无线接收模块、视频传输和视频应用服务端等5个模块组成。 其组成结构如图1所示:

基于嵌入式Linux的无线视频监控系统设计,基于嵌入式Linux的无线视频监控系统设计,第2张

图1 嵌入式无线视频监控系统结构框图

视频采集终端包括以S3C2410X为核心的中央控制和数据处理中心,以及USB Camera数据采集单元。中央控制和数据处理中心主要完成视频采集终端控制和视频图像压缩,并将需要传输的数据经编码处理后,通过SIO发送到 nRF2401无线发射模块。

视频传输模块主要包括:以S3C2410X为核心的中央控制和数据处理中心以及将视频数据传输到视频应用服务端的MAC接口UART接口。视频传输模块的中央控制和数据处理中心主要完成以下任务:nRF2401将接收到的视频数据提交给SIO模块,S3C2410X先解码SIO模块数据,再通过UART 接口或MAC接口将视频数据传输到视频应用服务端。

视频应用服务端从串口或网络接口接收视频数据,并将其重组、复合成视频图像。

1.1 视频采集终端硬件结构

在本设计中,充分利用了S3C2410X所继承的片上资源,只需要扩充SDRAM、Nand Flash、4X4 Array Keyboard、USB Host、Ethernet Interface、RS232 Interface、JTAG、Power等模块。视频采集终端是整个系统的核心模块之一,主要完成视频捕获和图像压缩,其硬件逻辑结构框图如图2所示:

基于嵌入式Linux的无线视频监控系统设计,基于嵌入式Linux的无线视频监控系统设计,第3张

图2 视频采集终端硬件逻辑框图

2 视频采集模块设计与实现

视频捕获模块是整个视频采集终端的核心。它通过嵌入式Linux *** 作系统调度V4L (video4linux)和影像设备驱动程序来完成视频捕获。V4L 是Linux影像系统与嵌入式影像的基础,是Linux kernel里支持影像设备的一组APIs,配合适当的视频采集卡与视频采集卡驱动程序,V4L可以实现影像采集、AM/FM无线广播、影像CODEC、频道切换等功能。目前,V4L 主要应用在影像串流系统与嵌入式影像系统里,其应用范围相当广泛,比如:远程教学、远程医疗、视频会议、视频监控、可视电话等。V4L为2层式架构,最上层为V4L驱动程序,最下层则是影像设备驱动程序。

在Linux *** 作系统中,外部设备都作为设备文件来管理,因此,对外部设备的 *** 作就转变成对设备文件的 *** 作。视频设备文件位于/dev/目录下,一般情况下为video0。当摄像头通过USB接口连接到视频采集终端后,在程序中调用V4L APIs对设备文件video0的读 *** 作即可实现摄像头视频数据采集。其主要过程如下:

1) 打开设备文件: int v4l_open(char *dev, v4l_devICe *vd){}打开影像源的设备文件;

2) 初始化picture: int v4l_get_picture(v4l_device *vd){} 获取输入的影像信息;

3) 初始化channel:int v4l_get_channels(v4l_device *vd){} 获取每个channel的信息;

4) 对channel设置norm:int v4l_set_norm(v4l_device *vd, int norm){} 对所有的channel设置norm;

5) 设备地址映射:v4l_mmap_init(v4l_device *vd){} 返回存放图像数据的地址;

6) 初始化mmap缓冲区: int v4l_grab_init(v4l_device *vd, int width, int height){};

7) 视频捕获同步: int v4l_grab_sync(v4l_device *vd){};

8) 视频捕获: int device_grab_frame(){}。

通过以上 *** 作,即可将摄像头视频数据采集到内存。采集到内存的视频数据既可采用文件的形式保存,也可将其压缩后封装进数据包,通过网络传输到数据处理中心。本设计采用后一种处理方法,即:先将采集的视频数据进行JPEG压缩,再将其封装进数据包传输到视频应用服务端处理。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/2643680.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-12
下一篇 2022-08-12

发表评论

登录后才能评论

评论列表(0条)

保存