摘要:针对数字网路视频监控系统的需求,设计一种基于MPEG-4网路视频服务器。使用基于MPG440的MPEG-4实时视频压缩卡压缩采集到的音视频数据,借助循环队列实现音视频数据的压缩,同时运用多线程技术以及传输机制解决网路数据的传输,进而有效克制了画面不清晰、音视频不同步、马赛克等现象,保证顾客监看时音视频实时性和同步性。经过实验证明linux 视频采集 软件,该方案经济高效,可应用在多种须要音视频监控的场合。
关键词:嵌入式系统;Linux;S3C2410;网路视频监控
随着计算机技术和网路技术的发展,在单片机领域也发生着日新月异的改变,如高速讯号处理器、SoC片上系统等新技术、新应用如雪后莴笋般蓬勃发展上去。在现实生活中时常会碰到这样一些问题:例如怎样对机房的温温度进行远程监控;怎么一手把握家里的安全状况,这都须要应用一种耗电量小、24小时不间断工作redhat linux,容积小的远程视频监控系统。
针对网路视频监控设备的实际应用需求,结合图象采集压缩编码、嵌入式系统和网路技术等几方面的新技术,设计了一套嵌入式网路视频监控系统,用以实现视频数据的采集、压缩与网路传输。该系统基于S3C2410的ARM920920T芯片和嵌入式Linux操作系统,采用USB摄像头捕捉视频,经MPG440芯片压缩编码,系统直接与网路相连,用户使用标准的网路浏览器和流媒体播放程序即可查看远程视频影像。
1系统总体设计
系统总体设计包括硬件设计和软件设计2部份。硬件设计模块主要包括微控制器模块、压缩编码模块、网络插口模块3部份。微控制器模块主要由主控芯片、DATAFLASH和SDRAM组成。其中,主控芯片是整个控制系统的核心,它负责整个系统的调度工作。DATAFLASH中固化了嵌入式Linux内核及其文件系统、应用软件和系统配置文件。SDRAM作为显存供系统运行使用。压缩编码模块由视频数据采集芯片、MPEG-4压缩编码芯片、SDRAM组成linux makefile,负责将视频流转化为MPEG-4帧率。网路插口模块主要是配合主控芯片传送MPEG-4码率。当系统启动时,微控制器将Linux内核调入SDRAM中,系统从SDRAM中启动。系统启动后,微控制器控制MPEG-4编码模块进行工作。
软件设计部份主要包括嵌入式Linux移植、视频采集与MPEG-4压缩编码模块、JRTPLIB网路传输模块和MPEG-4解码程序4部份。嵌入式Lin-ux系统储存到由S3C2410控制的DATAFLASH中,它负责整个系统软件的调度工作。MPEG-4压缩编码模块主要负责将采集到的视频流压缩为MPEG-4数据流。JRTPLIB网路传输模块主要负责MPEG-4视频流传输与控制的相关设置。MPEG-4解码程序主要负责对通过网路得到的MPEG-4数据流进行解码工作。
2硬件系统设计
系统的硬件平台采用Samsung公司的处理器S3C2410。该处理器内部集成了ARM公司ARM920920T处理器核的32位微控制器,资源丰富:带独立的16kB指令Cache和16kB数据Cache,还有LCD控制器、RAM控制器、NAND闪存控制器、3路UART、4路DMA、4路带PWM的Timer、并行I/O口、8路10位ADC、TouchScreen插口、I2C插口、I2S插口、2个USB插口控制器、2路SPI,显存最高可达203MHz。在处理器丰富资源的基础上,还进行了相关的配置和扩充,平台配置了16MB,16位的FLASH和64MB,32位的SDRAM。通过以太网控制器芯片DM9000扩充了一个网口,另外引出了一个HOST、USB插口,通过在USB插口北外接一个带USB插口的摄像头。硬件系统结构如图1所示。
3软件系统设计
Linux具有内核小,效率高,源代码开放,内核直接提供网路支持等优点。但嵌入式系统的硬件资源虽然有限,因而不能直接把Linux作为操作系统,要针对具体的应用通过配置内核、裁减shell和嵌入式C库对系统进行订制,使整个系统才能储存到容量较小的FLASH中。Linux的动态模块加载,使Linux的裁减极为便捷,高度模块化的部件使添加特别容易。嵌入式Linux系统主要由4个部份组成:引导内核启动的文件(bootloader)、Linux内核文件(kernel)、虚拟c盘文件(ramdisk)、用户空间文件(user)。它们分别被置于DATAFLASH内的4个分区模块中。依据不同模块的具体功能采用不同的文件系统,如:bootloader,kernel,ramdisk等,移植完成后不须要动态改变,使用较节约空间的ROM-FS只读文件系统;user模块内放置一些可以动态更新的配置文件等,须要进行较多的读写操作,所以使用支持动态擦写保存的JFFS2文件系统。基于Linux的上述优点,实现的平台使用操作系统μclinux。一般嵌入式系统软件的开发采用交叉编译调试方法。宿主机一般为Intel处理器,而目标板如图1所示为S3C2410,因而程序须要使用针对处理器特性的编译器能够生成在相应平台上可运行的代码。对于嵌入式Linux,宿主机PC上应安装Linux系统,然后在宿主机上构建交叉编译调试的开发环境。采用移植性很强的C语言在宿主机上编撰视频采集程序,再借助交叉编译调试工具编译链接生成可执行代码,最后向目标平台移植。
Linux移植技术早已成熟,在此不做详尽论述linux 视频采集 软件,主要介绍USB摄像头驱动、基于V4L设计的视频采集模块和JRTPLIB网路传输模块的程序设计。