一种视频倒放的方法

文档序号:9307054阅读:854来源:国知局
一种视频倒放的方法
【技术领域】
[0001]本发明涉及计算机领域,尤其是一种视频倒放的方法。
【背景技术】
[0002]目前,广泛使用的视频文件主要有I帧、P帧几种帧类型。其中I帧称为帧内编码帧,是一种自带全部信息的独立帧,视频序列中的第一个帧始终都是I帧,其无需参考其它图像便可独立进行解码。如果所传输的比特流遭到破坏,则需要将I帧用作新的起始点或重新同步点;p帧也称为帧间预测编码帧,P帧不能够独立解码,必须参考前面的I帧或P帧才能进行编码。与I帧相比,P帧通常占用更少的数据位,但由于P帧对前面的P帧和I帧有着复杂的依赖性,因此对传输错误非常敏感。
[0003]视频播放时必须先解码I帧,再解码依赖该I帧的P帧,方可正确解码,清晰播放,否则会出现花屏或者无法播放。
[0004]在视频倒放时,由于P帧无法单独解码播放,必须依赖I帧解码,而在原始视频文件的倒播过程中,I帧始终处于依赖I帧的P帧之后,因此需要为P帧寻找I帧,在找到P帧所依赖的I帧之后,才可以进行视频的解码播放。目前视频倒放方法一般为单帧播放方式,播放时,设置数据存放缓冲区和数据解码缓冲区,倒着读文件,遇到P帧先放入数据存放缓冲区,直至遇到I帧并将I帧存入数据存放缓冲区,然后,解码数据存放缓冲区中依赖此I帧的所有P帧保存至数据解码缓冲区,完成后,从数据解码缓冲区中取出解码好的数据来播放。这种方法在寻找I帧和缓冲区数据读写过程中耗费了大量时间,导致解码速度慢,因此在实时倒放时会产生卡顿或花屏现象,无法保证流畅的倒放,而为解决视频倒放时卡顿和花屏问题,重点是提升倒放视频的解码速度。

【发明内容】

