CNET中国旗舰网站

ZDNet China | CNET科技资讯网 | 政府采购 | 行业网站联盟





 
标题: [转贴] 基于Intel PXA255平台的网络摄像机设计
ly5418
初级会员




UID 321554
精华 0
积分 117
帖子 6
威望 52
ZD币 26 元
阅读权限 25
注册 2008-4-23
状态 离线
  楼主
发表于 2008-4-23 16:32  资料  个人空间  短消息  加为好友 
开发者在线

基于Intel PXA255平台的网络摄像机设计

摘要:随着网络和多媒体技术的广泛应用,数字网络视频得到了飞速发展。尤其在监控领域,将传统的模拟视频监控信号转换为数字视频信号,并且利用现有IP网络设计一个不受距离限制的廉价通用网络视频监控设备成为了新的热点。本文根据这方面的应用需求提出一种设计方案。本方案的实现平台是基于IntelPXA255的嵌入式硬件平台以及基于嵌入式Linux的软件平台,采用先进的MPEG-4编码标准。最终实现一个具有实时视频采集压缩及传输功能的可以直接接入以太网的网络摄像机。
                关键词:PXA255 Linux MPEG-4 网络摄像机 流媒体技术
            1 系统概述
            本方案设计的是基于IP网络的实时视频采集、处理及传输系统。整个系统在嵌入式软硬件构架上实现,无需其它设备协助就能独立完成通用目的视频应用,比如视频监控和网络视频会议。
            1.1 硬件系统概述
            整个系统除摄像头部分外都是在IntelPXA255评估平台Sitsang(简称Sitsang板)上面实现的。Sitsang板以PXA255为核心,配备了大量的硬件资源,其中通信接口中的以太网控制器和USB Host控制器在本系统中尤为重要。Sitsang板采用Standard MicrosystemsLAN91C96以太网控制器,它通过U52与网络相连,支持IEEE802.3的10Mb/s模式。Sitsang板采用PhilipsISP1161作为USB Host控制器,使用USB Host接口可以使Sitsang板与视频采集摄像头相连。以太网控制器和USBHost控制器通过数据总线收发器(74LVCH32245)以及地址、数据总线驱动器(74LVCH32244)与PXA255相接。整个硬件系统如图1所示。
            1.2 软件系统概述
            整个系统软件是在嵌入式Linux基础之上构建的。Sitsang板使用的嵌入工Linux内核是在linux-2.4.19内核上打上patch-2.4.19-sitsang2这个补丁后编译而成。Sitsang板使用的文件系统是针对Flash的无缓冲机制的jffs2文件系统,文件系统中包含应用程序、模块、配置文件、图形界面和库等。Sitsang板使用的是基于Qt/Embedded的图形界面系统。视频信号的采集、压缩和传输是建立在图形界面和嵌入式Linux内核之上的。整个软件系统如图2所示。
            2 系统设计
            系统的设计目标是设计一个工作在Sitsang/Intel PXA255和嵌和试Linux平台上,内置视频Web服务器,采用MPEG-4编码标准,支持相关网络传输协议的网络摄像要。系统的设计可以被分为以下几个大部分:
            *嵌入式Linux内核的移植和编译,文件系统和图形界面系统的安装;
            *基于嵌入式Linux视频采集模块的设计;
            *视频图像压缩模块的设计;
            *基于嵌入式Linux的网络视频流服务模块的设计。
            2.1 Linux内核、图形界面系统及文件系统的安装
            2.1.1 嵌入式Linux内核的定制
            工作在Sitsang板上的嵌入式Linux内核的定制步骤与其它嵌入式平台的开发步骤相似,具有一定的通用性,所以在这里将不再详述,但是要注意两点。
            ①在解压缩Linux内核源代码后,假设源代码是linux-2.4.19.sar.gz,需要为源代码打上Sitsang板的支持补丁:%gzip-dc patch-2.4.19-sitsang2.gz|patch-p0。
            ②在使用make menuconfig定制内核时,注意要让内核支持USB接口的摄像头,具体步骤为:在制定菜单中选择Multimediadevices→Video for Linux,这使得内核被配置了Video4Linux,为视频采集设备提供了编程接口;在菜单中选择USBSupport→USB Multimedia devices→USB OV511 CameraSupport,这使得在内核中加入了对4采用OV511接口芯片的USB数字摄像头的驱动支持。
            2.1.2 图形界面系统的编译与安装
            Sitsang板使用的是基于Qt/Embedded的图形界面系统,Qt/Embedded的编译主要分为三个步骤:
            ①编译Qt/X11,Qt/X11是运行在IBM兼容PC中标准Linux这上的,这主要为Qt/Embedded及其应用程序提供图形编译环境及仿真运行环境;
            ②编译Qt/Embedded,Qt/Embedded为在嵌入式Linux平台上运行的图形界面系统及应用程序提供一系列的函数库;
            ③编译Qtopia,通过使用Qt/X11提供的编译工具以及Qt/Embedded提供的函数库,编译出最终基于嵌入式Linux平台的图形界面系统及该环境下的应用程序。
            2.1.3 文件系统的安装
            在嵌入式平台上用作非易失存储的设备一般是Flash,因而在嵌入式平台上除了广泛使用的ext2文件系统外,还经常使用jffs2文件系统。作为日志型文件系统,jffs2直接写到非易失存储器上,而不使用如ext2的缓冲机制,这样在随时断电的情况下够保护用户的资料。直接使用mkfs.jffs2生成Sitsang板上的jffs2文件系统。
            2.2 基于嵌入式Linux视频采集模块的设计
            在嵌入式Linux的内核定制和编译阶段,已经加入了对Video4Linux模块以及OV511设备的支持,所以运行在Linux下的视频图像采集程序,可以通过Video4Linux模块提供的编译接口(API)从OV511设备中获取图像帧。
            ①加载USB及OV511设备驱动模块,同时加载Video4Linux模块。分别使用命令:modprobe usbcor、modprobeusb-uhci、modprobe vodeodev和modprobeov511。加载后将生成视频设备文件/dev/video0,为了和Video4Linux模块相协调,使用ln-s/dev/video0/dev/video为Video4Linux模块的默认视频设备voideo与物理视频设备video0建立连接。
            ②使用Video4Linux模块提供的API进行视频采集程序的设计。Video4Linux模块的视频采集接口设备为/dev/video,采集程序打开此接口设备并扫描 它以寻找自己所需要的数据。
            这里将简要介绍一下Video4Linux模块提供的主要API函数:VIDICGCAP函数以数据结构video_capability返回视频采集设备的性能参数;VIDIOCSFBUF函数使用数据结构video_buffer设备采集设备的帧缓存参数,如果设备不支持帧缓存则此调用无效;VIDIOCGWIN函数使用数据结构video_window来设备采集窗口参数,使用参数1调用VIDIOCCAPTURE则开始视频信号采集,使用参数0则结束采集;VDIOCGCHAN函数用来查询不同的采集通道(包括音频信道),使用数据结构video_channel返回通道属性;VIDIOCSPICT函数使用数据结构video_picture来获取和设置采集图像帧的属性,比较重要的是图像帧的调色板参数;read函数读取采集通道中效的下一帧图像,所读取的图像格式和尺寸由前面介绍的VIDIOCSPICT函数和VIDIOCGWIN函数决定,这些API函数以及数据结构定义在头文件<linux/videodev.h>中。
            整个视频采集模块的工作流程见图3。
            2.3 视频图像压缩模块的设计
            由视频采集模块获取的视频图像需要在以太网上传输,为了提高传输效率从而提高视频图像质量,则需要将原始的视频图像进行压缩编码。本系统采用先进的MPEG-4标准对视频图像进行压缩编码,在几种开放源代码的MPEG-4编码软件中,选择xvidcore作为本系统中视频图像压缩模块中的核心算法。xvid是一个高效的而且具有可移植性的编码软件,目前版本为xvidcore-1.0.1。xvid支持Simple Profile和AdvancedProfile,支持I/PFrames、B-Frames、Interlacing和GMC,以钻石和方块模式来进行PMVFast和EPZS运行估计,是目前比较流行的MPEG-4编码软件。
            对xvidcore-1.0.1进行交叉编译比较简单,有以下主要步骤。
            ①解压缩xvidcore源代码:tar-zxvf xvidcore-1.0.1.tar;
            ②设置环境变量:export xvidcore="the path of xvidcore";cd $xvidcore/build/generic;
            ③生成makefile:./configure-host=localhostbuild=arm-linux-gcc;
            ④编译源代码:make;make install;
            ⑤将交叉编译生成的库文件libxvidcore.so.*拷贝到交叉编译器工作目录的lib子目录中,该库文件为系统的其它模块提供了编程接口。

    2.4 基于嵌入式Linux的网络视频流服务模块设计    2.4.3 流视频协议
            2.4.1 Linux中流数据的操作
            在本设计中,数据在整个系统中是以流数据的形式存在的,Linux内核为流数据提供了一个标准的编程接口,这种接口为数据从外部设备经内核到达用户进程提供了一个全双工通道。在这个通道中,数据的处理模块是作为可选的中间件由用户动态加载的,上面设计的视频压缩模块就是这样的一个中间件。
            2.4.2 ASF流式文件格式
            本系统主要是用于实时视频应用,所以需要系统提供对流式文件格式的支持,这样在接收方利用标准的流视频播放软件,如MMediaPlayer就可以观看实时传输的视频.在本系统中采用了开放的ASF流格式.压缩后的视频数据在传输前需要对其进行ASF编码.ASF文件的基本组织单元为ASF对象,每个对象由三个域组成:对象标识符域、对象大小域和对象数据域。ASF文件的高层逻辑结构也包含三部分:头对象、数据对象和索引对象。其中,头对象包含了许多全局信息,数据对象则包含了所有待播放的数据,头对象必须在数据对象之间被接收方接收并解释。


            流视频协议是为了在客户机和视频服务器之间进行通信而设计和标准化的。根据它们的功能,与网络上流视频相关的协议分为三类。
            *网络层协议:网络层协议提供了基本的网络服务支持。IP就是网络上流视频使用的网络协议。
            *传输协议:传输协议为流服务提供端对端的网络传输功能。TCP、UDP、RTP和RTCP就是网络上流视频使用的传输协议。
            *话路控制协议:话路控制协议定义消息和程序。RTSP就是一种话路控制协议。
            为流视频设计的协议栈如图4所示。在发送方的数据面,压缩且经过ASF编码的视频数据被读出并在RTP/RTCP/RTSP层上打包,以提供定时和同步信息以及包的序列号。然后把这些打包的RTP数据流发送到UDP/TCP层和IP层,得到的IP包在网络上传输。在接收方则按照相反的方向处理。在控制面,RTCP包和RTSP包在UDP/TCP层上复用,并且被送到IP层,以便通过网络传输。
            3 小结
            本文提出了一种基于IntelPXA255嵌入式微处理器和嵌入式Linux网络摄像机的设计方案,系统采用先进的MPEG-4编码标准,得到了较高的压缩比。经测试、在50Kbps~100Kbps的带宽下,对CIF(352×288,30fps)格式的视频有较好的表现能力。满足了在目前宽带环境中的网络视频会议以及视频监控的要求,其应用十分广泛。




