掌桥专利:专业的专利平台
掌桥专利
首页

一种视频倒放的方法、系统、终端及存储介质

文献发布时间:2023-06-19 19:28:50


一种视频倒放的方法、系统、终端及存储介质

技术领域

本发明涉及视频处理技术领域,具体涉及一种视频倒放的方法、系统、终端及存储介质。

背景技术

随着多媒体技术的发展,互联网上出现大量的音视频数据,越来越多的人开始使用音视频编辑软件生成视频,其中,倒放功能对于播放器以及音视频编辑工具来说,都是一个重要的功能,可以制作出各种吸引人的效果。

由于文件只支持正向解码,因此倒放需要通过seek改变视频流位置来实现,但这个操作是耗时的,尤其是对于非关键帧,如果每一帧都进行seek,播放效果会比较卡顿,现有的方法会把大部分视频帧进行缓存,或者分时间多段缓存,从而优化卡顿问题,但这样很容易占用过多内存,从而引起一些系统性问题。

发明内容

本发明的主要目的是提供一种视频倒放的方法、系统、终端及存储介质,旨在解决在视频倒放时占用过多内存的问题。

为实现上述目的,本发明第一方面提供了一种视频倒放的方法,包括以下步骤:

在接收到视频倒放的指令后,扫描视频,记录所有关键帧的时间戳的值,得到关键帧索引表;

根据所述关键帧索引表找出与当前时间戳最接近且小于所述当前时间戳的关键帧的时间戳;

解码线程从所述关键帧的时间戳的位置开始解码,直到解码到所述当前时间戳的位置,并将解码的数据保存到缓存数据中;

当所述缓存数据中储存有所述当前时间戳的位置的数据后,播放线程开始倒放视频,且所述播放线程每播放完一个帧画面,就将播放完的所述帧画面从所述缓存数据中删除;

在所述播放线程开始倒放视频的同时,计算期望时间戳,其中,所述期望时间戳等于上一次解码时的所述关键帧的时间戳减去帧间间隔,然后,根据所述关键帧索引表找出与所述期望时间戳最接近且小于所述期望时间戳的期望关键帧的时间戳,然后,所述解码线程从所述期望关键帧的时间戳开始解码,直到解码到所述期望时间戳的位置,并将解码的数据保存到缓存数据中,重新计算下一个期望时间戳,并对下一个期望时间戳与最接近且小于所述下一个期望时间戳的下一个期望关键帧的时间戳之间进行解码,直到所述视频解码结束。

在本发明第一方面一种可选的实施方式中,在解码线程从所述关键帧的时间戳的位置开始解码,直到解码到所述当前时间戳的位置,并将解码的数据保存到缓存数据中之后,在当所述缓存数据中储存有所述当前时间戳的位置的数据后,播放线程开始倒放视频,且所述播放线程每播放完一个帧画面,就将播放完的所述帧画面从所述缓存数据中删除之前,还包括以下步骤:

在所述解码线程开始进行解码的同时,所述播放线程进入暂播模式或者暂停模式;

当所述播放线程进入暂播模式时,所述播放线程从所述关键帧开始播放缓存数据,直到所述缓存数据储存有所述当前时间戳的位置的数据后,结束暂播模式;

当所述播放线程处于暂停模式时,所述播放线程播放所述关键帧的画面,当所述缓存数据储存有所述当前时间戳的位置的数据后,播放画面切换到当前时间戳的帧画面。

在本发明第一方面一种可选的实施方式中,所述播放线程进入暂播模式时,播放线程降低播放帧率。

在本发明第一方面一种可选的实施方式中,在接收到视频倒放的指令后,扫描视频,记录所有关键帧的时间戳的值,得到关键帧索引表的步骤中;

根据视频包数据的标志位信息判断当前视频帧是否为关键帧;

当所述视频帧的标志位信息为关键帧时,则记录所述关键帧的时间戳的值。

在本发明第一方面一种可选的实施方式中,在所述播放线程开始倒放视频的同时,计算期望时间戳,其中,所述期望时间戳等于上一次解码时的所述关键帧的时间戳减去帧间间隔,然后,根据所述关键帧索引表找出与所述期望时间戳最接近且小于所述期望时间戳的期望关键帧的时间戳,然后,所述解码线程从所述期望关键帧的时间戳开始解码,直到解码到所述期望时间戳的位置,并将解码的数据保存到缓存数据中,重新计算下一个期望时间戳,并对下一个期望时间戳与最接近且小于所述下一个期望时间戳的下一个期望关键帧的时间戳之间进行解码,直到所述视频解码结束的步骤中;

