一种视频倒放方法和装置与流程

文档序号:12134029阅读:473来源:国知局
一种视频倒放方法和装置与流程

本发明涉及视频技术领域,具体涉及一种视频倒放方法和装置。



背景技术:

由于视频倒放(即倒序播放)会带来有趣的效果,给人们带来很大的乐趣,因此,视频倒放技术被广泛应用在各种视频的播放中。

目前,视频倒放方案具体为:先把最后一个GOP(Group ofPictures,画面组)按从先到后的顺序解码出来,把每一帧的解码数据存入内存中,然后按照时间要求,显示出来。当最后一个GOP播放完毕,再解码出倒数第二个GOP的所有的帧,存入内存中,然后按照时间要求显示出来。

然而,目前视频倒放方案需要把GOP里所有帧的解码数据存入内存,因此,会导致视频倒放占用大量的内存,即增加了内存占用量。



技术实现要素:

本发明实施例提供一种视频倒放方法和装置,可以减少内存占用量。

本发明实施例提供一种视频倒放方法,包括:

接收视频倒放指令,所述视频倒放指令指示需要倒放的视频文件;

根据所述视频倒放指令,获取所述视频文件中视频帧组所需的解码时间、以及所述视频文件中视频帧所需的播放时间;

根据所述解码时间和所述播放时间确定并行解码的视频帧数量;

根据所述视频帧数量并行地对视频文件中视频帧进行逆向解码,得到视频数据;

对视频数据进行倒序播放。

相应的,本发明实施例还提一种视频倒放装置,包括:

接收单元,用于根据所述视频倒放指令,获取所述视频文件中视频帧组所需的解码时间、以及所述视频文件中视频帧所需的播放时间;

确定单元,用于根据所述解码时间和所述播放时间确定并行解码的视频帧数量;

解码单元,用于根据所述视频帧数量并行地对视频文件中视频帧进行逆向解码,得到视频数据;

播放单元,用于对视频数据进行倒序播放。

本发明实施例采用接收视频倒放指令,该视频倒放指令指示需要倒放的视频文件,然后,根据该视频倒放指令,获取该视频文件中视频帧组所需的解码时间、以及该视频文件中视频帧所需的播放时间,根据该解码时间和该播放时间确定并行解码的视频帧数量,根据该视频帧数量并行地对视频文件中视频帧进行逆向解码,得到视频数据,对视频数据进行倒序播放;由于该方案可以基于视频帧组所需的解码时间以及视频帧所需的播放时间来确定每次并行解码的视频帧数量,且并行地对该数量的视频帧进行逆向解码;因此,该方案在每次解码后无需将GOP里所有帧的解码数据存储至内存,可以减少在倒放过程中存储至内存的解码数据量,因此,相对于现有技术而言,可以大大减少内存占用量或者使用量。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1a是本发明实施例提供的视频倒放方法的流程图;

图1b是本发明实施例提供的视频帧示意图;

图1c是本发明实施例提供的GOP示意图;

图2是本发明实施例提供的视频倒放方法的另一流程图;

图3是本发明实施例提供的视频倒放装置的结构示意图;

图4是本发明实施例提供的终端的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供一种视频倒放方法和装置。以下分别进行详细说明。

实施例一、

本实施例将从视频倒放装置的角度进行描述,该视频倒放装置具体可以集成在终端等设备中,该终端可以手机、平板电脑、或者笔记本电脑等设备。

一种视频倒放方法,包括:接收视频倒放指令,该视频倒放指令指示需要倒放的视频文件,然后,根据该视频倒放指令,获取该视频文件中视频帧组所需的解码时间、以及该视频文件中视频帧所需的播放时间,根据该解码时间和该播放时间确定并行解码的视频帧数量,根据该视频帧数量并行地对视频文件中视频帧进行逆向解码,得到视频数据,对视频数据进行倒序播放。

如图1a所示,一种视频倒放方法,具体流程可以如下:

101、接收视频倒放指令,该视频倒放指令指示需要倒放的视频文件。

其中,视频文件可以包括若干视频帧,比如,可以包括视频帧序列。具体地,该视频文件可以包括关键帧(如帧内编码帧)和非关键帧(如前向预测编码帧)。参考图1b,其中,I代表关键帧,P代表非关键帧。在正向播放视频时可以先解出该P帧之前最近的I帧,然后依次往后解,才能解出该P帧。

