·75·29(4) Ordnance Industry Automation
doi: 10.3969/j.issn.1006-1576.2010.04.024
基于Davinci的嵌入式Web视频监控系统
韩慧英,潘娅
(西南科技大学 计算机科学与技术学院,四川 绵阳 621002)
摘要:针对目前监控方案的主流压缩算法存在的不足,提出一款嵌入式Web视频监控系统的设计方案。系统以TI高速双核信号处理器TMS320DM6446和嵌入式linux操作系统为平台,通过DSP端进行视频信号的H264数据压缩,在ARM端采用流媒体技术通过网络传播实时视频流。详细论述系统的总体设计和软件设计,列出Davinci技术的优势。结果表明,在Davinci技术的支持下,采用压缩比更高的H264压缩算法在DSP端进行视频编码,既能保证视频质量,还能提高算法的运行速度。
关键词:达芬奇;嵌入式Web服务器;H264;流媒体;live555 中图分类号:TP393.08 文献标识码:A
Embedded Web Video Monitoring System Based on Davinci
HAN Hui-ying, PAN Ya
(School of Computer Science & Technology, Southwest University of Science & Technology, Mianyang 621002, China) Abstract: For the mainstream compression algorithm’s shortcomings of the current monitoring program, an embedded web video monitoring system is put forward. Based on TI’s high-speed dual-core TMS320DM6446 and embedded linux operating system platform, the H264 video compression is done in DSP side, and the real-time video streaming is disseminated through network by streaming media technology in ARM-side. The overall design and software design are discussed in detail and Davinci technology advantage is listed. The results show that video encoding using H264 higher compression algorithms in DSP side by the Davinci technology can ensure video quality and improve the algorithm speed.
Keywords: Davinci; Embedded web server; H264; Streaming media; Live555
0 引言
随着社会进步和科学技术的发展,以网络为基础的嵌入式数字视频监控系统成为视频监控系统发展的主流。文献[1-2]均在ARM平台上实现了视频监控,但当数据量很大时,压缩算法的运行速度成为保证实时性的瓶颈。文献[3]虽然保证压缩速度,但是采用专用视频压缩芯片价格高,且不易于压缩算法的升级换代。文献[4]提出了基于RTP的MPEG-4视频监控系统的设计,虽然有效地解决了采集后视频的编码问题,但是没能实现用户的零维护。这些方案均表明MPEG4仍是目前监控方案的主流压缩算法。故设计一款基于Davinci平台的嵌入式Web视频监控系统方案。
频信号编码压缩,并完成对压缩后的视频信号的存储及网络传输,把客户端的控制信号传送到相应的外部设备;客户端主要完成视频信号的接收和解压缩,用户可以通过浏览器观看监控端采集到的视频,同时把用户的操作转换成相应的控制信号发送到中心控制部分,如播放、停止、快进、快退视频等。
监控端视频采集摄像头中心控制视频压缩视频传输计算机网络 客户端浏览器浏览器浏览器视频存储 图1 系统总体结构图
2 Davinci技术优势
基于开放式模块化架构的Davinci技术[56]是一个集优化的Davinci系列处理器、各种系统和应用软件/算法、开发工具/开发平台、以及第三方技术支持环境于一体的完整开发平台。完整的Davinci软件架构涵盖底层的驱动程序乃至应用API,屏蔽了数字视频实现的复杂性,大大缩短产品的开发周期,降低系统的成本。Davinci支持的这种架构,可
-
1 系统总体结构
网络视频监控系统总体结构如图1。系统由监控端、中心控制、客户端组成。监控端的摄像头实现对现场实时视频的采集,并把视频信号传送到中心控制部分;中心控制部分是基于Davinci双核处理器和Linux的嵌人式系统,对监控端采集到的视
收稿日期:2009-10-17;修回日期:2009-12-04 作者简介:韩慧英(1985-),女,山西人,西南科技大学在读硕士,从事嵌入式系统应用研究。
·76·
兵工自动化
系统应用软件的结构如图3。
第29卷
HTTP TCP/IP 浏览器 在APL(Application Program Level)与SPL(Signal Process Level)之间保持一个统一的接口。因为有了统一的接口,APL与SPL的开发就成了并行过程;嵌入式平台上算法的动态更换成了现实,只要SPL层代码具有相同的接口,易于算法升级;使对不同的操作系统及硬件平台的支持成为现实,只要移植基于相应平台及操作系统的DSPLink及CMEM,就可以实现对上层应用研究的支持。Davinci平台的标准化、模块化、开放性架构保证了可最大程度地重复利用现有的工程资源,从而可快速地升级应用。
系统采用基于Davinci技术的DM6446硬件平台。根据功能不同,包括模块:1) 处理器模块,包括ARM926EJ-S子系统和C64x+DSP子系统,用于实现系统控制和视频压缩算法的实现;2) 视频输入模块,包括视频处理前端,用于实现前端视频信号采集;3) 存储模块,包括硬盘、DDR、NOR,用于系统初始化代码存放、视频处理代码及视频数据的存储;4) 以太网物理层电路模块,用于网络传输。
嵌入式Web服务器 CGI程序 H264编码服务器视频文件存储管理H264数据视频 请求 RTSP H264 LiveMdeia流媒体服务器 H264文件RTP/UDP/IP 图3 系统软件结构
3.2.1 嵌入式Web服务器
Web服务器通过HTTP协议与监控端浏览器进行信息交互,提供其他应用程序模块的接口以及视频数据浏览界面。系统采用移植Apache Web Server来实现嵌入式Web服务器。由于受嵌入式系统硬件资源的限制,实现系统动态Web的交互技术,采用系统资源消耗相对少的CGI技术。CGI程序实现外部扩展应用程序与Web server交互,给Web服务器提供一个执行外部程序的通道。实现对监控端的访问进行身份验证;响应监控端的请求,为监控端提供所需要的视频图像;由于客户端采用浏览器进行实时监控,需要接收视频数据并进行解码和播放,系统采用在HTML页面中嵌入与live media Server 对应的VLC Plug-in的方案,并在网页代码中设置下载路径,使得客户端访问服务器时下载并安装控件,从而实现在监控页面远程监控的功能;客户端Plug-in通过一个描述文件所提供的客户端浏览器Plug-in应用程序存取流媒体服务器中视频信息所需要的参数,直接和流媒体服务器交互,到达的视频信息由Plug-in播放。Plug-in通过RTSP协议和流媒体服务器交互信息来初始化、建立和控制流媒体服务器视频会话流。 3.2.2 H264编码服务器
系统选择比较前沿的H.264编码方案。H.264继承了H263和MPEG1/2/4的可取之处,在吸收变换编码和运动补偿技术的基础上,采用全新的帧内预测、多帧参考预测、高精度运动估计等编码技术,提高了数据编码压缩效率。与H.263和MPEG相比,压缩比更高,节省存储空间,图像质量更好,它引入了面向包的编码机制,有利于网络中的分组传输,支持网络中视频的流媒体传输,能适应于不同网络中的视频传输,网络亲和性好。这里采用基于TI Davinci技术来实现的H264编码服务器,此视频压
3 系统的软件设计
3.1 系统的选用和视频采集模块
由于目前DM6446只支持Linux和WinCE嵌入式操作系统,出于功能和价格的考虑,这里选用MontaVista提供的基于Linux2.6.10内核的MontaVista Linux专业版4.0。该操作系统具有实时性高、可抢占式多任务并发的特点,能充分利用系统资源,完成多任务调度。通过Linux标准API接口(如open、close、ioctl等),能以简单直接方式访问各种外围设备和视频源,屏蔽掉许多底层接口细节,加速视频系统的开发。设计中根据系统需求进行裁剪,在交叉编译环境下重新对裁减过的MontaVista Linux进行编译。系统选用montavista内核已支持的Swann C510R CCD摄像头。然后使用V4L2驱动程序提供的API函数集来编写视频采集程序。Linux下视频采集流程如图2。
开始 通过open函数打开视频采集设备 通过ioctl函数设置设备属性设置图像采集格式 调用mmap函数实现内存地址空间映射 开始循环采集视频数据流 通过close函数关闭视频采集设备 结束 通过ioctl函数为设备分配数据缓存 图2 视频采集流程图
3.2 嵌入式系统软件设计
第4期
韩慧英,等:基于Davinci的嵌入式Web视频监控系统
·77·
缩算法运行在DSP端,ARM端通过引擎Codec
-Engine[67]和服务器Codec Server[6]与DSP进行交互。实现基于Davinci技术的H264编码服务器需要完成Codec Server和Codec Engine的集成,通过应用程序对VISA APIs的调用,来使用此编码服务器。 3.2.3 H264 LiveMedia流媒体服务器
RTP[89]是目前解决流媒体实时传输的最好办法。RTP通常使用UDP来传送数据,它并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制或拥塞控制,而是依靠RTCP提供这些服务。RTP与RTCP配合使用,能以有效的反馈和最小的
-开销,兼顾视频传输的实时性与QoS保证。RTSP[910]是多媒体流化表示控制协议,负责传输流的控制,提供对媒体流的控制功能,如播放、暂停、快进等。
对H264流媒体服务器的设计基于LiveMedia[11]
库,开源代码live555基于RTSP/RTP,是用来实现流媒体传输功能的SDK,它已经提供了MPEG1/2/ 4和音频流的支持,但没有支持H264,因为没有为H264商定的文件格式和帧封装方式。
11 13 Framed Framed MultiFramedGroupRTPSink Source Source sock4 -
VideoBufferQueue队列,为VideoBuffer提供的入队/出队函数,而VideoBuffer是简单的buffer指针和size的封装,buffer中存放着H264编码后的视频数据。H264编码器在线程中将buffer入队,当Source检测到队列中有buffer时,就出队列送到Sink。
Sink通过getNextFram函数从相关Source登记并取得希望的下一帧,当Source上的帧有效时,Source立即通知sink通过afterGetting函数回调帧。然后送到RTP端口进行打包传输。
4 客户端浏览
系统在监控端使用浏览器对监控现场监控,由于Web服务器在HTML页面中嵌入VLC Plug-in,并在网页代码中设置了下载路径,使客户端访问服务器时自动下载并播放。浏览器所运行的平台与嵌入式Web服务器所运行的平台独立,实现跨平台。
5 结束语
基于Davinci双核嵌入式平台,设计了嵌入式Web网络视频监控系统,在H264算法和高速DSP芯片的支持下,保证了视频质量和实时要求,可用于各种无人值守场所和需要远程监控的领域。由于采用了新一代Davinci技术的开放式架构,有利于今后算法以及系统的维护和升级,应用前景广阔。
8 7 9 6 10 5 2 3 12 H264 Video TRTP Sink 1 MediaSink MyH264 Video Stream Framer H264 FUA Frag menter 参考文献:
[1] 杨念, 李峰. 基于B/S的嵌入式视频监控系统的设计与
实现[J]. 计算机工程与设计, 2008, 29(21): 5576-5579. [2] 刘云, 卢少同, 周亮. 网络视频监控系统的设计与实现
[J]. 微计算机信息, 2009, 25(3): 129-131.
[3] 汪庆年, 李桂勇, 元美玲. 基于S3C2410网络视频监控
系统的设计与实现[J]. 安防科技, 2008(1): 25-27.
[4] 景慧燕, 唐存琛, 马玉利. 基于RTP的MPEG-4视频监
控系统的设计[J]. 计算机工程与设计, 2006, 27(8): 1439-1441.
[5] Texas Instruments. TMS320DM6446 DigitalMedia
System-on-Chip[EB/OL].http://www-s.ti.com,2007.
[6] 彭启琮. 达芬奇技术-数字图像/视频信号处理新平台
[M]. 北京: 电子工业出版社, 2008: 36-99.
[7] Texas Instruments. Codec Engine Application Developer
User's Guide[EB/OL]. http://www-s.ti.com, 2006. [8] RFC1889-RTP:A Transport Protocol for Real-Time
Applications IETF Networking Group[S]. http://www.faqs.org/rfcs/rfc1889.html, 1996.
[9] 刘富强. 数字视频信息处理与传输教程[M]. 北京: 机
械工业出版社, 2004: 230-235.
[10] RFC2326-RTSP:A Transport Protocol for Real-Time
Streaming Applications IETF Networking Group[S]. http://www.ietf.org/rfc/rfc2326.txt, 1998. [11] http://www.live555.com/liveMedia/
说明:1/3:continuePlying() 2:new() 13:Send()4/6:getNextFrame() 5/7:doGetNextFrame() 8/9/10/11:afterGetting() 12:doSpecialFrameHandling() 图4 Source-Sink模式传送h264视频帧
LiveMedia的结构采用“Source-Sink”模式,Source提供了一个媒体介入单元来提供H264帧,而Sink负责RTP打包并传输出去。实现H264流媒体服务器的关键是通过实现Source来为基于liveMedia的RTP传输提供一个封装的H264帧,并通过实现Sink来接受从Source返回的数据,然后送到RTP端口,监听他们的打包和传输。图4为如何传送一个h264视频帧,以Sink请求下一帧为始,以Source返回帧结束。
首先要确定Source中的一帧H264视频由几个NAL组成,并通过currentNALUnitEndsAccessUnit函数来判断当前NAL是否构成一帧视频。由于系统的H264编码器每次提供一个完整的H264视频帧,故当前NAL始终为一帧H264视频的结束。通过doGetNextFram函数来检测队列中是否有有效帧,若有效,则出队列,返回给Sink。这需要一个
因篇幅问题不能全部显示,请点此查看更多更全内容