[0005]为此,本发明提供了一种视频倒放的方法,本方法通过对原始视频文件进行预处理,节省了视频倒放时的寻找I帧和缓冲区读写的时间,显著提升了解码速度,保证了视频倒放过程的流畅性。
[0006]本发明解决上述技术问题的技术方案如下:
[0007]—种视频倒放的方法,包括以下步骤:
[0008]S1、对原视频文件进行预处理,生成适用于视频倒放的新视频文件;
[0009]所述预处理包括将原视频文件中的所有I帧逆序存储,并将I帧存储于依赖所述I帧的P帧之前;
[0010]S2、对所述新视频文件正向播放。
[0011]优选的,SI中预处理方法包括以下步骤:
[0012]S11、逆向读取原视频文件,若读取结果为P帧,则将所述P帧加入缓冲区,若读取结果为I帧,则将所述I帧写入新视频文件,进行步骤S12 ;
[0013]S12、判断所述缓冲区是否为空,若非空,则进行S13,若为空,则进行S14;
[0014]S13、将缓冲区内容按写入所述缓冲区的先后顺序,依次写入所述新视频文件,清空队列缓冲区;
[0015]S14、判断是否已经读取到原视频文件尾部,若是,则保存新视频文件,预处理结束;若否,继续进行S11。
[0016]优选的,所述缓冲区为队列缓冲区。
[0017]优选的,在S13中从队列缓冲区头部取出缓冲区中数据,并将所述数据写入新视频文件。
[0018]优选的,S2中所述正向播放方法为:
[0019]正向读取新视频文件,根据P帧所依赖的I帧依次对所述P帧解码并播放。
[0020]优选的,所述正向播放方法中,遇到I帧只解码不播放。
[0021]优选的,所述I帧是一种自带全部信息的独立帧,无需参考其它数据便可独立进行编解码;所述P帧需要依赖与所述P帧相关的I帧进行编解码。
[0022]本发明的有益效果是:
[0023]本发明通过对原始视频文件预处理生成了新的视频文件,而使用新的视频文件在视频倒放的过程中,节省了视频倒放时的寻找I帧和缓冲区读写的时间,显著提升了解码速度,保证了视频倒放过程的流畅性,从而解决视频倒放时卡顿和花屏问题。
【附图说明】
[0024]图1为传统的视频文件存储方式;
[0025]图2为本发明预处理后的视频文件的存储方式;
[0026]图3为本发明预处理的流程图。
【具体实施方式】
[0027]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。
[0028]在一个实施例中,一种视频倒放的方法,包括以下步骤:
[0029]S1、对原视频文件进行预处理,生成适用于视频倒放的新视频文件;所述预处理包括将原视频文件中的所有I帧逆序存储,并将I帧存储于依赖所述I帧的P帧之前;
[0030]S2、对所述新视频文件正向播放。
[0031]原视频文件如图1,其中,I代表关键帧I帧,P代表P帧,原视频文件按如下结构存储:
[0032]I1-P101-P102-P103......P124-12-P201-P202-P203......P224......,
[0033]以I1-P101-P102-P103……P124这段数据为例,原视频文件先保存Il帧,然后是依赖Il帧解码的P101-P124等P帧,但是,在倒放时,应该先播放P124,再播放P123...最后播放Il帧,而P124、P123...PlOl等P帧必须在Il帧解码后才能正确解码。因此,普通倒放方法为:在倒放时需要设置数据存放缓冲区和数据解码缓冲区,倒着读文件,遇到P124、P123...PlOl先放入数据存放缓冲区,直至遇到Il帧并将Il帧存入数据存放缓冲区,然后,依次解码数据存放缓冲区中的P124、P123...PlOl并将解码结果保存至数据解码缓冲区,完成后,从数据解码缓冲区中取出解码好的数据来播放,而这种寻找Il帧和缓冲区读写的过程都需要耗费大量时间。
[0034]为实现流畅倒放,本方法SI对视频文件进行预处理生成了新视频文件,对应于图1的原视频文件的所述新视频文件结构如图2所示为:
[0035]......12-P224-P223-P222......P201-11-P124-P123-P122......PlOl,新视频文件的数据存储顺序与视频倒放时对数据的解码顺序相一致。在所述新视频文件中的所有I帧的存储顺序与原视频文件中的I帧存储顺序相反,依赖于所述I帧的P帧存储于所述I帧与所述I帧存储位置的下一个I帧之间,依赖于所述I帧的所有P帧的存储顺序与原视频中相应的P帧存储顺序相反。
[0036]预处理过程如图3所示,包括:
[0037]S11、逆向读取原视频文件,若读取结果为P帧,则将所述P帧加入队列缓冲区尾部,若读取结果为I帧,则将所述I帧写入新视频文件,进行步骤S12 ;
[0038]S12、判断所述队列缓冲区是否为空,若非空,则进行S13,若为空,则进行S14;
[0039]S13、将队列缓冲区头部内容依次取出并写入所述新视频文件,清空队列缓冲区;
[0040]S14、判断是否已经读取到原视频文件尾部,若是,则保存新视频文件,预处理结束;若否,继续进行S11。
[0041]S2中所述正向播放方法为:
[0042]正向读取新视频文件,根据P帧所依赖的I帧依次对所述P帧解码并播放。
[0043]优选的,所述正向播放方法中,遇到I帧只解码不播放。
[0044]优选的,所述I帧是一种自带全部信息的独立帧,无需参考其它数据便可独立进行编解码;所述P帧需要依赖与所述P帧相关的I帧进行编解码。
[0045]以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
【主权项】
1.一种视频倒放的方法,其特征在于,包括以下步骤: 51、对原视频文件进行预处理,生成适用于视频倒放的新视频文件; 所述预处理包括将原视频文件中的所有I帧逆序存储,并将I帧存储于依赖所述I帧的P帧之前; 52、对所述新视频文件正向播放。2.根据权利要求1所述的一种视频倒放的方法,其特征在于,SI中预处理方法包括以下步骤: 511、逆向读取原视频文件,若读取结果为P帧,则将所述P帧加入缓冲区,若读取结果为I帧,则将所述I帧写入新视频文件,进行步骤S12 ; 512、判断所述缓冲区是否为空,若非空,则进行S13,若为空,则进行S14; 513、将缓冲区内容按写入所述缓冲区的先后顺序,依次写入所述新视频文件,清空队列缓冲区; 514、判断是否已经读取到原视频文件尾部,若是,则保存新视频文件,预处理结束;若否,继续进行S11。3.根据权利要求2所述的一种视频倒放的方法,其特征在于,所述缓冲区为队列缓冲区。4.根据权利要求3所述的一种视频倒放的方法,其特征在于,在S13中从队列缓冲区头部取出缓冲区中数据,并将所述数据写入新视频文件。5.根据权利要求1-4中任意一项所述的一种视频倒放的方法,其特征在于,S2中所述正向播放方法为: 正向读取新视频文件,根据P帧所依赖的I帧依次对所述P帧解码并播放。6.根据权利要求5所述的一种视频倒放的方法,其特征在于,所述正向播放方法中,遇到I帧只解码不播放。7.根据权利要求6所述的一种视频倒放的方法,其特征在于,所述I帧是一种自带全部信息的独立帧,无需参考其它数据便可独立进行编解码;所述P帧需要依赖与所述P帧相关的I帧进行编解码。
【专利摘要】本发明涉及一种视频倒放的方法,本方法为通过对原视频文件进行预处理,生成新视频文件,对新视频文件正向解码,顺序播放即可实现视频倒放,在倒放过程中,对I帧只解码不播放。本发明通过对原始视频文件预处理生成了新的视频文件,而使用新的视频文件在视频倒放的过程中,节省了视频倒放时寻找I帧和缓冲区读写的时间,显著提升了解码速度,保证了视频倒放过程的流畅性,从而解决视频倒放时卡顿和花屏问题。
【IPC分类】H04N21/44, H04N21/4402
【公开号】CN105025357
【申请号】CN201510303283
【发明人】周超, 韩珍
【申请人】北京中电兴发科技有限公司
【公开日】2015年11月4日
【申请日】2015年6月5日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1