该视频文件中关键帧到下一个关键帧的前一帧的视频帧组,称为GOP(Group ofPicture,画面组),参考图1c。

本实施例中,视频文件的格式多种,比如,可以MPEG(Moving Picture Experts Group,动态图像专家组)、MPEG1、MPEG2、或者其他格式。

其中,视频倒放指令可以通过触发终端中预设触发键或输入框等触发接口来进行触发,比如,当用户点击或划过某个图标时,则触发生成该视频倒放指令,此时,该视频倒放装置便可以对该视频倒放指令进行接收,比如,通过预设的指令接收接口对该视频倒放指令进行接收,等等。

该视频倒放指令可以携带视频文件的标识等信息。

102、根据该视频倒放指令,获取该视频文件中视频帧组所需的解码时间、以及该视频文件中视频帧所需的播放时间。

具体地,根据视频倒放指令获取视频文件,然后,获取该视频文件中视频帧组所需的解码时间、以及该视频文件中视频帧所需的播放时间。

其中,获取视频文件的方式可以有多种,比如,可以根据视频倒放指令从本地存储单元中获取视频文件,又比如,可以根据视频倒放指令从网络服务器获取视频文件。

本实施例中,该视频帧组可以连续视频帧组成,可以根据实际需求设定。比如可以为关键帧到下一个关键帧的前一帧的视频帧组,即GOP。此时,解码时间可以为解码一个GOP所需的时间,即从起始关键帧开始,解码到该GOP最后一帧的时间。

优选地,解码时间可以为解码一个GOP所需的最长时间,即最坏情况下解码一个GOP所需的时间。例如,正常情况解码GOP所需的时长为150ms,在异常情况如CPU负载过大等情况下解码GOP所需的时长为200ms,此时,便可以选择200ms。

该视频帧所需的播放时间可以为视频文件中视频帧的播放时长或者显示时长。一般来说解码一个GOP的时间大于一个视频帧的播放时间。

本实施例中解码时间可以对视频文件中GOP进行实际解码得到,也可以预先设置,比如,在接收到视频倒放指令之前,预置一个GOP的解码时间等等。

可选地,在一些其他实施方式中,可以预先获取帧数解码时间映射关系集合,该集合包括GOP内帧数与解码时间之间的映射关系,此时,便可以根据GOP内的帧数、和该映射关系集合获取相应的解码时间。

视频帧的播放时间获取方式也可以有多种,比如视频帧一般包括视频帧的起始播放时间,因此,可以根据视频帧的起始播放时间以及与其相邻的视频帧的起始播放时间,获取视频帧所需的播放时间。

本实施例中,还可以根据视频帧率和视频帧的总数量,获取视频帧所需的播放时间;比如,一个1000帧的视频,视频帧率是25fps,此时,每帧显示时长为1000/25=40ms。

103、根据该解码时间和该播放时间确定并行解码的视频帧数量。

该并行解码的视频帧数量可以为每次进行并行的视频帧数量。

优选地,该视频帧数量小于视频帧组如GOP所包含的视频帧数量。这样,可以使得在初始播放阶段保存少量的解码数据,减少内存的占用量。

具体地,为保证在视频帧的播放时间达到之前能够解码该视频帧,提高视频播放质量,本实施例需要设置一个合理的并行解码视频帧数量,如可以基于该解码时间和该播放时间之间的除法商值来确定并行解码的视频帧数量;也即步骤“根据该解码时间和该播放时间确定并行解码的视频帧数量”可以包括:

将该解码时间除以该播放时间,得到商值;

根据该商值确定并行解码的视频帧数量。

其中步骤“根据该商值确定并行解码的视频帧数量”可以包括:选取不小于该商值的最小整数作为并行解码的视频帧数量。

比如,该解码时间为m,视频帧播放时间为n时,该视频帧数量q=ceil(m/n)。ceil指取不小于m/n的最小整数。例如m=220ms,n=40ms,此时,m/n=5.5,那么q=6,又例如m=200ms,n=40ms,此时,m/n=5,那么q=5。

104、根据该视频帧数量并行地对视频文件中视频帧进行逆向解码,得到视频数据。

其中,逆向解码指的是从视频文件的最后一个视频帧开始向起始视频帧进行解码。比如,视频文件包括S帧,S为正整数,记为frame 1,frame 2,frame 3,…,frame S,那么此时,逆向解码为从frame S开始解码到frame 1。

