基于Android系统的录像无丢帧分段存储方法及系统的制作方法

文档序号:9671113阅读:2007来源:国知局
基于Android系统的录像无丢帧分段存储方法及系统的制作方法
【技术领域】
[000?]本发明涉及录像存储领域,特别涉及一种基于Android系统的录像无丢帧分段存储方法及系统。
【背景技术】
[0002]市场上基于监控类的产品应用很广,如行车记录仪、监控摄像头等,虽然不同监控产品所要求的侧重点不大一样,如行车记录仪要求高清,单/双路录像;监控摄像头要求多路录像,但是所有的监控产品都需要分段保存录像,因此确保分段录像之间不能够丢帧是所有监控产品共同要求,且十分重要。
[0003]目前在基于Android系统上实现不丢帧功能主要有两大类:其一,利用Android现有的MediaRecorder API在应用上做分段,S卩应用保存好上一段录像后,马上使能下一段录像,其整个切换过程在系统10顺畅的情况下也会有200Ms左右的开销,在系统10堵塞的情况下,则可能会出现几秒钟的间隙,这将严重影响到实际的录像;其二,移植非Android标准的录像框架,这种方式存在以下缺陷:技术难度大,需要熟悉Camera、音频输入、音视频编解码等技能,且实现后可移植性差,不能适配不同芯片平台,核心框架不是标准API,第三方无法基于此框架进行开发,后期维护难度其大,同时还得维护Camera与音频相关的资源如何跟系统进行共用的问题,不可预知的问题太多。

【发明内容】