当所述期望时间戳与所述期望关键帧的时间戳之间的帧数大于第一阈值时,所述解码线程将对所述期望时间戳与所述期望关键帧的时间戳之间的部分帧画面进行删除,使得解码后的帧数等于所述第一阈值,其中,优先删除离所述关键帧近的帧画面。

在本发明第一方面一种可选的实施方式中,在当所述缓存数据中储存有所述当前时间戳的位置的数据后,播放线程开始倒放视频,且所述播放线程每播放完一个帧画面,就将播放完的所述帧画面从所述缓存数据中删除的步骤中;

当所述缓存数据中缓存的图像组数量等于第二阈值时,所述解码线程停止解码,直到所述缓存数据中缓存的图像组数量小于所述第二阈值时,所述解码线程解码。

在本发明第一方面一种可选的实施方式中,在根据所述关键帧索引表找出与当前时间戳最接近且小于所述当前时间戳的关键帧的时间戳的步骤中;

播放线程通过seek操作将视频流位置改变到所述关键帧的时间戳的位置。

本发明第二方面提供了一种视频倒放的系统,包括:

扫描模块,用于在接收到视频倒放的指令后,扫描视频,记录所有关键帧的时间戳的值,得到关键帧索引表;

寻找模块,用于根据所述关键帧索引表找出与当前时间戳最接近且小于所述当前时间戳的关键帧的时间戳;

第一解码模块,用于解码线程从所述关键帧的时间戳的位置开始解码,直到解码到所述当前时间戳的位置,并将解码的数据保存到缓存数据中;

播放模块,用于当所述缓存数据中储存有所述当前时间戳的位置的数据后,播放线程开始倒放视频,且所述播放线程每播放完一个帧画面,就将播放完的所述帧画面从所述缓存数据中删除;

第二解码模块,用于在所述播放线程开始倒放视频的同时,计算期望时间戳,其中,所述期望时间戳等于上一次解码时的所述关键帧的时间戳减去帧间间隔,然后,根据所述关键帧索引表找出与所述期望时间戳最接近且小于所述期望时间戳的期望关键帧的时间戳,然后,所述解码线程从所述期望关键帧的时间戳开始解码,直到解码到所述期望时间戳的位置,并将解码的数据保存到缓存数据中,重新计算下一个期望时间戳,并对下一个期望时间戳与最接近且小于所述下一个期望时间戳的下一个期望关键帧的时间戳之间进行解码,直到所述视频解码结束。

本发明第三方面提供了一种视频倒放的终端,所述终端包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;

所述至少一个处理器调用所述存储器中的所述指令,以使得所述终端执行如上述中任一项所述的视频倒放的方法。

本发明第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述中任一项所述的视频倒放的方法。

有益效果:本发明提供一种视频倒放的方法、系统、终端及存储介质,其中,方法包括在接收到视频倒放的指令后,扫描视频,记录所有关键帧的时间戳的值,得到关键帧索引表;根据所述关键帧索引表找出与当前时间戳最接近且小于所述当前时间戳的关键帧的时间戳;解码线程从所述关键帧的时间戳的位置开始解码,直到解码到所述当前时间戳的位置,并将解码的数据保存到缓存数据中;当所述缓存数据中储存有所述当前时间戳的位置的数据后,播放线程开始倒放视频,且所述播放线程每播放完一个帧画面,就将播放完的所述帧画面从所述缓存数据中删除;在所述播放线程开始倒放视频的同时,计算期望时间戳,其中,所述期望时间戳等于上一次解码时的所述关键帧的时间戳减去帧间间隔,然后,根据所述关键帧索引表找出与所述期望时间戳最接近且小于所述期望时间戳的期望关键帧的时间戳,然后,所述解码线程从所述期望关键帧的时间戳开始解码,直到解码到所述期望时间戳的位置,并将解码的数据保存到缓存数据中,重新计算下一个期望时间戳,并对下一个期望时间戳与最接近且小于所述下一个期望时间戳的下一个期望关键帧的时间戳之间进行解码,直到所述视频解码结束。通过生成关键帧索引表,而不用缓存关键帧视频数据,有助于后续操作快速定位到关键帧位置,且减小内存占用。

附图说明

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

图1为本发明一种视频倒放的方法的一个实施例示意图;

图2为本发明一种视频倒放的系统的一个实施例示意图;

图3为本发明一种视频倒放的终端的一个实施例示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

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

需要说明,本发明实施例中所有方向性指示(诸如上、下、左、右、前、后……)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。

另外,在本发明中如涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