为了加快视频倒放速度,本实施例可以设置若干解码线程并行地对视频帧进行解码,其中,解码线程的数量可以基于并行解码的视频帧数量确定;也即步骤“根据该视频帧数量并行地对视频文件中视频帧进行逆向解码”可以包括:

根据该视频帧数量确定需要启用的解码线程的数量;

根据该数量的解码线程并行地对视频文件中视频帧进行逆向解码。

优选地,解码线程的数量可以与视频帧数量一致,比如,当并行解码的视频帧数量为k时,那么即需要启动k个解码线程,k为正整数。

在逆向解码过程中,对于每个解码线程可以先确定其需要解码的视频帧,然后,再通过该解码线程对选取的视频帧进行解码;也即步骤“根据该数量的解码线程并行地对视频文件中视频帧进行逆向解码”可以包括:

从视频文件的视频帧中逆向选取解码线程当前需要解码的目标视频帧;

通过该解码线程对该目标视频帧进行解码。

其中,逆向选取指的是沿着以视频文件的最后一个视频帧为起点、视频文件的起始视频帧为终点的方向选取视频帧,比如,视频文件包括S个视频帧,那么此时,针对某个解码线程,逆向选取可以为依次选取第S个视频帧、第S-3个视频帧、第S-5个视频帧……第1个视频帧。

其中,对于每个解码线程,可以基于线程的数量和解码线程的历史解码视频帧逆向选取目标视频帧;也即步骤“从视频文件的视频帧中逆向选取解码线程需要解码的目标视频帧”可以包括:

根据该数量和解码线程的历史解码视频帧,从视频文件的视频帧中逆向选取解码线程需要解码的目标视频帧。

其中,解码线程的历史解码视频帧可以为前一次该解码线程解码的视频帧。

本实施例中,可以根据该数量和历史解码视频帧的标识逆向选取目标视频帧。比如,在对视频帧进行编号的情况下,可以根据数量和历史解码视频帧的编号逆向选取目标视频帧。在实际应用中,还可以为解码线程进行编号,此时,可以根据数量、解码线程的编号以及历史解码视频帧的编号逆向选取目标视频帧。优选地,该当前目标视频帧与历史解码视频的编号差值等于该数量值。

比如,视频文件包括S个视频帧,即视频帧1、视频帧2、……视频帧S;启动线程数量为k,记为T1,T2,T3,…Ti,Tk。对于线程Ti,第1次选取时历史解码视频帧为0,此时选取目标视频帧为视频帧S-i+1,第2次选取时,选取目标视频帧为视频帧(S-i+1)-k,第3次选取时,选取目标视频帧为视频帧(S-i+1)-2k,……第j次线选取时,目标视频帧为视频帧为(S-i+1)-(j-1)k。

本实施例中,在对目标视频进行解码得到视频数据后,可以将解码得到的视频数据添加至视频数据集合中,以便后续可以对视频数据集合中视频数据进行倒序播放,提升了视频倒放的速度。

105、对视频数据进行倒序播放。

其中,倒序播放指的是从最后一个视频帧向起始视频帧进行播放,如依次播放视频帧S的视频数据S、视频帧S-1的视频数据S-1……视频帧1的视频数据1。

具体地,可以按照播放时间对视频数据进行倒序播放,也即步骤“对视频数据进行倒序播放”可以包括:

获取当前视频播放时间;

根据该当前视频播放时间对视频数据进行倒序播放。

比如,根据当前视频播放时间确定需要播放的目标视频数据,然后,播放该目标视频数据。例如,视频文件包括视频帧1、视频帧2……视频帧S,每个视频帧的播放时长为n毫秒时,0毫秒播放最后一个视频帧S的视频数据S,n毫秒播放视频帧S-1的视频数据S-1、(k-1)*n毫秒时播放视频帧S-k+1的视频数据S-k+1……(2k-1)*n毫秒时播放视频帧S-2k+1的视频数据……(2k)*n毫秒时播放视频帧S-2k的视频数据……。

具体地,为了能够在视频帧的播放时间达到之前可以解码获取该视频帧的视频数据,本实施例可以在对某个解码线程解码的视频数据进行倒序播放时,再次对触发该解码线程再次对后续未解码视频帧进行解码。也即步骤“对视频数据进行倒序播放”可以包括:

对视频数据进行倒序播放,并在播放该视频数据时返回执行逆向选取解码线程需要解码的目标视频帧的步骤。

