- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
电梯监控系统中的视频编解码关键技术
作者/ 茅剑1,2 刘晋明1,2 张杰敏1 1.集美大学 计算机工程学院(福建 厦门 361021) 2.国防科学技术大学 电子科学与工程学院(湖南 长沙 410073)
摘要:本文针对电梯运行环境,设计了视频监控和广告播放一体化嵌入式系统,实现了电梯监控、视频播放、网络传输等功能。为降低产品化后的硬件成本和体积,系统基于S5PV210嵌入式芯片开发以单CPU结构实现所有应用功能。为保证系统的运行效率,针对视频的采集、传输和播放,设计实现了硬件编解码技术。实验证明,利用该视频编解码技术,可使系统各功能模块高效并行工作,从而大大降低系统资源占用率,提高产品的市场竞争力。
引言
近年来,我国电梯安全事故频发,暴露出电梯运行维护中存在着诸多问题。如何从技术层面消除电梯运行的安全隐患,保障电梯的正常运行及乘坐人员的人身安全,是相关工程技术人员急需解决的问题。此外,由于电梯通常安装于公共场所,乘客具有相当的流动性,所以电梯也成为一个重要的广告投放媒介。面对传统纸质广告投放更新效率低下的现状,利用信息化技术提高电梯广告的投放效率和效果,也是电梯广告业界的迫切需求。基于上述讨论,本文针对轿厢式电梯设计开发了一套嵌入式电梯远程安全监控及视频广告系统[1-2]。该系统基于三星公司的S5pv210芯片开发,实现了对电梯运行状态和轿厢进出人员的实时监控,以及针对电梯用户的视频广告播放。
1 系统设计
嵌入式电梯远程安全监控及视频广告系统的整体设计如图1所示。系统分为嵌入式前端模块和PC后端模块两大部分。嵌入式模块部署在电梯轿厢内,PC模块安放在楼宇的主控机房,二者通过IP网络互联,实现双向实时访问。PC模块和嵌入式模块之间基于一对多关系设计,在主控机房的工作人员可以通过PC模块,同时访问控制分布在不同电梯内的多个嵌入式模块。
1.1 嵌入式模块设计
嵌入式模块以S5pv210芯片为核心设计开发,移植Linux嵌入式操作系统内核,通过多种接口和外设通讯,实现对电梯状态的监控、轿厢内监控视频采集处理、广告播放等功能。S5pv210芯片支持多接口连接,并内置多媒体处理内核,可支持摄像头和多种视频格式的硬件编解码[3]。嵌入式模块各功能简要介绍如下:
1.1.1 视频监控
视频监控子模块通过USB接口外接摄像头实时采集电梯轿厢内视频场景,记录电梯运行和人员进出的视频图像信息[4]。在该子模块中,设计实现了硬件编码技术,将监控视频以H.264格式进行实时压缩处理,以提高视频的处理、传输和存储效率。视频根据记录时间分割,实时存储到本地SD卡,并依据控制指令,通过IP网络上传至PC服务器。
1.1.2 运行状态监控
状态监控子模块通过RS232和RS485总线连接电梯控制箱,实时采集电梯运行状态数据,并以规定编码格式实时反馈至PC服务器。电梯运行如有异常,控制室内工作人员可立即获取警告信息。
1.1.3 广告播放
广告播放子模块通过HDMI接口外接LCD显示屏,根据客户要求滚动播放广告视频[5-6]。该子模块选择Mplayer视频播放器,并用设计实现的硬件解码算法更新Mplayer源码,以改善视频播放效率。
1.1.4 网络通信
考虑到电梯内外的施工环境复杂,本系统在嵌入式核心板上集成了有线和无线两种IP网络接口。嵌入式模块可以通过有线和无线两种连接方式和PC模块保持通信。
1.2 PC模块设计
PC模块部署在PC服务器上,提供电梯监控系统相关的Web服务和数据库服务,实现用户可视化交互访问[7-8]。PC模块通过IP网络和各嵌入式模块保持实时通信,实现对嵌入式模块的远程访问和控制。由于嵌入式模块采用SD卡作为存储设备,存储容量有限,而监控视频需要长期保存,所以大量的视频数据均须在PC服务器上备份存储。视频根据录制时间分割存储,可随时调取查看。
2 视频监控中的硬件编码技术
本文中所设计的嵌入式电梯远程安全监控及视频广告系统是市场化的升级换代产品。相对于前代产品,本系统的优点在于采用了嵌入式单CPU设计,大大降低产品的生产和部署成本。在降低硬件成本的同时,还要保证系统的运行效率,就需要良好的视频编解码性能支持,因此,嵌入式硬件编解码技术成为系统开发的关键。
2.1 H.264视频格式
为了获取更高的图像压缩比,从而提高视频的远程传输效率和本地存储效率,系统采用H.264作为电梯监控视频格式[9]。实时监控视频输出为CIF格式,分辨率352×288,帧率为25帧/秒,可调节码流。
由于系统要求对目标进行每天24小时不间断监控,并能追溯过去的视频记录,这就对视频的存储时长提出了较高的要求。在嵌入式设备存储容量一定的情况下,提高视频存储的压缩比就成为最好的选择。此外,系统需要实时传输监控画面至后台监控室,在网络带宽一定的前提下,也必须通过提高视频压缩比来保障传输效率。因此,本系统采用高压缩比的YUV420视频格式,如图2所示。
YUV420格式对视频的亮度分量Y和色度分量U、V的采样比为4:1:1。相对于亮度分量Y而言,色度分量U、V使用隔行采样加间隔采样的方式。也就是说,对于一帧画面,在存储每个像素的亮度值的同时,只留下奇数行中奇数列的色度值。
例如,对一个分辨率为W×H的视频帧,采用YUV420格式进行采样。帧中每个像素的亮度分量都被保存下来,即保存了W×H个Y值;但是只有四分之一像素的色度分量留下来,即保存了W×H/4个U和V值。定义亮度分量Y(m,n),m和n表示对应像素在图像中所处的位置,m取值范围在0到H-1之间,n的取值范围在0到W-1之间。那么色度分量U(k)、V(k)所对应的像素位置关系为:
(1)
其中k的取值范围在0至H×W/4-1之间。
存储YUV420格式视频时,有两种存储格式:YV12和NV12,如图3和图4所示。两种存储格式占用的存储空间一样,存储过程中均将亮度分量和色度分量分离。对于一帧视频而言,二者都是先存储所有像素的Y分量数值,然后存储U、V分量数值。区别在于,YV12格式将U、V分块存储,先存储所有V分量数值,然后是U分量;而NV12格式则是将U、V分量交替存储,一个像素的U分量数值之后是该像素的V分量数值。
由于摄像头在采集监控视频时输出的视频格式是YV12,而S5pv210芯片执行硬件编码时所需要的是NV12格式输入,所以在硬件编码之前需要进行格式转换,将YV12格式的视频数据帧转为NV12格式。
2.2 基于S5pv210的硬件编码
本文的硬件编码主要是利用S5pv210芯片的多格式编解码技术(MFC)实现[10],视频硬件编码的流程如图5所示。系统以视频帧为单位进行硬件编码,开启S5pv210芯片的MFC之后,将视频数据帧顺序读入。在读入第一帧后,需要对编码参数进行初始化,初始化参数主要包括视频尺寸和视频质量,其中的视频质量参数“FrameQp”赋值范围在0到51之间。本系统将视频质量参数置为30,经过实验测试,视频播放效果较好。初始化过程中,还需从首帧中获取视频文件头信息,并将其写入H.264文件。初始化后,其余视频帧依次输入缓存,进行YV12至NV12的格式转换之后,由芯片执行硬件编码。相应的编码结果可以从输出缓冲中依次获得,并写入H.264文件。通过循环执行帧编码指令,就可完成整个视频的硬件编码。
为了保证监控视频的实时传输和存储,视频的编码和传输几乎是同时进行的。当某一帧视频的编码完成之后,编码后的数据帧除了存入本地的H.264文件之外,还通过网络服务程序发送至远程PC服务器。PC服务器根据时间戳,就可以将接收的数据帧重建成视频文件,也能实时播放监控视频。经过测试,硬件编码的高效率执行很好地保障了视频监控的实时性,同时编码的高压缩率也降低了系统的存储成本。
3 视频播放中的硬件解码技术
为了在系统资源有限的嵌入式设备上同时实现视频采集、传输和播放,必须对视频播放中解码技术进行优化[11-13]。通过解码优化,仅使用一个嵌入式芯片,就能在执行监控视频采集和传输的同时,保证广告视频的图像清晰、播放流畅。
3.1 Mplayer
本文选用Mplayer作为系统的嵌入式多媒体播放器。Mplayer功能强大,可运行在不同体系结构上,能播放多种格式的视频文件,并支持多种视频图像输出驱动。由于Mplayer是一款完全开源的播放软件,因此可以很方便地根据需要修改其源码,实现视频解码器的优化。
Mplayer采用音视频数据分流的方式,对视频文件进行处理。Mplayer读入视频文件后,通过解析将文件分流为视频和音频两部分;然后根据文件格式选择不同的解码器,分别进行音、视频解码;最终将解码后的音、视频同步输出[14-16]。本文只关注分流后的视频流数据,并基于系统芯片重新设计Mplayer的视频解码器,从而改善视频解码性能,优化视频播放。
3.2 基于S5pv210的硬件解码技术
与硬件编码方法类似,硬件解码也是基于S5pv210芯片的MFC设计实现的。解码过程同样以帧为单位进行,因此,在解码之前需要初始化帧参数,开辟存储空间。视频数据从视频文件中读取之后,被拷贝到S5pv210的解码缓冲区,经过MFC解码后,将己解码的视频数据放入输出缓冲区中,最后驱动设备将视频显示到LCD屏幕上。视频硬件解码的流程如图6所示。
硬件解码实现之后,还需将其封装为Mplayer可调用的解码器。完成解码器的植入,必须对Mplayer的工作原理和源码组织有着深入理解。向Mplayer植入编码器的关键步骤如下:
3.2.1 添加程序文件
首先,将实现的硬件解码器保存为.C文件,添加至libmpcodec 目录下。在这个源文件中需要实现两个关键的结构体: vd_info_t和vd_functions_t。vd_info_t定义了解码器的相关信息,包含五个字符串参数,都必须填写。其中的第二个参数short name为定义的编码器名,需要和配置文件codec_conf中的driver保持一致。 vd_functions_t定义了与解码有关的函数,通过info 的定义以及 LIBVD_EXTERN 的调用使解码器的vd_functions_t结构体在Mplaer全局生效。通过上述过程,从而完成 S5pv210硬解码实现和 Mplayer 调用接口之间的衔接定义。
本文来源于中国科技核心期刊《电子产品世界》2016年第11期第35页,欢迎您写论文时引用,并注明出处。
[p]3.2.2 修改配置文件
Mplayer所有可用的音、视频解码器均在etc 目录下的 codec.conf 文件中声明。所以,植入时需要在该文件中注册自定义的硬件解码器。文件中,使用 videocodec 关键字声明新解码器名;info关键字指明-help 命令执行时打印的信息;status 关键字表示该解码器的工作状态;fourcc 关键字说明解码器可解析的视频类型,其格式为四字符的国际通用的视频压缩标准; driver 关键字指明集成在 Mplayer 内部的解码器模块,即所实现的解码器名,必须和vd_info_t中定义的第二个字符串short name参数一致;out 关键字说明解码后输出的色彩编码格式。
3.2.3 添加解码驱动
在libmpcodec/vd.c中加入MFC的解码驱动。在vd.c中将硬件解码器的vd_functions_t结构体变量添加到全局数组vd_functions_t* mpcodecs_vd_drivers[]中,该数组中保存了Mplayer当前可用的所有的视频解码器,这些解码器可以通过vd_info_t中的short name所保存的全局唯一字符串来查找。MPlayer运行时,会将codec.conf中所有的视频解码器读入程序,并保存在全局的数组codecs_st video_codecs[]中。vd.c中的init_best_Video_codec函数会根据video_codecs[]数组中的信息匹配当前视频的最佳解码器,并在mpcodecs_vd_drivers[]中查找相应的解码函数。
3.2.4 移植Mplayer至开发板
修改libmpcodec/Makefile文件,在SRCS_COMMON中添加新植入的解码器文件以及其它相关的新增源文件。交叉编译后,将Mplayer移植到开发板上。为了保证最终的视频播放效果,可以根据LCD显示屏尺寸修改/.mplayer/config文件中的显示配置参数。
至此,通过向Mplayer中植入硬件编码器,在嵌入式设备上实现了基于S5pv210芯片的硬件解码技术。
4 实验测试
通过上述方法,设计实现了一套兼具广告视频播放功能的电梯监控系统样机。系统的嵌入式端硬件实现是以S5pv210核心板为基础,根据电梯监控应用环境扩展外围电路,支持有线和无线以太网接入,支持HDMI视频输出以及外接SD卡存储。软件开发平台为嵌入式Linux操作系统,视频采集利用V4L2框架实现,视频传输使用UDP协议,其中视频的硬件编解码基于S5pv210的MFC开发实现。针对系统的嵌入式端进行运行测试,目的是验证当前设计是否能满足市场应用要求,即在降低硬件成本的同时,保证系统性能。
为了测试硬件编解码的运行效率,系统加载了上一代监控产品的软件编解码代码,进行对比运行测试。测试过程中,实时查询系统的CPU占用率,以执行代码时的CPU占用率作为运行效率的量化评价指标。
对比测试发现,采用软件编解码技术的代码执行效果很差。仅运行视频采集功能模块,即运行视频编码时,在不向服务器传输实时视频的情况下,CPU占用率已经达到71%。若同时开启编码和传输功能,CPU占用率则上升至85%,服务器端的监视画面出现延迟、卡顿现象。尝试让系统在采集传输视频的同时,再播放广告视频,即同时运行编解码程序,系统死机完全无响应,可认为CPU占用率达到100%。这说明,嵌入式芯片的有限处理能力无法负荷针对PC 环境开发的软件编解码程序。
对本文所设计的硬件编解码程序,在相同条件下进行测试。在单独执行编码程序的情况下,CPU占用率仅为30%;若同时开启编码和传输功能,CPU占用率仅增加了3%。从测试结果来看,增加视频传输对系统开销的影响几乎可以忽略,这是由于本文设计的传输程序是伴随视频帧编码同时进行的,采用H.264编码格式传输的数据量很小,对系统资源消耗很少。此外,从监控画面来看,视频无卡顿,仅有少许延迟。如果再同时运行解码程序,CPU占用率上升至67%,系统依然正常运行,无卡顿。广告视频播放流畅,画面清晰,色彩无失真。
对比测试的结果如表1所示,结果表明本文设计实现的视频硬件编解码技术很好地发挥了S5pv210芯片的多媒体处理能力,表现出良好的系统运行效率。
5 结束语
本文基于S5pv210芯片设计实现了一个嵌入式电梯远程安全监控及视频广告系统。为提高电梯监控视频的采集、传输、处理及存储效率,监控视频采用H.264格式,并针对S5pv210芯片研究并实现了H.264视频硬件编码技术;为减少广告视频播放过程中的系统资源占用,针对广告视频开发了硬件解码技术,从而在一个嵌入式芯片上同时实现监控视频采集和广告视频播放,以达到降低系统硬件成本及减小设备尺寸的目的。通过系统的运行测试,表明设计实现的硬件编解码技术,相对软件编解码而言,系统资源占用率更低,系统运行效率更高。由于采用嵌入式设计和硬件编解码技术,该系统产品化后,与前一代产品相比,将大大降低产品生产和施工部署成本。
参考文献:
[1]茅剑,林奇.基于声纹识别的嵌入式防盗系统[J].计算机与现代化, 2009(11):163-165.
[2]J Mao, Y Li.An embedded voiceprint recognition system based on GMM[C]// Computer Science & Education (ICCSE), 2015 10th International Conference on. IEEE, London, UK; 2015:38-41.
[3]S5PV210 RISC Microprocessor User's Manual. Samsung Electronics Co: REV 1.00[R].2010.
[4]程少炼.基于H.264的嵌入式视频监控系统的研究与实现[D].武汉科技大学, 2011.
[5]刘福良.嵌入式网络广告机系统的设计与实现[D].北京邮电大学,2012.
[6]杨功银.基于ARM平台的嵌入式流媒体播放系统的研究与设计[D].湖南师范大学, 2012.
[7]周强,费章君,王强,等.基于H.264的嵌入式网络视频服务器的设计与开发[J].计算机应用,2010,30(2):555-559.
[8]刘喜龙,石中锁.基于H264的嵌入式视频服务器的设计[J]. 微计算机信息,2005(1):133-134.
[9]Alexis Michael Tourapis, Athanasios Leontaris, Karsten Sühring, Gary Sullivan. H.264/14496-10 AVC Reference Software Manual. Joint Video Team (JVT) of ISO/IEC MPEG & ITU-T VCEG:[R].2010.
[10]S5PV210 Multi-Format Codec Release Notes. Samsung Electronics Co: REV 2.1[R]. 2009
[11]Feghali R, Speranza F, Wang D, et al. Video Quality Metric for Bit Rate Control via Joint Adjustment of Quantization and Frame Rate[J]. Broadcasting IEEE Transactions on, 2007, 53(1):441-446.
[12]Yang E H, Zheng L, He D K, et al. Rate Distortion Theory for Causal Video Coding: Characterization, Computation Algorithm, and Comparison[J]. IEEE Transactions on Information Theory, 2011, 57(8):5258-5280.
[13]Pescador F, Maturana G, Garrido M J, et al. An H.264 video decoder based on a latest generation DSP[J]. IEEE Transactions on Consumer Electronics, 2009, 55(1):205-212.
[14]缐晓林.基于Freescale i.MX27的视频编解码的研究与应用[D].北京邮电大学,2010.
[15]王彤.基于FFmpeg的H.264解码器实现[D].大连理工大学, 2011.
[16]胡绍江.基于MX21平台的MPEG-4视频解码系统研究与优化[D].武汉理工大学,2009.
本文来源于中国科技核心期刊《电子产品世界》2016年第11期第35页,欢迎您写论文时引用,并注明出处。
射频工程师养成培训教程套装,助您快速成为一名优秀射频工程师...
天线设计工程师培训课程套装,资深专家授课,让天线设计不再难...
上一篇:用于单片机与电子装置中的开关电源
下一篇:【
详解】全面认识变压器