分析以嵌入式分析以嵌入式Linux与与S3C2410平台为基础的视频采集平台为基础的视频采集
在我们的生活当中经常会遇到这样一些问题:比如如何对机房的温湿度进行远程监控;如何一手掌握家里的安
全状况,这都需要应用一种耗电量小、24小时不间断工作,体积小的远程视频监控系统。针对数字网络视频监
控系统的需求,设计一种基于MPEG-4网络视频服务器。使用基于MPG440的MPEG-4实时视频压缩卡压缩采集
到的音视频数据,利用循环队列实现音视频数据的压缩,同时运用多线程技术以及传输机制解决网络数据的传
输,从而有效克制了画面不清晰、音视频不同步、马赛克等现象,保证客户监看时音视频实时性和同步性。经
过实验证明,该方案经济高效,可应用在多种需要音视频监控的场合。 1 系统总体设计 系统总体设计
包
在我们的生活当中经常会遇到这样一些问题:比如如何对机房的温湿度进行远程监控;如何一手掌握家里的安全状况,这
都需要应用一种耗电量小、24小时不间断工作,体积小的远程视频监控系统。针对数字网络视频监控系统的需求,设计一种
基于MPEG-4网络视频服务器。使用基于MPG440的MPEG-4实时视频压缩卡压缩采集到的音视频数据,利用循环队列实现音
视频数据的压缩,同时运用多线程技术以及传输机制解决网络数据的传输,从而有效克制了画面不清晰、音视频不同步、马赛
克等现象,保证客户监看时音视频实时性和同步性。经过实验证明,该方案经济高效,可应用在多种需要音视频监控的场合。
1 系统总体设计系统总体设计
系统总体设计包括硬件设计和软件设计2部分。硬件设计模块主要包括微控制器模块、压缩编码模块、网络接口模块3部
分。微控制器模块主要由主控芯片、 DATAFLASH和SDRAM组成。当系统启动时,微控制器将Linux内核调入SDRAM 中,
系统从SDRAM中启动。系统启动后,微控制器控制MPEG-4编码模块进行工作。
软件设计部分主要包括嵌入式Linux移植、视频采集以及MPEG-4压缩编码模块、JRTPLIB网络传输模块和MPEG-4解码程
序4部分。嵌入式 Lin-ux系统存放到由S3C2410控制的DATAFLASH中,它负责整个系统软件的调度工作。JRTPLIB网络传输
模块主要负责MPEG-4视频流传输与控制的相关设置。MPEG-4解码程序主要负责对通过网络得到的 MPEG-4数据流进行解码
工作。
2 硬件系统设计硬件系统设计
系统的硬件平台采用Samsung公司的处理器S3C2410。该处理器内部集成了ARM公司ARM920T处理器核的32位微控制
器,资源丰富:带独立的16 kB指令Cache和16 kB数据Cache,还有LCD控制器、RAM控制器、4路带PWM的Timer、并行I/
O口、8路 10位ADC、TouchScreen接口、I2C接口、I2S接口、2路SPI,主频可达203 MHz。通过以太网控制器芯片DM9000
扩展了一个网口,另外引出了一个HOST、USB接口,通过在USB接口上外接一个带USB 接口的摄像头。硬件系统结构如图1
所示:
3 软件系统设计软件系统设计
Linux具有内核小,效率高,源代码开放,内核直接提供网络支持等优点。嵌入式Linux系统主要由4个部分组成:引导内
核启动的文件(bootloader)、Linux内核文件(kernel)、虚拟磁盘文件(ramdisk)、用户空间文件(user)。它们分别被
放在 DATAFLASH内的4个分区模块中。宿主机通常为Intel处理器,而目标板如图1所示为S3C2410,因此程序需要使用针对
处理器特点的编译器才能生成在相应平台上可运行的代码。对于嵌入式Linux,宿主机PC上应安装Linux系统,之后在宿主机
上建立交叉编译调试的开发环境。
3.1 USB摄像头驱动摄像头驱动
在Linux下,设备驱动程序可以看成是Linux内核与外部设备之间的接口。设备驱动程序向应用程序屏蔽了硬件实现的细
节,使得应用程序可以像操作普通文件一样来操作外部设备,可以使用并操作文件中相同的、标准的系统调用接口函数来完成
对硬件设备的打开、关闭、读/写和I/O控制操作,而驱动程序的主要任务也就是要实现这些系统的调用函数。
Video4Linux(V4L)是Linux中关于视频设备的内核驱动,是针对视频设备应用程序编程提供的一系列接口函数。对于
USB口摄像头,其驱动程序中需要提供基本的I/O操作接口函数open,read,write,close来实现。当应用程序对设备文件进
行系统调用操作时,Linux内核将通过file-operations结构访问驱动程序提供的函数,在系统平台上对USB口数码摄像头进行驱
动,首先把USB控制器驱动模块静态编译进内核,使平台中支持USB接口,再在需要使用摄像头采集时,使用insmode动态加
载其驱动模块,这样摄像头就可正常工作。
3.2 基于基于V4L设计的视频采集模块设计的视频采集模块
在Linux下,所有外设都被看成是一种特殊的文件,称为设备文件。系统调用的是内核与应用程序之间的接口,而设备驱
动程序则是内核与外设之间的接口。他完成设备的初始化和释放,对设备文件的各种操作和中断处理等功能,为应用程序屏蔽
了外设硬件的细节,使应用程序可以像普通文件一样对外设进行操作。 Linux下的视频采集过程如图2所示:
Linux系统中的视频子系统Video4Linux为视频应用程序提供了一套统一的API,视频应用程序通过标准的系统调用即可操
作各种不同的视频捕获设备。Video4Linux向虚拟文件系统注册视频设备文件,应用程序通过操作视频设备文件实现对视频设
评论0
最新资源