比如,启动线程数量为k,记为T1,T2,T3,…Ti,Tk,对于Ti,可以从视频帧中逆向选取Ti当前需要解码的目标视频帧为视频帧S-i+1(最后一个视频帧),在通过Ti对视频帧S-i+1进行解码后,得到视频数据S-i+1,后续在对视频数据S-i+1播放时可以再次逆向选取Ti需要解码的目标视频帧为视频帧(S-i+1)-k个得到视频数据(S-i+1)-k,后续在对视频数据(S-i+1)-k播放时再逆向选取目标视频帧进行解码……以此类推,直到视频文件的所有视频帧解码完成时停止逆向选取和解码操作。

可选的,在将解码得到的视频数据添加至视频数据集合中的情况下,可以对视频数据集合内的视频数据进行倒序播放。

由上可知,本发明实施例采用接收视频倒放指令,该视频倒放指令指示需要倒放的视频文件,然后,根据该视频倒放指令,获取该视频文件中视频帧组所需的解码时间、以及该视频文件中视频帧所需的播放时间,根据该解码时间和该播放时间确定并行解码的视频帧数量,根据该视频帧数量并行地对视频文件中视频帧进行逆向解码,得到视频数据,对视频数据进行倒序播放;由于该方案可以基于视频帧组所需的解码时间以及视频帧所需的播放时间来确定每次并行解码的视频帧数量,且并行地对该数量的视频帧进行逆向解码;因此,该方案在每次解码后无需将GOP里所有帧的解码数据存储至内存,比如,该方案在初始状态时只需解码保存少量的解码数据,在后续播放解码数据再次进行视频帧解码时只需保存一个解码数据,因此,可以减少在倒放过程中存储至内存的解码数据量,相对于现有技术而言,可以大大减少内存占用量或者使用量。并且,由于该方案采用并行解码的方式,相对于现有依次解码GOP的方式,可以大大提高解码效率,避免了解码之间的相互影响,提升了视频播放品质。

此外,由于现有视频倒放方案需要占用大量内存,而内存的使用量时受限制的,因此,现有视频倒放方案支持的视频分辨率是有限地,其无法支持高分辨率的视频倒放,而本发明方案无需占用大量内存,突破了视频分辨率的限制,可以支持高分辨率的视频倒放。

实施例二、

根据实施例一所描述的方法,以下将举例作进一步详细说明。

在本实施例中,将以该视频倒放装置集成在终端为例进行说明。

如图2所示,一种视频倒放方法,具体流程包括:

201、终端接收视频倒放指令,该视频倒放指令指示需要倒放的视频文件。

比如,用户点击视频播放界面中“倒放”按钮时,触发终端生成视频倒放指令,此时,终端便可接收该指令。

202、终端根据视频倒放指令获取视频文件,该视频文件包括多个视频帧。

比如,终端根据视频倒放指令从本地视频数据库中提取视频文件,也可以根据视频倒放指令从服务器下载视频文件。

该视频文件可以包括关键帧和非关键帧,关键帧到下个关键帧的前一帧,称为组帧,即GOP(Group ofPicture)。

例如,该视频文件可以包括S个视频帧,分别记为frame 1,frame 2,frame3,…,frame S。

203、终端获取视频文件中GOP所需的解码时间以及视频帧的播放时长。

其中,GOP所需的解码时间为从GOP的起始关键帧解码到最后一帧所需的时长。该解码时间可以基于实际检测得到,也可以为一个预设值。

优选地,该解码时间可以为GOP所需的最长解码时间,即最坏情况下解码一个GOP所需的时长。

其中,视频帧的播放时长可以基于视频文件包含的总帧数以及视频帧率得到。比如,一个1000帧的视频,视频帧率是50fps,那么每个视频帧的播放时长为1000/50=20ms。

204、终端根据解码时间和播放时长确定需要启动的解码线程的数量。

具体地,可以将解码时长除以播放时长得到商值,然后,取不小该商值的最小正整数。

比如,解码时间为m,播放时长为n时,启用线程数k=ceil(m/n)。ceil指取不小于m/n的最小整数。这k个线程分别记为T1,T2,T3,…,Tk。

205、终端从视频帧逆向选取解码线程当前需要解码的目标视频帧。