在本发明中,除非另有明确的规定和限定,术语“连接”、“固定”等应做广义理解,例如,“固定”可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。

另外,本发明各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。

为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明第一方面提供了一种视频倒放的方法,包括以下步骤:

S100:在接收到视频倒放的指令后,扫描视频,记录所有关键帧的时间戳的值,得到关键帧索引表;

S200:根据所述关键帧索引表找出与当前时间戳最接近且小于所述当前时间戳的关键帧的时间戳;

S300:解码线程从所述关键帧的时间戳的位置开始解码,直到解码到所述当前时间戳的位置,并将解码的数据保存到缓存数据中;

S400:当所述缓存数据中储存有所述当前时间戳的位置的数据后,播放线程开始倒放视频,且所述播放线程每播放完一个帧画面,就将播放完的所述帧画面从所述缓存数据中删除;

S500:在所述播放线程开始倒放视频的同时,计算期望时间戳,其中,所述期望时间戳等于上一次解码时的所述关键帧的时间戳减去帧间间隔,然后,根据所述关键帧索引表找出与所述期望时间戳最接近且小于所述期望时间戳的期望关键帧的时间戳,然后,所述解码线程从所述期望关键帧的时间戳开始解码,直到解码到所述期望时间戳的位置,并将解码的数据保存到缓存数据中,重新计算下一个期望时间戳,并对下一个期望时间戳与最接近且小于所述下一个期望时间戳的下一个期望关键帧的时间戳之间进行解码,直到所述视频解码结束。

在本实施例中,只有当前视频第一次进入倒放模式才会进行扫描,如果切换回普通模式后再次进入倒放模式,是不需要的再次进行扫描的,但如果更换另一个视频,依然需要重新进行扫描。此外,只需要缓存关键帧的时间戳的值,而不用缓存视频帧数据,占用内存也是非常小的。由于关键帧包含了其他视频帧所依赖的数据,因此必须从关键帧开始解码,后续视频帧才能得到完整数据,否则可能出现画面花屏等问题。

在本发明第一方面的一种可选的实施方式中,在解码线程从所述关键帧的时间戳的位置开始解码,直到解码到所述当前时间戳的位置,并将解码的数据保存到缓存数据中之后,在当所述缓存数据中储存有所述当前时间戳的位置的数据后,播放线程开始倒放视频,且所述播放线程每播放完一个帧画面,就将播放完的所述帧画面从所述缓存数据中删除之前,还包括以下步骤:

在所述解码线程开始进行解码的同时,所述播放线程进入暂播模式或者暂停模式;

当所述播放线程进入暂播模式时,所述播放线程从所述关键帧开始播放缓存数据,直到所述缓存数据储存有所述当前时间戳的位置的数据后,结束暂播模式;

当所述播放线程处于暂停模式时,所述播放线程播放所述关键帧的画面,当所述缓存数据储存有所述当前时间戳的位置的数据后,播放画面切换到当前时间戳的帧画面。

在本实施例中,由于从关键帧的时间戳位置开始解码到当前时间戳的位置需要消耗一定的时间,如果在这段时间内,画面一直保持静止,会给用户带来不太好的体检,因此,在播放模式时,直接从关键帧开始播放,给用户带来更好的体验,同时,由于同一个图像组的画面差异不大,因此后面切换为当前时间戳的画面时,变化也不会很大,很好的平衡了画面的流畅性和视觉效果。

在本发明第一方面的一种可选的实施方式中,所述播放线程进入暂播模式时,播放线程降低播放帧率。

在本实施例中,通过降低播放帧率,防止解码线程解码的速度太慢,造成卡顿的现象。

在本发明第一方面的一种可选的实施方式中,在接收到视频倒放的指令后,扫描视频,记录所有关键帧的时间戳的值,得到关键帧索引表的步骤中;

根据视频包数据的标志位信息判断当前视频帧是否为关键帧;

当所述视频帧的标志位信息为关键帧时,则记录所述关键帧的时间戳的值。

在本实施例中,由于解码前的视频包数据的标志位信息就可以判断当前视频帧是否为关键帧,因此不需要解码,整个过程耗时比较短。

在本发明第一方面的一种可选的实施方式中,在所述播放线程开始倒放视频的同时,计算期望时间戳,其中,所述期望时间戳等于上一次解码时的所述关键帧的时间戳减去帧间间隔,然后,根据所述关键帧索引表找出与所述期望时间戳最接近且小于所述期望时间戳的期望关键帧的时间戳,然后,所述解码线程从所述期望关键帧的时间戳开始解码,直到解码到所述期望时间戳的位置,并将解码的数据保存到缓存数据中,重新计算下一个期望时间戳,并对下一个期望时间戳与最接近且小于所述下一个期望时间戳的下一个期望关键帧的时间戳之间进行解码,直到所述视频解码结束的步骤中;

