视频视频监控软件

视频监控软件  时间:2021-05-08  阅读:()
SoftwareEngineeringandApplications软件工程与应用,2013,2,104-108http://dx.
doi.
org/10.
12677/sea.
2013.
25019PublishedOnlineOctober2013(http://www.
hanspub.
org/journal/sea.
html)Real-TimeVideoTransmissionandDecodingBasedonAndroidMobilePhoneXiaojiaWu,HuaYe,YaSu,YanlanYangSchoolofAutomation,SoutheastUniversity,NanjingEmail:wuxiaojiaemma@163.
comReceived:Sep.
1st,2013;revised:Sep.
11th,2013;accepted:Sep.
17th,2013Copyright2013XiaojiaWuetal.
ThisisanopenaccessarticledistributedundertheCreativeCommonsAttributionLicense,whichpermitsunrestricteduse,distribution,andreproductioninanymedium,providedtheoriginalworkisproperlycited.
Abstract:ThispaperdiscussesvideotransmissionanddecodingoftheAndroidmobilephonevideosurveillanceapplication.
MobileclientcommunicateswithserverthroughSockettoreceivevideodata,andrestructuresthevideodatatoavideoframeaccordingtotheframenumber.
Thispaperdesignstouseframedroppingmechanismtosolvetheproblemthatundecodedvideoframefillingthebufferbecauseofthephone'sweakprocessingpower.
Then,itcompletesreal-timedecodingandimageformatconversionofthevideodatainH.
264formatbyFFmpegcodeclibrarywhichwasmigratedtotheAndroidsystem.
Thetestresultsshowthatthesoftwarerunswell,thepictureisclearandsmooth.
Keywords:VideoTransmission;H.
264Decoding;Android;VideoSurveillance基于Android手机的实时视频传输和解码吴晓佳,叶桦,苏雅,仰燕兰东南大学自动化学院,南京Email:wuxiaojiaemma@163.
com收稿日期:2013年9月1日;修回日期:2013年9月11日;录用日期:2013年9月17日摘要:本文主要探讨了Android手机视频监控软件的视频传输和解码.
手机客户端通过Socket与平台服务器通讯,接收视频数据,并按照帧号重组成视频帧.
本文设计采用丢帧机制解决了由手机处理能力弱导致待解码视频帧占满缓存区的问题,然后通过移植到Android系统中的FFmpeg解码库,实现了H.
264格式视频数据的实时解码和图像格式转换.
经测试结果表明软件的运行良好,画面清晰流畅.
关键词:视频传输;H.
264解码;安卓操作系统;视频监控1.
引言视频监控作为安防系统的重要组成部分,在民用安全、城市交通和重大事件中发挥着巨大的作用,越来越受到人们的重视.
传统的视频监控系统大多通过线缆或光纤将视频信号传输到监控中心,但由于网线的限制,不利于监控系统的迅速搭建[1],人们只能在一定设备环境下进行监控.
随着信息化程度的提高,人们已经不满足于这种视频监控模式,迫切需要一种更加方便,实时的视频监控模式.
Android系统的产生和3G网络的普及为此提供了技术支持.
Android是Google公司推出的基于Linux的开源操作系统,凭借其良好的稳定性、开放性和可移植性,广泛应用于智能手机和平板电脑[2].
3G网络的普及应用为流媒体无线传输业务提供了保证.
本文在Android操作系统Copyright2013Hanspub104基于Android手机的实时视频传输和解码的智能手机上,利用无线网络通信技术,H.
264编码技术和FFmpeg视频解码解决方案,研发了一个视频监控应用软件,正好满足了这一需求.
用户只要随身携带手机,在有无线网络的情况下就可以通过本软件随时,随地查看监控画面,更加快捷,方便,具有较大的应用前景.
本文主要探讨了Android手机视频监控软件的视频传输和解码.
2.
整体方案设计2.
1.
系统结构本系统由摄像头,监控终端,平台服务器和智能手机客户端四个部分组成,系统结构如图1所示.
摄像头负责拍摄采集视频数据,传输到终端;摄像头带有云台,可以在上下左右四个方向的转动,并具有调焦功能.
一个监控终端可以同时控制几个摄像头,一个摄像头即为一路视频.
监控终端将采集到的视频数据按H.
264格式编码后上传到平台服务器,并控制着摄像头的转动和调焦.
平台服务器作为终端和手机客户端之间的沟通中介,负责将终端上传的视频数据转发到手机客户端;同时将手机客户端的指令转发到终端.
手机客户端主要负责接收和解析来自平台的数据包,解码H.
264视频帧后,将视频画面播放显示,也可以根据用户需求发出相应指令控制摄像头转动和调焦.
2.
2.
软件架构基于Android的手机视频监控软件的架构如图2所示,由视频解码,视频显示和通讯三个模块构成.
其中通讯模块负责与服务器之间的数据收发.
主要分成三个部分,一是接收来自服务器的所有数据,并对数据进行处理,当解析到设备信息,推送到用户界面显示,当解析到视频数据则将数据存储到视频缓冲区中;二是将用户操作产生的控制命令传送到服务器端;三是向服务器发送和接收心跳,保持手机客户端Figure1.
Systemstructurediagram图1.
系统结构图和服务器之间的稳定连接.
视屏解码模块负责从缓冲区中读取视频数据,送入解码器进行解码,并调整解码后图像的分辨率和格式适应不同型号的手机.
视频显示模块将解码获得的图像绘制到界面上实现视频显示.
3.
通讯模块实现3.
1.
通讯协议手机视频监控最重要的一个性能指标就是实时性.
因此,在选择网络通信协议时必须着重考虑这个因素.
TCP和UDP是目前最为常用的两种网络通讯协议.
TCP是一种面向连接的、可靠的、基于字节流的运输层通信协议,服务器和客户端的传输数据之前必须先建立连接.
TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端.
用户数据报协议(UDP)是一种无连接的传输层协议,UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快,同时它不提供可靠通信保证,数据包可能会丢失.
分析比较两者的特点,本软件在Android手机客户端和平台服务器之间采用UDP协议连接,以保证视频传输的实时性,提高视频传输速度[3].
UDP应用在网络通讯中,首先要建立套接字DatagramSocket,通过DatagramSocket就可以接受和发送UDP数据报(DatagramPacket).
DatagramPacket中包含了要发送的数据信息和目的地址的信息,DatagramSocket根据该信息把UDP数据报发送到目的地址[4].
3.
2.
视频数据处理3.
2.
1.
视频组包在视频传输的过程中,关键帧的数据量是非常大Figure2.
Softwarearchitecturediagram图2.
软件架构图Copyright2013Hanspub105基于Android手机的实时视频传输和解码的,根据视频分辨率和码率的不同可以达到几万甚至几十万个字节,不可能在一个数据包中传输,往往需要分成独立的NALU单元后封装在几个数据包中发送.
因此,在接收到数据后,手机客户端需要将收到的数据包解析,然后把帧号相同的视频数据重新组成一帧.
客户端在接到第一帧数据的时候先解析出帧号,包号(当一帧数据被分成几包,包号表示此数据包是一帧图像的第几包)和视频数据等信息,然后将包号和视频数据信息保存到构建的Package对象中,并将Package对象存储到缓冲区,记录下当前帧号为P_FrameId后,开始接收下一包数据.
当接收到的新数据包的帧号与P_FrameId相同,表明视频数据是同一帧的数据,将其以同样的方式存储到缓存区中,当收到新的数据包的帧号与P_FrameId不同时,就认为上一帧的数据已经收完,就可以把缓冲区中的数据组包.
将缓冲区清空后,再将收到的数据包信息存入缓冲区,同时更新P_FrameId.
Package{IntP_Id;//包号Byte[]P_data;//视频数据}服务器发送的视频数据包在网络传出的过程中时,由于网络不稳定等因素有可能出现数据包乱序到达的情况,因此在数据包组包的过程中,设计采用冒泡算法根据包号将数据包排序.
3.
2.
2.
丢帧机制由于CPU处理能力和内存的限制,手机解码速度可能滞后于接收到视频数据的速度,视频缓冲区也不能过大,当过多的视频数据滞存在缓冲区中时,不仅会占满视频缓冲区,也会影响视频监控的实时性.
为解决这个问题,本文采取了丢帧机制,视频的帧率为15FPS,软件设计视频缓冲区最多可以容纳30个视频帧,当视频帧占满缓冲区时就要丢弃一部分视频帧.
以前的一些视频监控软件采用的丢帧方式是当发现缓冲区满以后,将新收到的视频帧丢弃.
这种丢帧方式虽然也能保证软件正常运行,但是没有考虑到编码方式的特征,影响了手机的实时性,也可能造成一段时间的监控盲区.
本文采取的丢帧机制是,丢弃较早到达的视频帧,容纳新的数据来保证视频监控的实时性.
同时考虑监控终端采用的H.
264视频编码标准,在编码过程中只使用了I帧和P帧.
其中I帧是关键帧,可以独立解码;P帧是参考帧,是这一帧跟之前一个关键帧(或P帧)的差别,在接收到I帧的基础上,P帧才能进行解码.
从两者的重要性考虑,首先丢弃P帧,再丢弃I帧.
在既定的缓冲区中保留更多的可用视频帧,具体处理流程如图3.
3.
3.
心跳模块手机视屏监控要求具有稳定性,为保证手机客户端和平台服务器之间长时间稳定的连接,本文设计采用心跳模块.
心跳功能由Service实现,Service是Android的服务组件,没有用户界面,在后台运行,对用户完全透明[5],不影响前台界面的正常运行.
在使用Service前先要在Androidmainfest.
xml文件中进行注册,注册的代码如下:在登陆到平台以后调用context.
startService()函数开启Service,在Service中开启一个线程,定时向平台发送心跳包,平台在收到心跳包后给以回复,当心跳线程连续三次没有收到回复的时候,向广播接收组件(BroadcastReceiver)发送广播告警信息,BroadcastReceiver在收到广播信息后,调用context.
stopService()Figure3.
Framedroppingmechanism图3.
丢帧机制Copyright2013Hanspub106基于Android手机的实时视频传输和解码函数将Service结束,然后跳转到登陆界面并给出断线提醒,用户可以重新连接平台.
当手机客户端在接收视频数据的时候,客户端和服务器之间有很频繁的数据交互,不需要用心跳包来来维持与服务器之间的连接,心跳包的存在反而会给客户端和服务器都带来负担,因此,在接收视频数据的时候,客户端不再验证心跳包,直到视频数据终止传输.
4.
视频解码模块实现4.
1.
FFmpeg解码库移植Android平台自身的多媒体框架OpenCore只支持3gp、MP4两种视频格式,无法解码终端编码的H.
264格式视频.
同时Android没有开放OpenCore的底层视频编解码nativeAPI,利用Java来处理有关音视频编解码的工作显然力不从心,所以本文移植FFmpeg来完成解码工作[6].
FFmpeg是一个集录制、转换、音/视频编码解码功能为一体的完整开源解决方案[7].
FFmpeg是用C语言编码的,但是在Windows平台下,Android环境不能直接支持C语言的开发.
因此,还需要利用AndroidNDK将其编译为动态链接库后才能在Android平台下进行开发.
4.
2.
视频解码视频解码模块基于FFmpeg底层解码函数调用,由C语言编程实现的;主要负责从缓冲区中读取视频帧,将其进行解码,并将解码后的视频数据交送视频显示模块.
监控终端上传的视频是H.
264视频编码的分辨率为352*288,YUV420格式的视频帧.
针对本项目在FFmpeg解码方案的基础上设计H.
264解码器.
H.
264解码器主要成为四步:初始化解码器,解码视频帧,视频分辨率/格式转换,释放解码器.
初始化解码器的主要工作是调用av_register_all()注册多种音视频格式的编解码器及各种文件;针对视频编码方式的单一性,通过avcodec_find_decoder(CODEC_ID_H264)将解码器设置为H.
264模式,并为解码器和解码过程中需要用到的结构分配内存,最后打开解码器.
解码视频帧所用的函数是avcodec_decode_video2(),其返回值表示解码出一幅图像所消耗的数据帧的字节长度,由此可以判断解码是否成功,当函数返回值为1时,表示解码不成功.
解码成功后获得的图像存储在AVFrame结构中,而图像的大小和格式信息则在pAVCodecCtx结构中.
视频分辨率/格式转换是必不可少的一个步骤,Android手机只支持RGB格式的图像显示,平台传送过来的帧解码后是YUV格式的视频数据,只有转成RGB格式后才能在手机上播放;源视频的分辨率为352*288,手机型号种类繁多,分辨率也各不相同,为适应不同型号的手机,获得更好的视觉效果,也需要将对视频的分辨率做调整.
FFmpeg中提供了sws_scale()函数来进行图像缩放和格式转换.
转换的过程中还用到了一个很重要的结构SwsContext,在转换前需要在此结构中指明原图像和目标图像的分辨率大小和视频格式,以及转换过程中采用的算法等信息.
释放解码器是在解码完成后的必要操作,初始化解码器时所分配的内存到解码完毕后都要释放掉.
不及时的内存释放会导致程序出现内存泄露而崩溃.
视频解码模块的主要流程可以从图4中看到.
数据帧通过解码和格式转换后,以RGB格式存储在数组中.
本软件将RGB数组转成Bitmap后采用SurfaceView作为绘图容器将图像画在手机屏幕上.
SurfaceView可以直接从内存或者DMA等硬件接口取Figure4.
Flowchartofdecoding图4.
解码流程图Copyright2013Hanspub107基于Android手机的实时视频传输和解码Copyright2013Hanspub108Figure5.
Interfaceofmonitoringsoftware图5.
监控软件界面得图像数据,具有双缓冲机制,效率高,能够实现良好的显示效果.
5.
软件运行本软件在型号为三星GT-N7108的手机利用WIFI无线网络运行并测试.
经测试,本软件在视频为15帧/s,码率256bit/s的条件下能够获得良好的运行结果,视频流畅播放,有很好的实时性和稳定性,满足设计的基本需求.
视频监控软件的运行效果如图5.
6.
总结本系统在当前主流的智能手机操作系统——Android平台上移植了FFmpeg解码库,开发出一个视频监控应用,实现了视频数据接收,视频解码显示以及云台控制等功能.
本文详细分析了软件架构设计,主要论述了视频数据接收和视频解码模块的设计和实现.
在数据处理过程中,不同性能的手机解码能力存在差距,本文采用丢帧机制解决了由手机处理能力弱导致待解码视频帧占满缓存区的问题,提高了软件的适用性,实时性和稳定性.
最后,本文探讨了H.
264视频解码器的实现.
软件实现了友好的操作界面,具有良好的稳定性和实时性,满足了当前市场的需求,具有较大的市场潜力.
参考文献(References)[1]李昂,宋海声,苏小芸.
基于Android的视频监控系统设计与实现[J].
电子技术应用,2012,38(7):138-143.
[2]宋强,齐贵宝,宋占伟.
基于Android系统的H.
264视频监控设计[J].
吉林大学学报,2012,30(3):272-278.
[3]赵飞,叶震.
UDP协议与TCP协议的对比分析与可靠性改进[J].
计算机技术与发展,2006,16(9):219-221.
[4]张雷.
基于Android的物联网音视频通信系统关键技术研究[D].
南京邮电大学硕士论文,2012.
[5]苏雅,仰燕兰,吴晓佳,叶桦.
基于Android系统的手机定位软件的设计与开发[J].
计算机科学与应用,2013,3:17-22.
[6]摆云.
UDP协议与TCP协议的对比分析与可靠性改进[J].
计算机技术与发展,2006,16(9):219-221.
[7]杨钊.
基于Android的视频采集系统的设计与实现[F].
西安电子科技大学硕士论文,2012.

亚洲云-浙江高防BGP.提供自助防火墙高防各种offer高防BGP!

 亚洲云Asiayun怎么样?亚洲云Asiayun好不好?亚洲云成立于2021年,隶属于上海玥悠悠云计算有限公司(Yyyisp),是一家新国人IDC商家,且正规持证IDC/ISP/CDN,商家主要提供数据中心基础服务、互联网业务解决方案,及专属服务器租用、云服务器、云虚拟主机、专属服务器托管、带宽租用等产品和服务。Asiayun提供源自大陆、香港、韩国和美国等地骨干级机房优质资源,包括B...

RAKsmart便宜美国/日本/中国香港VPS主机 低至月$1.99 可安装Windows

RAKsmart 商家这几年还是在做事情的,虽然他们家顺带做的VPS主机并不是主营业务,毕竟当下的基础云服务器竞争过于激烈,他们家主营业务的独立服务器。包括在去年开始有新增多个数据中心独立服务器,包括有10G带宽的不限流量的独立服务器。当然,如果有需要便宜VPS主机的他们家也是有的,比如有最低月付1.99美元的美国VPS主机,而且可选安装Windows系统。这里商家有提供下面六款六月份的活动便宜V...

腾讯云爆款秒杀:1C2G5M服务器38元/年,CDN流量包6元起

农历春节将至,腾讯云开启了热门爆款云产品首单特惠秒杀活动,上海/北京/广州1核2G云服务器首年仅38元起,上架了新的首单优惠活动,每天三场秒杀,长期有效,其中轻量应用服务器2G内存5M带宽仅需年费38元起,其他产品比如CDN流量包、短信包、MySQL、直播流量包、标准存储等等产品也参与活动,腾讯云官网已注册且完成实名认证的国内站用户均可参与。活动页面:https://cloud.tencent.c...

视频监控软件为你推荐
请阅读最后一页信息披露和重要声明支持ipad建企业网站怎么建企业网站cisco2960cisco2960接入层交换机支付宝调整还款日支付宝调整花呗还款日,这个调整有没有对你造成什么影响?特朗普吐槽iPhone为什么这么多人讨厌苹果呢?iPhone配置不足但是iOS流畅度确实很高很强大,性能领先几乎所有国产美要求解锁iPhoneiPhone连接Mac的时候出现提示需要解锁iPhone什么是支付宝支付宝是什么意思?文档下载手机下载的文件在哪里能找到抢米网会知道怎样抢小米的请进来说一下。
国内最好的虚拟主机 花生壳域名 网通vps wordpress主机 视频存储服务器 suspended 150邮箱 台湾谷歌地址 架设服务器 web服务器的架设 seednet 秒杀汇 国外网页代理 阿里dns 睿云 tracker服务器 碳云 htaccess ping值 wannacry勒索病毒 更多