其中,逆向选取指的是沿着以视频文件的最后一个视频帧为起点、视频文件的起始视频帧为终点的方向选取视频帧,比如,视频文件包括S个视频帧,那么此时,针对某个解码线程,逆向选取可以为依次选取frame S、frame S-4、frame S-5……frame2。

实际应用中,可以对视频帧和解码线程进行编号,比如frame1、frame2、……frameS,解码线程T1,T2,T3,…,Tk。那么此时,可以根据线程数量、解码线程的编号以及历史解码视频帧的编号逆向选取目标视频帧。该解码线程的历史解码视频帧可以为前一次该解码线程解码的视频帧。

具体地,对于线程Ti,第1次选取时历史解码视频帧为0,此时选取目标视频帧为视频帧S-i+1,第2次选取时,选取目标视频帧为视频帧(S-i+1)-k,第3次选取时,选取目标视频帧为视频帧(S-i+1)-2k,……第j次线选取时,目标视频帧为视频帧为(S-i+1)-(j-1)k。

比如,初始阶段,可以确定T1当前解码的视频帧为frameS,即T1seek(frame S)该seek为随机指定任何一帧的操作,T2解码视频帧frameS-1即T2seek(S-1),T3seek(S-2)……Tk seek(S-k+1)。

206、终端通过解码线程对目标视频帧进行解码,得到相应的视频数据,并将视频数据添加至视频数据集合中。

比如,初始阶段,T1对视频帧frameS解码,得到视频数据data S,即T1seek(frame S),得到视频数据data S,T2seek(S-1)得到视频数据S-1,……Tk seek(S-k+1)得到视频数据data S-k+1。

该视频数据集合可以位于终端内存中,或者其他存储位置。比如,将data S、data S-1……data S-k+1添加至视频数据集合中。

207、终端根据当前视频播放时间对视频数据集合内视频数据进行倒序播放,并返回执行步骤205。

比如,具体地播放和解码过程可以如下:

0播放data S触发T1解码frame S-K,即T1seek(S-k);此时T1seek(S-k)便可以在k*n前完成,即T1seek(S-k)-->k*n前完成;

n播放data S-1触发T2seek(S-k-1)->(k+1)*n前完成;

2n播放data S-2触发T3seek(S-k-2)->(k+2)*n前完成;

...

(k-1)*n播放data S-k+1触发Tk seek(S-2k-1)->(2k-1)*n前完成;

k*n播放data S-k触发T1seek(S-2k)->(2k)*n前完成;

(k+1)*n播放data S-k-1触发T2seek(S-2k-1)->(2k+1)*n前完成;

(k+2)*n播放data S-k-2触发T3seek(S-2k-2)->(2k+2)*n前完成;

...

(2k-1)*n播放data S-2k+1触发Tk seek(S-3k+1)->(3k-1)*n前完成

(2k)*n播放dataS-2k触发T1seek(S-3k)->(3k)*n前完成

......

直到S个视频帧全部解码完成或者frame1解码完成结束。

可见,本发明实施例提供的视频倒放方法可以在

下面将举例对本实施例方法进行详细介绍:

假设对一个有1000帧的视频做倒序播放,即视频文件包括1000个视频帧。解码一个GOP所需的最长时间是200ms,视频帧率是25fps,即每帧显示40ms。

首先,确定启用线程数为200/40=5,即需要5个线程来完成。

初始准备状态:

T1:seek(1000)得到data1000

T2:seek(999)得到data999

T3:seek(998)得到data998

T4:seek(997)得到data997

T5:seek(996)得到data996

开始播放:

0ms显示data1000T1seek(995)-->200ms前完成

40ms显示data999T2seek(994)-->240ms前完成

80ms显示data998T3seek(993)-->280ms前完成

120ms显示data997T4seek(992)-->320ms前完成

160ms显示data996T5seek(991)-->360ms前完成

200ms显示data995T1seek(990)-->400ms前完成

240ms显示data994T2seek(989)

280ms显示data993T3seek(988)

320ms显示data992T4seek(987)

360ms显示data991T5seek(986)

400ms显示data990T1seek(985)

......

以此类推,解码第一个视频帧完成为止。