顶部
热点频道推荐: C/S开发| 数据库| WEB开发| 嵌入式| 项目管理|
 


操作系统 数据库 中间件 应用软件 管理软件 Web应用 AJAX Linux Web2.0 RIA 开源 SOA OSS SEO Vista SharePoint Windows Server Windows 2003 Windows 2008 IIS 动态语言 Windows IE7 Oracle Oracle11g office SQLServer Firefox Solaris Ubuntut 微软Google 资讯 博客 技术看板 英雄 图片 QQ 腾讯QQ 珊瑚虫QQ 金山上市 站点图 AJAX BI BPM CRM DNS Android SQL Server 2008 EAI Enterprise 2.0 ETL ERP Flash GPL3 Java j2me JavaEE LAMP mashups NTFS ODBC ODF OOP Outsourcing RIA RSS SOA UML Web2.0 Workflow XAML XML ZFS 备份 并发控制 并行计算 动态语言 多核计算 虚拟技术 CRM 数据仓库 虚拟化 Apollo Apache BizTalk DB2 Eclipse Excel Expression Flex3 Fedora7 Forefront FreeBSD Hibernate IE 7 IIS JavaFX JBoss Linspire live Maxthon Mobile 6.0 Mozilla MySQL office OneCare OpenOffice Solaris Oracle Oracle 11g SQL Server Opera Outlook Photoshop PostgreSQL PowerBuilder PowerShell Rational RHEL ROR Salesforce Server Core Solaris SugarCRM TFS Tomcat Ubuntut Vista VMWare VPC VSTS WCF WebLogic WPF Xandros Xen KDE GNOME 火狐浏览器 Gmail 邮箱 Exchange server AJAX BI BPM EAI ETL ERP CRM DNS Flash Java JavaEE j2me LAMP NTFS ODBC ODF OOP Outsourcing RIA RSS SOA SEO Web2.0 mash up Workflow XAML XML GPL 3协议 ZFS 备份 并行计算 多核 数据仓库 搜索 并发控制 并行计算 动态语言 虚拟化 虚拟技术 Enterprise Web2.0 软件技术资讯 操作系统 Windows Server 2008 Windows Server 2008专题 系统安全 IIS 虚拟机 Windows Linux 嵌入式操作系统 Vista专区 数据库/数据仓库 MySQL & PostgreSQL & Sybase Oracle 10g / 9i / 11g SQL SERVER DB2 中间件/SOA QQ2009下载 QQ QQ群 QQ炫铃 QQ视频 QQ好友 木马病毒 QQ2007 江民 瑞星 金山毒霸 协作办公 ODF/OOXML SharePoint office web应用 浏览器 SaaS/S+S Microsoft技术 操作系统软件数据库软件中间件软件

软件频道2008年3月精华 软件频道2008年2月精华 软件频道2008年1月精华 软件频道12月精华 软件频道11月精华 软件频道10月精华 软件频道9月精华 软件频道8月精华 软件频道7月精华 软件频道6月精华 软件频道5月精华 软件频道4月精华 软件频道3月精华 软件频道2月精华 软件频道1月精华


当前时区 GMT+8, 现在时间是 2008-9-6 15:29

  Powered by Discuz! 5.5.0 © 2001-2007 Comsenz Inc.
Processed in 3.742152 second(s), 8 queries

清除 Cookies - 联系我们 - ZDNetChina中文社区 - 无图版