基于Android视频客户端的设计
2023-12-28
来源:乌哈旅游
V烹鬻煞烹lNFORMAT.ONTER黼怎蒋疆【本文献信息】杨明极,毕晶.基于An&oid视频客户端的设计[J].电视技术,2012,36(3).基于Android视频客户端的设计杨明极,毕晶(哈尔滨理工大学测控技术与通信工程学院,黑龙江哈尔滨150080)【擒要】普通的网络视频监控已普及于安防应用和人们的家庭生活,但不能满足人们用手机实时监视的需求。因此,设计An—droid系统下的视频客户端具有了一定的实际意义。介绍了Android操作系统的特点及应用,设计了视频客户端分层的结构,分析了视频客户端各层的关键技术及功能。最后,系统通过性能测试,实现了客户端远程实时视频监视的功能。【关键词】Android;客户端;远程视频监视【中图分类号】TP311.54【文献标识码】AonDesignofVideoClientBasedYANGMin@i。BIAndroid(CollegeofMeasure.-amtrolTechnologyandCommunicationEngi毗,HarbinforvideoJi鸣Un洫.rsityofScienceandnotTechnology,Harbinfor150080。‰)functi懈【Abstract】Thecorn/lionnetworkvideorenmtemonitoringisappliedinthesecurityandnormallife。butbasedOntherequirementofreal-timemonitoringthl伽曲mobilethephone.ner妇e,designofvideoclient8reAndroid]3e(XmleSsignificantanduseful.SomecharacteristicsandapplicationsoftheAn-cfienti8proposed,andthekeytechnolo西档andfuIK=tiort8ofeachlayerinreal-timevideoclientremotemonitoring&aidoperatingsystemvideoclientintroduced,ndesignofstratifiedstructureare跗皿I灿Finally,the.ystemvideopassesthe弘d醅m跗耽testa,and他al:.嘲the【Keywords】ti.1roid;client;remotesurveillance随着21世纪的到来,全球快速的进入信息时代,移动通信系统由于综合利用了有线和无线的传输方式,解决了人们在活动中与固定终端或其他移动载体上的对象进行通信联系的要求,移动通信给社会带来了深刻的信息化变革,已成为最受青睐的通信手段。如今,以嵌入式技术为依托,以网络、通信技术为平台的网络视频监控,已经越来越成熟,应用范围越来越广阔。网络视频监控突破了地域的限制,实现了远程监控,可是,随着“AnyWhere,AnyTime,AnyHandsetAlliance,0HA),发布了名为Android的开放手机软硬件平台。Android是基于Linux内核的软件平台和操作系统。框架结构由5个部分组成,其核心为Linux内核,逐次向上是Android开发的Libraries(函数库)和Android序框架)来开发各种不同的应用程序…。Runt-ime(运行环境),以及搭配ApplicationFramework(应用程对于硬件开发商来说。Android是开放的平台,只要厂商有实力和能力就可以在此平台上自由添加特有的设备或功能,不受到手机操作系统的限制;对于手机开发者而Device”(任何时间、任何地点、任何设备)等概念的提出,普通的网络视频监控已经不能满足用户日益增长的多元化需求。“手机视频监控”使这个问题有了答案,这项应用将在安防行业中得到迅速推广和普及,同时,它也会逐渐走人人们的家庭生活中,比如在工作中的白领人员可以在工作中用手机实时监看家里无人照看的老人或幼儿园里孩子的情况,企业人员可以用手机随时随地监言,Andwid是先进的平台,平台上的应用程序可兼容于各种型号的Android手机,免除为各种不同手机机型开发的困扰。Android平台支持各种先进的网络、绘图、3D处理能力,可以用来提供更好的用户体验。通过AndroidMar-ket将自己的应用程序销售给世界各地用户;对于用户来看自己的店铺、超市、公司的运营隋况等。本文主要是对基于Android平台视频客户端进行设计,最后实现其播放的核心功能以及实时监视等多项基本功能。1说,Android是一个用于手机的操作系统。只要用户申请了Coosle帐户,当想换手机时,可以在不同的厂牌同样使用Android操作系统平台的手机之间选择,并且很容易将比如通讯薄等个人资料转换到新手机上。Android平台简介2007年11月5日,C,oogle与其他33家手机制造商2远程实时视频监视整体设计目前,远程实时视频监视技术主要趋向以下几个方向:首先,支持多样化格式。Xmms,Xmovie,QuickTime是主要针对固定的媒体格式类型或传输协议,具有一定的专投稿用址htIp:/1wvw.Vid∞E朋I‘电视技术’第∞卷第3期I总第378期l(包括摩托罗拉、宏达电、三星、LG)、手机芯片供应商、软硬件供应商、电信业者所联合组成的开放手机联盟(Open万方数据43一:lN的R眦俐征R燃惠嚣用性,因此难以满足广大消费者的的需求,如今的音频、视频格式越来越多,如常见的音频WMA、MP3以及视频的RM、AVI等。如何能播放所有格式,是现今研究的方向。其次,可扩展性也是一个必要的趋势,如今的播放器功能越来越强大,如何在现有的基础上使功能更全面,也是人们接受的一个因素。这就是本设计选用开放式Android平台的—个原因,代码完全公开,为其功能扩展提供方便的条件。21远程视频监视整体设计方案y'謦辫謦的绘图接口,Android的Java框架层调用这些绘图接口来构建各种UI元素。此外,Java应用程序层也可以调用这些绘图接口。Z3音视频解码层音视频解码层包括解码选择组件、多样主流音视频格式的解码器以及多路媒体流之间的同步的功能。解码选择组件先从本地文件或者流媒体文件中获取媒体解码格式的相关信息,通过获取的信息来匹配出对应的解码器对媒体流解码,此部分通过解码算法的移植、修剪及优化后完成。Z4数据预处理层数据预处理层对于媒体流文件来说,先要将RTP的包头信息去除,再对RTP中的音视频信息进行组帧,同时将全部的数据帧传递到上层待解码缓冲区;而对于本地文件,则需要按照相对应的媒体格式进行解封装,再将获取文件的音视频等信息按帧放人对应的上层待解码缓冲区。25数据获取层远程视频监视系统无论播放本地文件还是网络流媒体文件,都需要经历3个处理阶段,分别是获取媒体数据、对音视频媒体流解码以及将解码后的媒体数据给用户显示【2J,本设计依据这3个处理阶段将远程视频实时监视在整体结构上进行分层设计。由于本地文件和网络流媒体文件的数据获取方式是相异的,若保证上层解码的一致性,就要对本地文件和网络流媒体文件进行预处理,使它们的数据格式相同以供上层解码。因此,本设计结合以上特点以及文件的解码流程数据获取层的功能主要是对本地或流媒体文件的获取。对本地文件信息获取需要读取本地文件即可,而对于流媒体信息文件的获取,则需要从流媒体服务器上获取数据信息,获取信息期间包括前期会话协商、数据缓冲、数据发送等部分。此外,媒体协商部分中协商媒体流的常规信息,例如音视频媒体类型、传输协议以及媒体传输端口等信息,这些都需用到RTSP协议H】。3对远程视频实时监视的整体结构采用分层设计方案,每一层独立完成工作,不但能够降低系统的耦合度,而且各层的独立扩展不干扰上下层的应用。整体结构层从上到下分别设计为用户界面、音视频解码层、数据预处理层、数据提取层。整体结构如图1所示。晕与}匝固mr,H.264,MP3,SaC视频客户端的实现3.1用户界面1I选择解码器用户界面是基于Android的GUI系统实现的HJ,由类Video音视频缓冲区与jMonitor来具体实现,其类图如图2所示。VideoMonitor—start:Bun∞-stop:Buttonl本地文件If提取RTP包中lI解封装I数据信息I堡翌匿l。—■彳=—一R’FP/RTCP、R"ISP.mTextVICW:T“tVicw.resurfaceVJew:SurfaceVJew.mSurfaccHolder:SurfaceH0ldH-mStrPath:String本地文件图122用户界面I—mPassword:Stnng-mMonltorPath:String+mRadioGrouplRadioGroupJ获取网络文件I+mRadioGroupChannel:RadioGrmm+mRadiol:RadioButtoII+mRadi02:RadioBUffDll远程实时视频监视的整体结构图+mRadi03:RadioBtltton+mRadioChannelJ’RadioButton+mRadIoChannel2:RadtoBu咖—J了lReM01qJIoJ":R自no忙MOnltoir远程视频实时监视的用户界面主要由Android的GUI系统实现,负责提供播放器和用户之间的交互接口,例如播放时的快进、后退、暂停等功能。GUI系统由Java语言框架和C语言框架组成,对于下层,GUI系统通过调+mRadloChanncl3:RadIoButton+mRadloChannelj,:RadIoButton+mRadloChannel5:RadtoButton-mChangeCharmelRadio:RadioOroup.OnCheckcdChangeL咖—mChangeRadto:RadloGroupOnChcckedChangeListcaef+onC咄(savedlnstanceState:bundlc):Vo甜.findViewsf):VOld+smf姚gcd(surfaceholdcr:surfaccholder,formct:int,w:int,h:int):vokl+setLls记nel3(}:void・playVtdeo(ip:Stringpassword:String,port:int):void+surfaceCreatcd(surfaceholdcr:surfaceholder):void+surfaceDestroycd(surfacchotdcr:surfaccholder):void用显示输入、输出设备的驱动将Android的软件系统和底层的硬件联系起来;对于上层,GUI系统提供了Java层次图2VideoMonitor类图44‘电视技术>第∞卷第3期(总第378期)I投稿网址hUp:IlwvcN.WalooE.oa万方数据V・_投・——lNFORMATIONr‘,coTERM信IN息AL终&端DI与SP显LA示YlIt-,i_“・Iof登录界面效果如图3所示。2)编译libavudl.8首先,在libavutil里创建一个Android.mk文件.然后在libavuti]里的makefile文件调用subdir.mak就实现了真正的编译.需要注意的是在Andx=0id.mk下书写∞ke文件可以在此省略,只要直接把对应的源文件引人即可;标准的makdlle是指定.0目标文件,但是在Android,mk中需要直接指定.c源文件,A_ladmid.mk文件如下所示:LOCM,PATIt:=MYM(callmy-dlr)include¥(CLEAJ乙VAR5)LOCAL—MODULE.=a“I图3登录界面效果LOCAL_SRC脚:=edler32.c…・、、&2音视频解码inelu&MYM(BUILD_SI'A]]C..LIBRARY)本设计的核心只需要利用解码算法对视频文件解封装以及对音视频解码,因为若将整个远程视频实时监视的系统全部移植到Android平台上。可能会造成大批量代码其中,在编译时出现的错误大部分来自于头文件没有引入,例如不识别某些文件的size—t关键字在该文件includestdio.h后就不报错等类似问题,修改时只需要把对应的头文件引入即可。其他层也可以按照以上相同的冗余。同时,整个项目的开发是基于Linu.x操作系统,忽视了手机平台能源不足、处理能力不够大等限制因素的问题,所以面对客户端手机的功能需求来说,将解码算法进方法书写Android.-nk文件。并移植到Android平台。3.2.2解码算法的修剪及优化行移植、修剪和优化是很重要的。3.2.1解码算法的移植在Linux下编译运行解码代码时,要经过三步才能将解码算法正确的编译到Linux系统中。即configure.nlaJ【e,makeNDK的makefile文件是由co刚e发布,实质是加一&oid.mk文件,其语法和一般的makeffie文件有很多相异点。因为原有的makefile文件在跨平台编译时不能被使install。第一步configure过程中将生成1个COIl・figure.h和1个make文件,作用是查找此次编译了何种文件。经过操作和尝试发现可以在configure源代码中添加多种配置参数,这些参数包括基本选项参数、高级选项参数以及专门提供的优化参数,而优化参数就是用于配置编译过程中用到的编译内容。因此本设计也利用这些优化参数,择优选择出合适的方法查询出远程视频实时监视需用,所以将解码算法里的makefile文件全部替换成NDK中的Android.Ⅱlk文件是解码算法移植的岿要条件。通过对解码层结构的分析可以看出,最基础模块是avutil,基于已经编译好的avutil模块之上的是avcodec模块,基于avutil和avcodec两者模块之上的是avformat模块。依据这种结构,本设计将编译移植的顺序由下到上设计为avu-m,avcoedec。avformat,编译的步骤如下说明:要的文件,而解码算法的修剪即将其中不需要的文件进行1)说明cora唔h和config.mak文件config.h和config.mak文件非常重要,因为很多不同/∞_16舭…ble_岫i帅,—击蛆bI争er日讨e4—eII枷e-目E0d时=h孤,小bie・棚coder=amr_rlh—diBa¨c・p一*en・抽Uc・h矗H㈣hie删除。编译时设置的参数如下所示:2咖—抽bk・pmt∞ds—t腿bI争pmtccd=file其中,参数配置在编译源文件过程中。整个项目只有一部分编译到链接库.分别是H264、aJ[rff—nb的编码方的文件都会用到includeconfi昏h,编译器也会依据它而优先选择对代码编译。此外,解码器自带的make矗le框架通过configure命令之后将产生1个config.h文件和1个eonfig.malt文件,2个文件加起来共有600—700个宏定义,这些宏定义主要用于描述编译后代码各部分的参数设法、3印的文件封装格式、解封装文件的源代码以及全部的懈码格式。而链接库里已被编译的源代码的集合就是本设计所需要的源代码的有效集,可以通过confi目a'e.h和BlUe文件中的后缀名为.o文件来进行查找。编译.c代码时生成的目标文件其后缀名为.o的文件,因为任何—个被编译的.c文件都能生成.0文件,所以可以利用查找后缀名为.O文件的方法来判断配置参数下有哪些文件置,包括体系架构、编译器、版本、头文件、编解码器等设置。与此同时.有关平台差异方面的定义在此部分需要重新修改,例如把体系架构改成Android平台下的ARMv5TE。只有这样编译时的指令集才不会选择X86的指令集而是ARM的指令集。被编译,哪些没有被编译,最后便可以得出本设计所需要的已编译的源文件的最小集合。投稿阿址http://wwwVideoE.∞I‘电视技术)第∞警第3期【总第3孢期J万方数据45_孙陶RM盯删砟R㈣怎饕开源代码目前能够跨平台编译运行,但是由于手机的CPU处理能力、能源、内存等各方面的限制资源都与PC机存在很大的不同,因此,本设计针对客户端手机的特性来对代码进行优化,具体有以下几点:1)去除冗余代码以及调试过程中的打印语句,减少if-else的判断及不必要的代码冗余,对局部和全局变量进行调整,对程序结构进行规范,使用寄存器变量代替局部变量。2)由于逻辑移位指令的执行时间远远小于乘除运算指令,因此乘除操作可以用逻辑移位运算来代替,特别是除法指令,被代替后能够缩短指令运行的时间。3)在编写代码过程中,尽量避免多重循环函数的调用以及尽量降低上下次循环的相关性,这样做可大大减少没必要的计算量。4)设置合理的缓存,设置适合解码算法移植的目标平台Android平台的缓存大小。3.3数据预处理层本层针对本地文件的预处理可以依赖于解码算法解封装功能,但是对流媒体文件的预处理需要将—个或多个RTP数据包整合在一起,其中传输阶段主要任务是为解码模块提供RTP数据包瞪】。RTP实现流程如图4所示。伊lllc柚mme(name,20);囊甥致簟tI●4t“etA‘trtag3)获取且保存本地IP地址,随机产生同步源标志、创建新的同步源和设置规范名。关键代码如下:诹(h=铲蛐yII呦e(咖懈))!=MⅡL){P=inet_moa(・((amctinaddr・)h一>h4ddr))omepr(src..ip..add。p);f4)判断会话是否结束。若是,结束网络数据接收线程;若不是,进入步骤5)。5)接收R皿包,该部分由函数RTP—Receive(contextcid,intfd,char}payload,int水len,structsockaddr晕sin)完成。6)更新新包号的顺序,设置序列号和信息时间标签。7)将步骤5)中接收到的R11P数据包加入视频帧缓冲区中,为解码使用做准备。8)回到步骤4)继续执行。&4数据提取层该层完成主要功能是与流媒体服务器端协商媒体信息细节,并根据协商结果从服务器端获取流媒体数据,将流媒体数据存入缓冲区,按照本设计缓冲方案将数据包发送给数据预处理层,其结构图如图5所示。f服务器TRTSP/TCPTRTP/UDPTRTCP/U图5数据获取模块结构图该层一共启动5个线程,其中1个线程中启动TCP连接,用于RTSP会话协商并且在RTP数据传输期间,该TCP连接必须一直保留。2个线程分别为接收音频和视频RTP数据的线程,另外2个线程分别为接收以及发送图4R’IP实现流程音频和视频的RTCP数据包№J。1)函数RTP_Create(context木the—context)用于完成RTP会话的初始化和为其上下分配内存,函数先调用ⅡPContext_Create(the—context),然后再调用RTP—Session—Save_Cxinfo(宰the_context,conxcc),从而完成RTP会话初始化后上下文信息的创建和保存。2)创建RTP结构,此部分由函数Create_Socket()完成,先调用seckfd=socket(AF_INET,SOCK_DGRAM,0)来创建套接字,若创建成功,则可调用bind(sockfd,(structsockaddr事)&local,sizeof(10cal)绑定套接字。4视频客户端测试首先在Pc机进行模拟测试,即在Android编译环境eclipse中将程序运行,通过模拟器测试成功。然后将程序移植到具备Android操作系统的手机里,利用WiFi无线网络连接服务器并且通过了权限访问,测试结果验证了此视频客户端软件在功能上满足设计的基本需求。其效果如图6所示。46<电视技术>第∞卷第3m(总第378期)J投稿网址htlp:肌州w.VicbDE朋万方数据蕊~lNFORMATIONI参考文献:[I]CedeH叩EAn由0id-An信息终端与显示阳TERMINAL&DISPLAYI■0p哪Hand耐^llim耽P|面靶l[EB,oL].[2011一isO*.-X5]http://code.C:4Jode.cam/androld/whataadmid.H札[2]赵亮.张维.基于Andmid技术的界面设计与研究[J].电脑知识与技术,2009.29(5):8183-8185.[3]陈瑕.陈平华,李文亮.Android内棱分析[J].现代计算机.2009(II):112—115.[4]余志龙.c∞一eAndmidSDK开发范倒大全[M】.北京:人民邮电出图6远程实时视频监控效果围(截图)版社,2009.[5]魏聪颖.基于实时漉煤体传输系统的托264组包算法研兜【J】.计5结论本文实现了客户端基于Android平台的远程视频实时监视功能,能够播放本地及流媒体视频文件。远程视频实时监视系统整体采用分层的设计理念,本文分析了各层的结构特点和关键技术.并对解码层的源代码进行了修剪和优化。通过对各层的设计,还实现了访问权限的设置、播放、暂停等功能。本文移植的程序代码目前能够稳定的在手机E运行。该设计具有一定的通用性和开放性。可以被应用到其他的客户终端,对Android开发~员有—定的借鉴意义。(上接第25页)算机科学.2∞7(34】:4l—4t[6]西刺子.安肪天下—智能网络税撷监控技术详解与实践[M].北京:清华大学出版杜.2010:3—10.守作者两介:插啊掘11971一).博士.焉士导师.教授。主要研究方向为语音信号处理、嵌入式磊统:毕晶II蚺6一}.女.焉士生。主薹研究方向为嵌入式曩缝较件开发、嵌入式Ij陬驱动。责任螭辑:任■男投稿日期:2011-11-18与ADI算法相比,能提供相同或稍好的性能。参考文献:[I]粱夫或,李娟.门爱东.现代税额编码关键技术及其发展[J].电力系统通信.a006,161(3):1--4.[2】林福宗,小渡与小波变换【EB/OL](2011.-07一∞]http://weaku.haidu.cora/view/f155e562edc789ebl72dc85^hun].[3】YUSL.CHRYSAFISc.JVT-C151,Newhpmtictlon晡%im—motio・l“∞mBⅢm[R].[S1.】:jcr,2002.Tmaen】blcck[4】TANK,BOONCs,SUZUKIY.Intraprediclieabytemplatemm地[c】//P№.IClP2嘶.[S.1.]:IEEEEre=。2(306:1693—1蛳.[5]YEY,KARCZEWICZM.ImprovedreetionalintmH264intntcodingbased∞bidi-prediction.directionaltrandorm,sad‘canning[c】∥PMIc驴2008.Is4COO1400024I]:岫睫P‰.猢:2116-2119.ad删"eoeflieieatm吨AdapuveO∞¨00044∞0比特奉/(kbit・・‘q54000[6]PENGxL.XUJz.WUF.Line—basedImageCodingPredicfionFilters【c]IIP,m.Isc?Ls2010.[S.1]:唧弧Pm,s,2010:图2谈算法与ADI算法的码率.PSNR比较图表1该算法与ADI算法BDBitrates结果比较4221-4224.【7】UGUBK,ANDERSSONK.FULDSETHA.JCTVC—A119d哪d口li佃0fvideo∞di|喀搬洲。盯propodbyTandbe=g,Nob-,Edc=m[R][S.^嘲ACUANG-5.哺-5.¥9t-7.帏一7.幡一n蛳一王7%一^撕■一&l簟一tO%一n5*一Z7*一5.O●%1.]:JCT-VC。20tO.[8]BJONTEGAAP,DG.VCF.G-M3calcalatimaf“mpbetweenPs脓diff㈣寺RDⅫ∞[R].[s.1.】:r兀J-T,2001.枝藕日期:2011-妊104结束语本文提出一种新的任意方向帧内预测算法。该算法蠢任_辑.时霎万方数据投疆霸址mtp://洲.V・deoE瑚I‘电视技术'第∞卷第3期I总第378期)47基于Android视频客户端的设计
作者:作者单位:刊名:英文刊名:年,卷(期):
杨明极, 毕晶, YANG Mingji, BI Jing
哈尔滨理工大学测控技术与通信工程学院,黑龙江哈尔滨,150080电视技术
Video Engineering2012,36(3)
本文链接:http://d.g.wanfangdata.com.cn/Periodical_dsjs201203014.aspx