由上可知,本发明实施例采用接收视频倒放指令,该视频倒放指令指示需要倒放的视频文件,然后,根据该视频倒放指令,获取该视频文件中视频帧组所需的解码时间、以及该视频文件中视频帧所需的播放时间,根据该解码时间和该播放时间确定并行解码的视频帧数量,根据该视频帧数量并行地对视频文件中视频帧进行逆向解码,得到视频数据,对视频数据进行倒序播放;由于该方案可以基于视频帧组所需的解码时间以及视频帧所需的播放时间来确定每次并行解码的视频帧数量,且并行地对该数量的视频帧进行逆向解码;因此,该方案在每次解码后无需将GOP里所有帧的解码数据存储至内存,比如,该方案在初始状态时只需解码保存少量的解码数据,在后续播放解码数据再次进行视频帧解码时只需保存一个解码数据,因此,可以减少在倒放过程中存储至内存的解码数据量,相对于现有技术而言,可以大大减少内存占用量或者使用量。并且,由于该方案采用并行解码的方式,相对于现有依次解码GOP的方式,可以大大提高解码效率,避免了解码之间的相互影响,提升了视频播放品质。

此外,由于现有视频倒放方案需要占用大量内存,而内存的使用量时受限制的,因此,现有视频倒放方案支持的视频分辨率是有限地,其无法支持高分辨率的视频倒放,而本发明方案无需占用大量内存,突破了视频分辨率的限制,可以支持高分辨率的视频倒放。

实施例三、

为了更好地实施上述方法,本发明实施例还提供一种视频倒放装置,如图3所示,该视频倒放装置可以包括接收单元301、获取单元302、确定单元303、解码单元304和播放单元305,如下:

(1)接收单元301;

接收单元301,用于接收视频倒放指令,该视频倒放指令指示需要倒放的视频文件。

其中,视频倒放指令可以通过触发终端中预设触发键或输入框等触发接口来进行触发,比如,当用户点击或划过某个图标时,则触发生成该视频倒放指令,即:

接收单元301、具体用于接收用户通过触发接口触发的视频倒放指令。

(2)获取单元302;

获取单元302,用于根据该视频倒放指令,获取该视频文件中视频帧组所需的解码时间、以及该视频文件中视频帧所需的播放时间。

获取单元302可以用于根据视频倒放指令获取视频文件,然后,获取该视频文件中视频帧组所需的解码时间、以及该视频文件中视频帧所需的播放时间。

本实施例中,该视频帧组可以为关键帧到下一个关键帧的前一帧的视频帧组,即GOP。此时,解码时间可以为解码一个GOP所需的时间,即从起始关键帧开始,解码到该GOP最后一帧的时间。优选地,解码时间可以为解码一个GOP所需的最长时间,即最坏情况下解码一个GOP所需的时间。

该视频帧所需的播放时间可以为视频文件中视频帧的播放时长或者显示时长。一般来说解码一个GOP的时间大于一个视频帧的播放时间。

(3)确定单元303;

确定单元303,用于根据该解码时间和该播放时间确定并行解码的视频帧数量。

优选地,该视频帧数量小于视频帧组如GOP所包含的视频帧数量。这样,可以使得在初始播放阶段保存少量的解码数据,减少内存的占用量。

比如,该确定单元303可以用于将该解码时间除以该播放时间,得到商值,根据该商值确定并行解码的视频帧数量。如选取不小于该商值的最小整数作为并行解码的视频帧数量。

(4)解码单元304;

解码单元304,用于根据该视频帧数量并行地对视频文件中视频帧进行逆向解码,得到视频数据。

其中,逆向解码指的是从视频文件的最后一个视频帧开始向起始视频帧进行解码。比如,视频文件包括S帧,S为正整数,记为frame 1,frame 2,frame 3,…,frame S,那么此时,逆向解码为从frame S开始解码到frame 1。

比如,解码单元304可以包括:

确定子单元,用于根据该视频帧数量确定需要启用的解码线程的数量;

解码子单元,用于根据该数量的解码线程并行地对视频文件中视频帧进行逆向解码。

优选地,解码线程的数量可以与视频帧数量一致。

比如,解码子单元,可以用于从视频文件的视频帧中逆向选取解码线程当前需要解码的目标视频帧,通过该解码线程对该目标视频帧进行解码。

其中,逆向选取指的是沿着以视频文件的最后一个视频帧为起点、视频文件的起始视频帧为终点的方向选取视频帧。

具体地,解码子单元,可以具体用于根据该数量和解码线程的历史解码视频帧,从视频文件的视频帧中逆向选取解码线程需要解码的目标视频帧。

(5)播放单元305;

播放单元305,用于对视频数据进行倒序播放。