当所述期望时间戳与所述期望关键帧的时间戳之间的帧数大于第一阈值时,所述解码线程将对所述期望时间戳与所述期望关键帧的时间戳之间的部分帧画面进行删除,使得解码后的帧数等于所述第一阈值,其中,优先删除离所述关键帧近的帧画面。

在本实施例中,从期望关键帧的时间戳到期望时间戳之间的视频帧数据都要缓存起来,这些数据小于等于一个图像组,在同一个图像组中,包含一组画面差异程度小于特定阈值的视频帧,其中,关键帧是这个图像组的第一帧,通常一个图像组包含十几帧,因此占用内存不大,可以设置一个第一阈值,当缓存帧数大于第一阈值时,则根据加入缓存的顺序来进行去除,也就是距离关键帧近的视频帧,会优先从缓存中去除,因为倒放播放时,距离关键帧越远的视频帧,会越早拿出来播放,因此应该保留在缓存中。

在本发明第一方面的一种可选的实施方式中,在当所述缓存数据中储存有所述当前时间戳的位置的数据后,播放线程开始倒放视频,且所述播放线程每播放完一个帧画面,就将播放完的所述帧画面从所述缓存数据中删除的步骤中;

当所述缓存数据中缓存的图像组数量等于第二阈值时,所述解码线程停止解码,直到所述缓存数据中缓存的图像组数量小于所述第二阈值时,所述解码线程解码。

在本实施例中,通过设置第二阈值,可以防止播放线程中缓存过多的解码数据。

在本发明第一方面的一种可选的实施方式中,在根据所述关键帧索引表找出与当前时间戳最接近且小于所述当前时间戳的关键帧的时间戳的步骤中;

播放线程通过seek操作将视频流位置改变到所述关键帧的时间戳的位置。

参见图2,本发明第二方面提供了一种视频倒放的系统,包括:

扫描模块10,用于在接收到视频倒放的指令后,扫描视频,记录所有关键帧的时间戳的值,得到关键帧索引表;

寻找模块20,用于根据所述关键帧索引表找出与当前时间戳最接近且小于所述当前时间戳的关键帧的时间戳;

第一解码模块30,用于解码线程从所述关键帧的时间戳的位置开始解码,直到解码到所述当前时间戳的位置,并将解码的数据保存到缓存数据中;

播放模块40,用于当所述缓存数据中储存有所述当前时间戳的位置的数据后,播放线程开始倒放视频,且所述播放线程每播放完一个帧画面,就将播放完的所述帧画面从所述缓存数据中删除。

第二解码模块50,用于在所述播放线程开始倒放视频的同时,计算期望时间戳,其中,所述期望时间戳等于上一次解码时的所述关键帧的时间戳减去帧间间隔,然后,根据所述关键帧索引表找出与所述期望时间戳最接近且小于所述期望时间戳的期望关键帧的时间戳,然后,所述解码线程从所述期望关键帧的时间戳开始解码,直到解码到所述期望时间戳的位置,并将解码的数据保存到缓存数据中,重新计算下一个期望时间戳,并对下一个期望时间戳与最接近且小于所述下一个期望时间戳的下一个期望关键帧的时间戳之间进行解码,直到所述视频解码结束。

图3是本发明实施例提供的一种视频倒放的终端的结构示意图,该视频倒放的终端可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器1(centralprocessing units,CPU)(例如,一个或一个以上处理器)和存储器2,一个或一个以上存储应用程序或数据的存储介质3(例如一个或一个以上海量存储设备)。其中,存储器和存储介质可以是短暂存储或持久存储。存储在存储介质的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对视频倒放的终端中的一系列指令操作。更进一步地,处理器可以设置为与存储介质通信,在视频倒放的终端上执行存储介质中的一系列指令操作。

本发明的视频倒放的终端还可以包括一个或一个以上电源4,一个或一个以上有线或无线网络接口5,一个或一个以上输入输出接口6,和/或,一个或一个以上操作系统,例如Windows Serve,Mac OS X,Unix,Linux,FreeBSD等等。本领域技术人员可以理解,图3示出的视频倒放的终端结构并不构成对视频倒放的终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述的视频倒放的方法的步骤。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统或装置、单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是在本发明的构思下,利用本发明说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本发明的专利保护范围内。

技术分类

06120115926502