[0004]本发明要解决的技术问题之一,在于提供一种基于Android系统的录像无丢帧分段存储方法,通过该方法实现录像无缝分段保存的目的,提高录像的质量。
[0005]本发明是这样实现技术问题之一的:基于Android系统的录像无丢帧分段存储方法,该方法包括:
[0006]在Stagefright框架中添加录像分段接口函数,在Writer中添加分段函数对外接P;
[0007]将Writer的具体实现拆分成对外接口类和实现类,该对外接口类通过调用实现类实现录像功能;
[0008]开启录像,监听到已录制完一段录像,对外接口类通知该段录像的实现类停止录像,同时初始化下一段录像的实现类;
[0009]该段录像的实现类向编码器要求IDR帧,要求IDR帧后在遇到所要求的IDR帧时,退出该段录像,保存该段录像数据;
[0010]下一段录像的实现类先抽取要求的IDR帧,再从编码器抽取编码帧继续录像。
[0011 ] 进一步地,所述“在Stagefright框架中添加录像分段接口函数”具体为:在Java层的MediaRecorder类以及该类所对应的jni接口中均添加录像分段接口函数,在Native层的Mediarecorder类直到StagefrightRecorder类中均添加录像分段接口函数。
[0012]进一步地,所述“在Writer中添加分段函数对外接口”具体为:在Stagefright框架的Writer中直接添加分段函数对外接口实现分段函数对外接口功能。
[00?3] 进一步地,所述“在Writer中添加分段函数对外接口”具体为:在Stagefright框架的MediaWriter接口类中先添加分段函数对外接口,Waiter再继承MediaWr iter接口类实现分段函数对外接口功能。
[0014]进一步地,所述“开启录像”具体为:APP先调用Writer设置录像的参数,对外接口类保存设置的参数值,然后开启录像功能进行录像。
[0015]进一步地,所述参数至少包括帧率以及每段录像的时长或文件大小。
[0016]进一步地,所述“监听到已录制完一段录像”具体为:一段录像的实现类在监听到录像已达到设置的时长或文件大小时,就告知APP,APP再向对外接口类发送停止该段录像,同时开始下一段录像的请求。
[0017]进一步地,所述“该段录像的实现类向编码器要求IDR帧”具体为:该段录像的实现类收到通知后,马上向编码器要求IDR帧,并继续抽取编码器中缓存的编码帧进行录像,直到遇到要求的IDR帧。
[0018]本发明要解决的技术问题之二,在于提供一种基于Android系统的录像无丢帧分段存储系统,通过该系统实现录像无缝分段保存的目的,提高录像的质量。
[0019]本发明是这样实现技术问题之二的:基于Android系统的录像无丢帧分段存储系统,该系统包括:
[°02°] 接口添加模块,用于在Stagefright框架中添加录像分段接口函数,在^^ter中添加分段函数对外接口 ;
[0021]实现拆分模块,用于将Writer的具体实现拆分成对外接口类和实现类,该对外接口类通过调用实现类实现录像功能;
[0022]录像监听模块,用于开启录像,监听到已录制完一段录像,对外接口类通知该段录像的实现类停止录像,同时初始化下一段录像的实现类;
[0023]分段录像退出模块,用于该段录像的实现类向编码器要求IDR帧,要求IDR帧后在遇到所要求的IDR帧时,退出该段录像,保存该段录像数据;
[0024]分段录像切换模块,用于下一段录像的实现类先抽取要求的IDR帧,再从编码器抽取编码帧继续录像。
[0025]进一步地,所述“在Stagefright框架中添加录像分段接口函数”具体为:在Java层的MediaRecorder类以及该类所对应的jni接口中均添加录像分段接口函数,在Native层的Mediarecorder类直到StagefrightRecorder类中均添加录像分段接口函数。
[0026]进一步地,所述“在Writer中添加分段函数对外接口”具体为:在Stagefright框架的Writer中直接添加分段函数对外接口实现分段函数对外接口功能。
[°027 ] 进一步地,所述“在Writer中添加分段函数对外接口”具体为:在Stagefright框架的MediaWriter接口类中先添加分段函数对外接口,Waiter再继承MediaWr iter接口类实现分段函数对外接口功能。
[0028]进一步地,所述“开启录像”具体为:APP先调用Writer设置录像的参数,对外接口类保存设置的参数值,然后开启录像功能进行录像。
[0029]进一步地,所述参数至少包括帧率以及每段录像的时长或文件大小。
[0030]进一步地,所述“监听到已录制完一段录像”具体为:一段录像的实现类在监听到录像已达到设置的时长或文件大小时,就告知APP,APP再向对外接口类发送停止该段录像,同时开始下一段录像的请求。
[0031]进一步地,所述“该段录像的实现类向编码器要求IDR帧”具体为:该段录像的实现类收到通知后,马上向编码器要求IDR帧,并继续抽取编码器中缓存的编码帧进行录像,直到遇到要求的IDR帧。
[0032]本发明具有如下优点:1、可以实现录像无缝分段保存,且不会出现丢帧情况,同时不需要每一段录像都重新连接Camera,减少了不稳定因素的影响,可以提高录像的质量;2、对后期版本的升级以及移植的技术要求非常低,只需要熟悉本发明技术即可,而不需要关注所开发平台的硬件情况;3、可以在不同主控厂家的平台上实现无缝移植。
【附图说明】
[0033]下面参照附图结合实施例对本发明作进一步的说明。
[0034]图1为本发明方法执行流程图。
[0035]图2为本发明系统的结构框图。
[0036]图3为现有技术中连续录制两段录像的流程示意图。
[0037]图4是本发明较佳实施例连续录制两段录像的流程示意图。
【具体实施方式】
[0038]请参照图1所示,基于Android系统的录像无丢帧分段存储方法,所述方法包括如下步骤:
[0039]步骤A1、在Android系统的Stagefright框架中添加录像分段接口函数,该录像分段接口函数的参数可以为文件路径或者文件句柄;在Writer(Writer是Stagefright中各个类型文件的打包类总称,例如MPEGWriter、WebmWriter、MPEG4TSWriter等等)中添加分段函数对外接口,在使用时,可以通过录像分段接口函数实现对分段函数对外接口的调用。当然,录像分段接口函数和分段函数对外接口都是在原有的Stagefright框架的基础上进行添加的,即需要保留原有的接口函数和原有的对外接口,以实现原有的各种功能。
[0040]所述“在Stagefright框架中添加录像分段接口函数”具体为:在Java层的MediaRecorder类以及该类所对应的jni接口中均添加录像分段接口函数,在Native层的Mediarecorder类直到StagefrightRecorder类中均添加录像分段接口
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1