其中,倒序播放指的是从最后一个视频帧向起始视频帧进行播放,如依次播放视频帧S的视频数据S、视频帧S-1的视频数据S-1……视频帧1的视频数据1。

比如播放单元305,可以用于获取当前视频播放时间,根据该当前视频播放时间对视频数据进行倒序播放。

具体地,为了能够在视频帧的播放时间达到之前可以解码获取该视频帧的视频数据,播放单元305具体用于对该视频数据进行倒序播放,并在播放视频数据时触发该解码子单元执行从视频文件的视频帧中逆向选取解码线程当前需要解码的目标视频帧的步骤。

具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。

该视频倒放装置具体可以集成在终端等设备中,该终端具体可以为手机或平板电脑等设备。

由上可知,本发明实施例采用接收单元301接收视频倒放指令,该视频倒放指令指示需要倒放的视频文件,然后,由获取单元302根据该视频倒放指令,获取该视频文件中视频帧组所需的解码时间、以及该视频文件中视频帧所需的播放时间,由确定单元303根据该解码时间和该播放时间确定并行解码的视频帧数量,由解码单元304根据该视频帧数量并行地对视频文件中视频帧进行逆向解码,得到视频数据,由播放单元305对视频数据进行倒序播放;由于该方案可以基于视频帧组所需的解码时间以及视频帧所需的播放时间来确定每次并行解码的视频帧数量,且并行地对该数量的视频帧进行逆向解码;因此,该方案在每次解码后无需将GOP里所有帧的解码数据存储至内存,比如,该方案在初始状态时只需解码保存少量的解码数据,在后续播放解码数据再次进行视频帧解码时只需保存一个解码数据,因此,可以减少在倒放过程中存储至内存的解码数据量,相对于现有技术而言,可以大大减少内存占用量或者使用量。并且,由于该方案采用并行解码的方式,相对于现有依次解码GOP的方式,可以大大提高解码效率,避免了解码之间的相互影响,提升了视频播放品质。

此外,由于现有视频倒放方案需要占用大量内存,而内存的使用量时受限制的,因此,现有视频倒放方案支持的视频分辨率是有限地,其无法支持高分辨率的视频倒放,而本发明方案无需占用大量内存,突破了视频分辨率的限制,可以支持高分辨率的视频倒放。

实施例四、

此外,本发明实施例还提供一种终端,如图4所示,该终端可以包括射频(RF,Radio Frequency)电路401、包括有一个或一个以上计算机可读存储介质的存储器402、输入单元403、播放单元404、传感器405、音频电路406、无线保真(WiFi,Wireless Fidelity)模块407、包括有一个或者一个以上处理核心的处理器408、以及电源409等部件。本领域技术人员可以理解,图4中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:

RF电路401可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器408处理;另外,将涉及上行的数据发送给基站。通常,RF电路401包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM,Subscriber Identity Module)卡、收发信机、耦合器、低噪声放大器(LNA,Low Noise Amplifier)、双工器等。此外,RF电路401还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(GSM,Global System ofMobile communication)、通用分组无线服务(GPRS,General Packet Radio Service)、码分多址(CDMA,Code Division Multiple Access)、宽带码分多址(WCDMA,Wideband Code Division Multiple Access)、长期演进(LTE,Long Term Evolution)、电子邮件、短消息服务(SMS,Short Messaging Service)等。

存储器402可用于存储软件程序以及模块,处理器408通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器408和输入单元403对存储器402的访问。

输入单元403可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,在一个具体的实施例中,输入单元403可包括触敏表面以及其他输入设备。触敏表面,也称为触摸播放屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面上或在触敏表面附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器408,并能接收处理器408发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面。除了触敏表面,输入单元403还可以包括其他输入设备。具体地,其他输入设备可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。

播放单元404可用于播放由用户输入的信息或提供给用户的信息以及终端的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。播放单元404可包括播放面板,可选的,可以采用液晶播放器(LCD,Liquid Crystal Display)、有机发光二极管(OLED,Organic Light-Emitting Diode)等形式来配置播放面板。进一步的,触敏表面可覆盖播放面板,当触敏表面检测到在其上或附近的触摸操作后,传送给处理器408以确定触摸事件的类型,随后处理器408根据触摸事件的类型在播放面板上提供相应的视觉输出。虽然在图4中,触敏表面与播放面板是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面与播放面板集成而实现输入和输出功能。

终端还可包括至少一种传感器405,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节播放面板的亮度,接近传感器可在终端移动到耳边时,关闭播放面板和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。

音频电路406、扬声器,传声器可提供用户与终端之间的音频接口。音频电路406可将接收到的音频数据转换后的电信号,传输到扬声器,由扬声器转换为声音信号输出;另一方面,传声器将收集的声音信号转换为电信号,由音频电路406接收后转换为音频数据,再将音频数据输出处理器408处理后,经RF电路401以发送给比如另一终端,或者将音频数据输出至存储器402以便进一步处理。音频电路406还可能包括耳塞插孔,以提供外设耳机与终端的通信。

WiFi属于短距离无线传输技术,终端通过WiFi模块407可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图4示出了WiFi模块407,但是可以理解的是,其并不属于终端的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。

处理器408是终端的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行终端的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器408可包括一个或多个处理核心;优选的,处理器408可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器408中。

终端还包括给各个部件供电的电源409(比如电池),优选的,电源可以通过电源管理系统与处理器408逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源409还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。

尽管未示出,终端还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,终端中的处理器408会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器408来运行存储在存储器402中的应用程序,从而实现各种功能:

接收视频倒放指令,该视频倒放指令指示需要倒放的视频文件,然后,根据该视频倒放指令,获取该视频文件中视频帧组所需的解码时间、以及该视频文件中视频帧所需的播放时间,根据该解码时间和该播放时间确定并行解码的视频帧数量,根据该视频帧数量并行地对视频文件中视频帧进行逆向解码,得到视频数据,对视频数据进行倒序播放。

可选地,根据所述视频帧数量并行地对视频文件中视频帧进行逆向解码,包括:

根据所述视频帧数量确定需要启用的解码线程的数量;

根据所述数量的解码线程并行地对视频文件中视频帧进行逆向解码。

可选地,根据所述数量的解码线程并行地对视频文件中视频帧进行逆向解码,包括:

从视频文件的视频帧中逆向选取解码线程当前需要解码的目标视频帧;

通过所述解码线程对所述目标视频帧进行解码;

所述对视频数据进行倒序播放,包括:对所述视频数据进行倒序播放,并在播放视频数据时返回执行逆向选取解码线程需要解码的目标视频帧的步骤。

可选地,所述从视频文件的视频帧中逆向选取解码线程需要解码的目标视频帧,包括:

根据所述数量和解码线程的历史解码视频帧,从视频文件的视频帧中逆向选取解码线程需要解码的目标视频帧。

可选地,根据所述解码时间和所述播放时间确定并行解码的视频帧数量,包括:

将所述解码时间除以所述播放时间,得到商值;

根据所述商值确定并行解码的视频帧数量。

可选地,所述对视频数据进行倒序播放,包括:

获取当前视频播放时间;

根据所述当前视频播放时间对视频数据进行倒序播放。

其中,该视频帧组可以为关键帧到下一个关键帧的前一帧的视频帧组,即GOP。

其中,逆向解码指的是从视频文件的最后一个视频帧开始向起始视频帧进行解码。

其中,倒序播放指的是从最后一个视频帧向起始视频帧进行播放。

上述操作具体可参见前面的方法实施例,在此不再赘述。

由上可知,本发明实施例的终端接收视频倒放指令,该视频倒放指令指示需要倒放的视频文件,然后,根据该视频倒放指令,获取该视频文件中视频帧组所需的解码时间、以及该视频文件中视频帧所需的播放时间,根据该解码时间和该播放时间确定并行解码的视频帧数量,根据该视频帧数量并行地对视频文件中视频帧进行逆向解码,得到视频数据,对视频数据进行倒序播放;由于该方案可以基于视频帧组所需的解码时间以及视频帧所需的播放时间来确定每次并行解码的视频帧数量,且并行地对该数量的视频帧进行逆向解码;因此,该方案在每次解码后无需将GOP里所有帧的解码数据存储至内存,比如,该方案在初始状态时只需解码保存少量的解码数据,在后续播放解码数据再次进行视频帧解码时只需保存一个解码数据,因此,可以减少在倒放过程中存储至内存的解码数据量,相对于现有技术而言,可以大大减少内存占用量或者使用量。并且,由于该方案采用并行解码的方式,相对于现有依次解码GOP的方式,可以大大提高解码效率,避免了解码之间的相互影响,提升了视频播放品质。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。

以上对本发明实施例所提供的一种视频倒放方法和装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1