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

播放设备及视频倒播方法

文献发布时间:2023-06-19 18:46:07


播放设备及视频倒播方法

技术领域

本申请涉及视频播放技术领域,尤其涉及一种播放设备及视频倒播方法。

背景技术

作为一种重要、直观、丰富的信息传输媒介,多媒体越来越深入地参与到广大人民群众的生活、工作和娱乐中。为提高视频播放的趣味性,以及为在线学习和视频回放等场景提供更加高效灵活的播放途径,视频倒序播放、倍速倒播等功能应运而生。

目前,在对视频进行倒序播放时,通常是分段串行地进行解码和播放,即对整个视频从后往前分段处理,然后对每段视频中的各帧进行解码,然后再对解码后的帧进行倒序播放。据此可见,视频倒序播放的效果很大程度上取决于解码速度,特别的,如果倒序播放过程中还要求倍速播放,往往对解码速度要求更高,如果解码速度低,播放过程会出现卡顿、拖尾或花屏等多种问题。

为了保障视频倒序播放时的顺滑效果,目前可对视频进行转码预处理,再完成转码预处理之后再进行解码。转码预处理主要通过将视频中的P帧和B帧全部转换成I帧(关键帧),或者直接将P帧和B帧转码为其他简单的编码类型,或者减小视频中I帧间隔等方式,来减少视频倒序播放过程中的卡顿现象。

但是,转码预处理较为耗时,且转码后的视频在每次解码前均均需要进行跳转才能实现倒序播放,从而增加了系统的运算负荷。

发明内容

本申请实施例提供了一种播放设备及视频倒播方法,以解决传统播放设备在视频倒播过程中出现的卡顿、拖尾或花屏等问题。

第一方面,本申请提供了一种播放设备,包括:显示器,被配置为显示目标视频数据;

控制器,用于与所述显示器通信连接,所述控制器被配置为:获取目标视频数据中的图像组,所述图像组包括关键帧;响应于针对所述目标视频数据的倒播指令,确定所述图像组的帧数,所述倒播指令包括倒播倍速;根据所述倒播倍速和确定出的所述图像组的帧数,确定所述图像组中目标帧的抽取数量和抽取帧号,所述目标帧至少包括所述图像组中的关键帧;根据确定出的所述抽取数量和所述抽取帧号,抽取所述目标视频数据中的所述目标帧;按照所述目标视频数据中视频帧显示顺序的倒序,对抽取的所述目标帧进行解码和播放。

在一些实施例中,所述控制器被进一步配置为:响应于接收到的基于所述目标视频数据的所述倒播倍速,搜寻所述图像组的关键帧;根据所述关键帧确定所述图像组的时长和帧率,并将所述时长和所述帧率进行乘积计算以得到所述图像组的帧数。

在一些实施例中,所述控制器被进一步配置为:将所述目标视频数据中当前时刻对应的视频帧,以及当前图像组之前的所有图像组中的最后一帧确定为对应图像组的尾帧;按照所述目标视频数据中视频帧显示顺序的倒序,从所述当前图像组的所述尾帧开始逐帧向前搜寻所述当前图像组的关键帧,以及从所述当前图像组之前的相邻图像组的尾帧开始依次逐帧搜寻每个相邻图像组中的关键帧。

在一些实施例中,所述控制器被进一步配置为:获取所述目标视频数据中当前时刻对应的视频帧的显示时间戳PTS,并将当前时刻对应的视频帧以及当前图像组之前的所有图像组中的最后一帧确定为对应图像组的尾帧;从所述当前图像组的所述尾帧开始逐帧向前搜寻所述当前图像组的关键帧;对于所述当前图像组之前的相邻图像组,从该图像组的尾帧开始依次搜寻,并将以所述倒播倍速的一半的倍率播放一次时所对应的视频帧确定为中间帧;以所述中间帧为节点,沿PTS减小的方向搜寻所述中间帧所在图像组之前的各图像组的关键帧,或者,沿PTS减小和增大的方向分别搜寻所述中间帧所在图像组前后的各图像组的关键帧。

在一些实施例中,所述抽取数量包括预抽取数量n和实际抽取数量N;所述控制器被进一步配置为:计算每一个所述图像组对应的所述帧数与所述倒播倍速的比值m;根据所述比值m确定每一个所述图像组中目标帧的预抽取数量n。

在一些实施例中,所述控制器被进一步配置为:当m≥1,且m为整数时,n=m;当m>1,且m为非整数时,n=m

在一些实施例中,所述控制器被进一步配置为:当任意所述图像组中目标帧的预抽取数量n≤1时,该图像组中的目标帧的实际抽取数量N=1,并将每一个所述图像组中的关键帧确定为所述目标帧;按照所述目标视频数据中视频帧显示顺序的倒序,确定所述目标帧的抽取帧号。

在一些实施例中,所述图像组还包括非关键帧,所述控制器被进一步配置为:当任意所述图像组中目标帧的预抽取数量n>1时,根据该图像组中关键帧之后相邻n-1帧中最后一张非关键帧的类型,确定图像组中的目标帧的实际抽取数量N,其中,实际抽取数量N不小于预抽取数量n;按照所述目标视频数据中视频帧显示顺序的倒序和确定出的实际抽取数量N,确定所述目标帧的抽取帧号。

在一些实施例中,所述控制器被进一步配置为:在对所述目标帧进行解码之后,等待预设的缓冲时长再对解码后的所述目标帧进行播放。

第二方面,本申请还提供一种视频倒播方法,包括如下步骤:获取目标视频数据中的图像组,所述图像组包括关键帧;响应于针对所述目标视频数据的倒播指令,确定所述图像组的帧数,所述倒播指令包括倒播倍速;根据所述倒播倍速和确定出的所述图像组的帧数,确定所述图像组中目标帧的抽取数量和抽取帧号,所述目标帧至少包括所述图像组中的所述关键帧;根据确定出的所述抽取数量和所述抽取帧号,抽取所述目标视频数据中的所述目标帧;按照所述目标视频数据中视频帧显示顺序的倒序,对抽取的所述目标帧进行解码和播放。

第三方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,该计算机程序被播放设备中控制器执行时可实现本申请提供的视频倒播方法的部分或全部步骤。

第四方面,本申请还提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序被播放设备中控制器执行时可实现本申请提供的视频倒播方法的部分或全部步骤。

本申请提供的技术方案至少可以达到以下有益效果:

本申请提供的该种播放设备能够根据倒播倍速和图像组的帧数之间的关系,确定图像组中目标帧的抽取数量和抽取帧号,然后根据目标视频数据中视频帧显示顺序的倒序,对确定出的目标帧进行解码和播放。这种方式,一方面由于完全取消了对于目标视频数据的转码处理过程,从而能够避免因转码耗时长导致的视频倒序播放效率低的问题;另一方面,由于仅对图像组中的目标帧进行抽取和解码处理,相较于现有技术而言,能够大大降低解码的运算负荷,提升解码效率;再一方面,鉴于目标帧抽取数量的限制,整个抽帧的过程是十分短暂的,因而实际上会使得目标视频数据中的解码和播放呈现出并行的表现形式,大大降低因解码速度的局限而对播放效率产生的影响。此外,对于目标视频数据中那些没有被抽取的非目标帧,因无需对其进行解码,能够大大提升目标视频数据的解码利用率和播放过程的流畅性。

附图说明

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

图1是本申请一示例性实施例示出的一种播放设备与控制装置之间操作场景的示意图;

图2是本申请一示例性实施例示出的一种播放设备的硬件配置框图;

图3是本申请一示例性实施例示出的一种现有技术中视频倒播方法的原理示意图;

图4是本申请一示例性实施例示出的一种现有技术中目标视频数据解码过程示意图;

图5是本申请一示例性实施例示出的一种视频倒播方法的流程示意图;

图6是本申请一示例性实施例示出的又一种视频倒播方法的流程示意图;

图7是本申请一示例性实施例示出的再一种视频倒播方法的流程示意图;

图8是本申请一示例性实施例示出的一种目标帧抽取帧号和抽取数量的示意图;

图9是本申请一示例性实施例示出的又一种目标帧抽取帧号和抽取数量的示意图;

图10是本申请一示例性实施例示出的再一种目标帧抽取帧号和抽取数量的示意图;

图11是本申请一示例性实施例示出的另一种目标帧抽取帧号和抽取数量的示意图;

图12是本申请一示例性实施例示出的还一种目标帧抽取帧号和抽取数量的示意图;

图13是本申请一示例性实施例示出的又一种目标视频数据解码过程示意图。

具体实施方式

为使本申请的目的和实施方式更加清楚,下面将结合本申请示例性实施例中的附图,对本申请示例性实施方式进行清楚、完整地描述,显然,描述的示例性实施例仅是本申请一部分实施例,而不是全部的实施例。

在对本申请提供的播放设备及多媒体资源播放方法进行解释说明之前,先对本申请实施例的实施环境进行介绍。

参见图1,在播放设备和控制装置之间的交互场景中,用户可以通过终端设备300或控制装置100操作播放设备200。

其中,播放设备200可以具有多种实施形式,例如,可以是电视、智能电视、电脑、激光投影设备、显示器(monitor)、电子白板(electronic bulletin board)、电子桌面(electronic table)等。

在一些实施例中,控制装置100可以是遥控器,遥控器和播放设备的通信包括红外协议通信或蓝牙协议通信,及其他短距离通信方式,通过无线或有线方式来控制播放设备200。用户可以通过遥控器上按键、语音输入、控制面板输入等输入用户指令,以此控制播放设备200。

在一些实施例中,也可以使用终端设备300(如移动终端、平板电脑、计算机、笔记本电脑等)以控制播放设备200。例如,使用在终端设备300上运行的应用程序控制播放设备200。

在一些实施例中,播放设备200也可以通过触摸或者手势等方式接受用户的控制。

在一些实施例中,播放设备200还可以采用除了控制装置100和终端设备300之外的方式进行控制,例如,可以通过播放设备200设备内部配置的获取语音指令的模块直接接收用户的语音指令控制,也可以通过播放设备200设备外部设置的语音控制设备来接收用户的语音指令控制。

在一些实施例中,播放设备200还可以与服务器400进行数据通信。其中,播放设备200可以通过局域网(Local Area Network,LAN)、无线局域网(Wireless Local AreaNetwork,WLAN)、其他网络等进行通信连接。服务器400可以向播放设备200提供各种显示内容和互动内容。

作为一个示例,服务器400可以是独立服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content DeliveryNetwork,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。

基于上述实施例,图2示出了上述播放设备200的硬件配置框图。其中,播放设备200包括调谐解调器210、通信器220、检测器230、外部装置接口240、控制器250、显示器260、音频输出接口270、存储器280、供电电源和用户接口中的至少一种。

在一些实施例中,调谐解调器210通过有线或无线接收方式接收广播电视信号,以及从多个无线或有线广播电视信号中解调出音视频信号。比如,电子节目指南(ElectronicProgram Guide,EPG)数据信号。

在一些实施例中,通信器220是用于根据各种通信协议类型与外部设备或服务器400进行通信的组件。例如:通信器可以包括Wifi模块,蓝牙模块,有线以太网模块等其他网络通信协议芯片或近场通信协议芯片,以及红外接收器中的至少一种。

具体地,播放设备200可以通过通信器220与外部控制设备100或服务器400建立控制信号和数据信号的发送和接收。

在一些实施例中,检测器230用于采集外部环境或与外部交互的信号。例如,检测器230包括光接收器,用于采集环境光线强度的传感器;或者,检测器230包括图像采集器,如摄像头,可以用于采集外部环境场景、用户的属性或用户交互手势,再或者,检测器230包括声音采集器,如麦克风等,用于接收外部声音。

在一些实施例中,外部装置接口240可以包括但不限于如下:高清多媒体接口(High Definition Multimedia Interface,HDMI)、模拟或数据高清分量输入接口(分量)、复合视频输入接口(Composite Video Broadcast Signal,CVBS)、串行通信总线(Universal Serial Bus,USB)输入接口、RGB端口等任一个或多个接口。也可以是上述多个接口形成的复合型的输入/输出接口。

在本申请实施例中,外部装置接口240用于连接外接设备,以使播放设备可以从外接设备中的外接资源数据库中获取多媒体资源。

在一些实施例中,控制器250包括中央处理器(Central Processing Unit,CPU),视频处理器,音频处理器,图形处理器(Graphics Processing Unit,GPU),RAM(RandomAccess Memory,RAM),ROM(Read-Only Memory,ROM),用于输入/输出的第一接口至第n接口,通信总线(Bus)等中的至少一种。

具体实施时,控制器250通过存储在存储器280上中各种软件控制程序,来控制播放设备200的工作和响应用户的操作。控制器250控制播放设备200的整体操作。例如:响应于接收到用于选择在显示器260上显示UI对象的用户命令,控制器250便可以执行与由用户命令选择的对象有关的操作。

另外,在本申请实施例中,存储器280还用于存储本地资源数据库;以使控制器250在实现本申请提供的多媒体资源播放方法时,可以从存储器280中的本地资源数据库中获取多媒体资源。

需要说明的是,控制器250和调谐解调器210可以位于不同的分体设备中,即调谐解调器210也可在控制器250所在的主体设备的外置设备中,如外置机顶盒等。

在一些实施例中,显示器260包括用于呈现画面的显示屏组件,以及驱动图像显示的驱动组件,用于接收控制器250输出的图像信号,进行显示视频内容、图像内容以及菜单操控界面的组件以及用户操控UI界面。

作为一个示例,显示器260可为液晶显示器、OLED显示器、以及投影显示器,还可以为一种投影装置和投影屏幕。

用户可在显示器260上显示的图形用户界面(GUI)输入用户命令,则用户输入接口通过图形用户界面(Graphic User Interface,GUI)接收用户输入命令。或者,用户可通过输入特定的声音或手势进行输入用户命令,则用户接口通过传感器识别出声音或手势,来接收用户输入命令。

其中,“用户界面”,是应用程序或操作系统与用户之间进行交互和信息交换的介质接口,它实现信息的内部形式与用户可以接受形式之间的转换。比如,用户界面可以是在播放设备200的显示屏中显示的一个图标、窗口、控件等界面元素,其中控件可以包括图标、按钮、菜单、选项卡、文本框、对话框、状态栏、导航栏、Widget等可视的界面元素。

介绍完播放设备的控制交互场景和具体硬件结构后,接下来,对本申请所涉及到的一些概念进行说明。

图像组(Group of picture,GOP),一个图像组指的是视频编码队列中一组连续的画面,其中,一个图像组包含了若干数量的视频帧,即以一个关键帧为起始帧,下一个关键帧的前一帧为结束帧的视频帧序列作为一个图像组,图像组的第一帧为关键帧。MPEG编码中将画面(即帧)分为I、P、B三种,I是内部编码帧,P是前向预测帧,B是双向内插帧。简单地讲,I帧是关键帧,可以理解为一个完整的画面,而P帧和B帧是非关键帧,记录的是相对于I帧的变化,P帧表示跟前一帧的差别,B帧表示前后帧差别。

在对视频进行倒序播放时,若以正常的速度进行倒序播放,通常会一帧帧的播放视频;若以倍速进行倒序播放时,为保证倒序播放的流畅性,通常会选择视频中的某些帧进行播放。

在一种可能的应用场景中,播放设备所提供的视频播放界面中可以设置有视频进度条,倍速选择按钮、快进按钮和快退按钮等,当用户想要回看已经播放的视频时,可以通过选择合适的倍速,并通过点击快退按钮实现视频的倍速倒播。但是,在对视频进行倒序播放时,由于对于视频数据的解码和播放通常时串行的,即先对视频中的各帧进行解码,然后再对解码后的帧进行倒序播放。尤其是当用户选择倍速倒播时,视频倒序播放的效果很大程度上取决于视频数据的解码速度,当解码速度跟不上播放速度时,整体视频的倍速倒播过程很容易出现卡顿的情况,从而极大影响用户的观看体验。

作为一个示例,参照图3所示,若播放设备为智能电视,当用户在智能电视上以a倍速对视频数据进行倒序播放时,关于该视频数据的解码和播放过程如下所述:

从当前帧(第5帧)开始,按照视频数据的倒播顺序向前搜索a帧的距离,当搜索完成后,解码模块对搜索到的帧依次进行解码,并将其中一帧(可以是关键帧,也可以是非关键帧)发送给播放模块进行播放;然后,再往前搜索a帧的距离,解码模块再次进行解码并将其中一帧发送给播放模块进行播放……如此循环,直到对所有的视频数据完成解码或者接收到停止倍速倒播的指令时停止。即,每次搜索a帧进行解码然后播放一帧。

可以理解的是,在采用上述方式对视频数据进行倒序播放时,由于每次都需要向前搜索a帧的距离,该距离很有可能和视频数据中图像组的长度不同,从而对解码时长和解码效率产生影响。

具体地,主要存在下述几种不同的情况:

1.当视频数据中各个图像组的长度b均相同时,倒播倍速a与图像组长度b相同的情形有且仅有一种,即a=b的概率要远小于a≠b的概率。当a=b时,该种情形属于最理想的状态,按照视频数据的倒播顺序向前搜索a帧的距离,每次都会对一个图像组进行搜索,解码模块依次对搜索到图像组中的帧进行解码,并从中选择一帧进行播放,例如可以选择图像组中的关键帧进行播放。但是,当a≠b时,在按照视频数据的倒播顺序向前搜索a帧时,需要继续向前多搜索(nb-a)帧(n满足nb≥a≥(n-1)b),直到搜索到可为该第a帧解码的距其最近的关键帧,然后将该a帧前的(nb-a)帧解码。这意味着一种几乎必然存在的浪费,其中包括搜索时间、解码时间、解码缓存空间等的浪费,以及对某些帧进行了多余的解码,但未播放的问题,这些帧可称为多解未用帧。

2.当视频数据中各图像组的长度并非等长时,假设该视频总共包含有N个图像组,第i个图像组的长度记为L(i)。此时,由于当前帧的位置和L(i)的数量都不确定,所以从当前帧往前搜a帧所到达的位置刚好是关键帧的概率比上述方式中的概率还要小。当前帧往前搜索到a帧后大概率还需要再继续往前多搜索(nb-a)帧以找到它之前的关键帧,并将多找的(nb-a)帧都解码了才能解出第a帧,但此时多解出的这(nb-a)帧却不会在本轮解码使用。

并且,由于视频帧的解码和播放属于串行,在倒播倍速为a时,同样时间下的输出帧数会变成正常倒播速度的1/a,即解码a帧才能播放1帧。这种“每搜a帧播一帧”的策略决定了下一轮的解码和播放仍然不会用到这(nb-a)帧。这意味着,关于本轮解码的这(nb-a)帧,属于多解却未用的帧,造成了解码浪费。因此,该种情况下,无论解码过程还是播放过程的连续性都不能得到很好的保证,不仅造成解码缓存空间的浪费、保存和恢复数据的时间浪费,还会带来处理流程的复杂化和更多关键帧的跳转。

为了更好的理解上述不同情况下,现有倍速倒播视频时出现的问题,下面将以一个另一个具体地示例进行说明:

参照图4所示,以正常播放顺序时有至少11帧图像的一段视频为例,其中,图4中帧号下面带有三角形符号的帧为关键帧。在当前播放帧为第11帧时,若接到倍速3的倒播指令,关于该段视频的解码和播放过程如下所述:

在第一轮解码中,从当前帧(第11帧)开始,按照视频的倒播顺序向前搜索3帧依次搜索到第10帧、第9帧和第8帧,且由于{8,9,10}三帧所组成的目标解码帧位于两个相邻的图像组。因此需要跳转解码,即先将位于第3个图像组中的关键帧第9帧和依赖于第9帧的第10帧解码出来;然后,从关键帧第9帧跳转到第2个图像组中的关键帧第6帧,然后将依赖于第6帧的第7帧和第8帧依次解码出来。这样,第一轮解码中的目标解码帧均完成了解码。其中,第9帧作为播放帧。

同样,在第二轮解码中,当前帧由第11帧变为第8帧,从第8帧开始,按照视频的倒播顺序向前搜索3帧依次搜索到第7帧、第6帧和第5帧,由于{5,6,7}三帧所组成的目标解码帧也位于两个相邻的图像组,也需要跳转解码。即,先将位于第2个图像组中的第6帧和依赖于第6帧的第7帧解码出来;然后,从关键帧第7帧跳转到第1个图像组中的关键帧第1帧,然后依次对第1帧和依赖于第1帧的第2-5帧进行解码。这样,第二轮解码中的目标解码帧均完成了解码。其中,第6帧作为播放帧。

按照上述方式,依次进行第三轮解码和第四轮解码,直到对整段视频中的所有帧完成解码。最终,该段视频中倍速倒播的帧号为:9、6、3、1,被播放的帧次为4次,但该段视频中每一帧的解码次数为1(3次),2(2次),3(2次),4(2次),5(1次),6(2次),7(2次),8(1次),9(1次),10(1次),11(0次),总计解码次数为17次。可以发现,该种方式的解码利用率仅为4/17(约等于23.5%)。

之所以会出现这种情况,是由于全过程的操作顺序是“解码-抽帧-播放”,在第一轮解码中,尽管解码了第8、9、10三帧,但最后播放时只用了其中1帧,这意味着已经解码完毕的第8帧和第10帧,并未对视频的倒序播放起到作用,从而使得整个视频的倒序播放过程存在解码浪费。并且,由于解码时存在的关键帧跳转现象,也在一定程度上使得视频中的某些帧被重复解码,增添了处理计算量,不利于解码效率的提升。

鉴于上述问题的存在,本申请实施例提供了一种播放设备及视频倒播方法,根据倒播倍速和图像组的帧数之间的关系,确定图像组中目标帧的抽取数量和抽取帧号,然后根据目标视频数据中视频帧显示顺序的倒序,对确定出的目标帧进行解码和播放。这种方式,一方面由于完全取消了对于目标视频数据的转码处理过程,从而能够避免因转码耗时长导致的视频倒序播放效率低的问题;另一方面,由于仅对图像组中的目标帧进行抽取和解码处理,相较于现有技术而言,能够大大降低解码的运算负荷,提升解码效率;再一方面,鉴于目标帧抽取数量的限制,整个抽帧的过程是十分短暂的,因而实际上会使得目标视频数据中的解码和播放呈现出并行的表现形式,大大降低因解码速度的局限而对播放效率产生的影响。此外,对于目标视频数据中那些没有被抽取的非目标帧,因无需对其进行解码,能够大大提升目标视频数据的解码利用率和播放过程的流畅性。

接下来,将结合附图对本申请实施例的技术方案,以及本申请实施例的技术方案如何解决上述技术问题进行详细说明。下面所示的实施例之间可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。

在一示例性实施例中,如图5所示,本申请的播放设备执行视频倒播方法时,播放设备中的控制器被配置为执行以下步骤:

S510、获取目标视频数据中的图像组。

其中,每个图像组可以仅包括关键帧,也可以包括一个关键帧和至少一个非关键帧。目标视频数据中可能包含有多个图像组,如一个、两个、三个等,本申请对于目标视频数据中图像组的数量没有限定。并且,对于每一个图像组的帧数也没有限定,其可以仅包括一个关键帧,也可以包括一个关键帧和两个非关键帧(如两个B帧,或者两个P帧或者一个B帧和一个P帧)等。

S520、响应于针对目标视频数据的倒播指令,确定图像组的帧数。

需要说明的是,倒播指令可以包括倒播倍速,其中倒播倍速可以是整数(如1倍、2倍等),也可以是非整数(如0.5倍、1.5倍等),本申请对于倒播倍速的具体数值没有限定。

此外,倒播指令除了可以包括倒播倍速之外,还可以包括预设的解码长度,解码长度的设置能够对目标视频数据的解码过程起到一定的控制作用,避免将目标视频数据全部解码完,造成解码浪费。

可以理解的是,本申请中解码长度可以是当前帧与预定解码帧之间图像组的数量,也可以是当前帧与预定解码帧之间的帧数,或者可以是当前帧与预定解码帧之间的时长,关于解码长度的定义可以有多种,本领域技术人员可以根据实际的需求灵活设定。

S530、根据倒播倍速和确定出的图像组的帧数,确定图像组中目标帧的抽取数量和抽取帧号。

其中,目标帧至少包括图像组中的关键帧,换句话说,目标帧可以仅包括图像组中的关键帧,也可以包括图像组中的关键帧和非关键帧,本申请对于目标帧的类型没有限定。抽取数量包括下述中通过图像组的帧数和倒播倍速的比值确定的预抽取数量n,以及根据预抽取数量和图像组中非关键帧的类型确定的实际抽取数量N。

S540、根据确定出的抽取数量和抽取帧号,抽取目标视频数据中的目标帧。

S550、按照目标视频数据中视频帧显示顺序的倒序,对抽取的目标帧进行解码和播放。

在一些实施例中,参照图6所示,在响应于针对所述目标视频数据的倒播指令,确定图像组的帧数时,可以包括如下步骤:

S521、响应于接收到的基于目标视频数据的倒播倍速,搜寻图像组的关键帧。

需要说明的是,在对图像组的关键帧进行搜寻时,可以有多种方式确定图像组中的关键帧。具体地,可以参见下述两种不同的方式:

方式一:

将目标视频数据中当前时刻对应的视频帧,以及当前图像组之前的所有图像组中的最后一帧确定为对应图像组的尾帧;然后按照目标视频数据中视频帧显示顺序的倒序,从当前图像组的尾帧开始逐帧向前搜寻当前图像组的关键帧,以及从当前图像组之前的相邻图像组的尾帧开始依次逐帧搜寻每个相邻图像组中的关键帧。

需要注意的是,当按照目标视频数据中视频帧显示顺序的倒序,从当前图像组的尾帧逐帧向前搜寻各个图像组的关键帧时,需要从每一个图像组中的视频帧搜寻确定出该图像组对应的关键帧。这种方式虽然可以保证不遗漏对于任意图像组的搜寻,但是会在一定程度上影响关键帧的搜寻效率。

方式二:

获取所述目标视频数据中当前时刻对应的视频帧的显示时间戳PTS,并将当前时刻对应的视频帧以及当前图像组之前的所有图像组中的最后一帧确定为对应图像组的尾帧;然后从当前图像组的尾帧开始逐帧向前搜寻当前图像组的关键帧。对于当前图像组之间的相邻图像组,也需要从尾帧开始向前搜寻其关键帧,并将以倒播倍速的一半的倍率播放一次时所对应视频帧确定为中间帧;以中间帧为节点,沿PTS减小的方向搜寻中间帧所在图像组之前的各图像组的关键帧;或者沿PTS减小和增大的方向分别搜寻中间帧所在图像组前后的各图像组的关键帧。

对于方式二来说,可以通过引入“中间帧”这一概念来提升各个图像组中关键帧的搜寻效率。具体地,可以定义中间帧为:在当前时刻对应的视频帧(尾帧)之前,以倒播倍速的一半的倍率时所对应的视频帧。然后以中间帧为节点,按照PTS减小的方向单向搜寻中间帧所在图像组之前的图像组中的关键帧,或者按照PTS减小和增大的方向双向搜寻中间帧所在图像组之前和之后的图像组中的关键帧。

需要注意的是,当按照当前PTS减小的方向单向搜寻中间帧所在图像组之前的图像组中的关键帧时,存在一种特殊情况,即当某一图像组中包含的视频帧的数量小于倒播倍速的一半倍率,且该图像组为与当前图像组相邻的前一个图像组时;如该图像组只有两帧,其中第一帧为该图像组的关键帧,此时,假设倒播倍速为6倍速,其一半的倍率为3倍,若从当前时刻往前搜寻中间帧,则会直接跳过该具有两帧的图像组,从而在当前图像组之前的第二个图像组中选择中间帧。这就导致当前图像组相邻的前一个图像组没有被搜寻,该图像组中的关键帧也无法被确定为目标帧,从而造成目标帧遗漏的情况。

而为了避免这种情况的出现,可以对已经完成搜寻的图像组中的关键帧进行标记(如标记Used标识),然后去搜寻那些不含有Used标识的关键帧,尤其是对那些视频帧数量较少的图像组中的关键帧进行搜寻分析,从而避免图像组中的关键帧被遗漏,进而重新确定各图像组需要被抽取的目标帧数量和帧号。

其中,中间帧可以被设定为当前帧之前a/2处对应的帧,a为倒播倍速;或者中间帧也可以被设定为当前帧之前a/3处对应的帧,本申请对于中间帧的设定方式没有限定。将中间帧作为节点,然后沿目标视频数据中显示时间戳减小的方向单向搜寻,或者沿显示时间戳减小和增大的方向双向搜寻均能够大大提升关键帧的搜寻效率。并且,双向搜寻的方式相较于单向搜寻的方式而言,不仅具有更短的搜寻时间,还能够避免因方向单一而可能遗漏某些帧的搜寻。

S522、根据关键帧确定图像组的时长和帧率,并将时长和帧率进行乘积计算以得到图像组的帧数。

步骤S522中,图像组的时长可以根据关键帧所携带的时间戳信息进行确定,帧率可以从目标视频数据所携带的视频参数中获取。在图像组的时长和帧率确定之后,可以根据时长和帧率的乘积关系计算图像组的帧数。

在一些实施例中,在根据倒播倍速和确定出的图像组的帧数,确定图像组中目标帧的抽取数量时,可以按照下述抽取策略进行抽取:

可以理解的是,若目标视频数据的倒播倍速为a倍速,目标视频数据的总帧数为Q帧,任一图像组的帧数为q(i)帧,则最理想的目标帧抽帧比例ratio=Q/a。但是,由于目标视频数据通常只能按照时序以图像组为单位进行传输,且目标视频数据的解码也必须依赖于图像组中的关键帧。因此,如果想要得到目标视频数据图像组的总帧数,往往需要对目标视频数据中的全部图像组进行解码和传输,这就在很大程度上导致了目标视频数据的解码浪费,因为总有一些帧是我们不需要的。

因此,为了使得图像组中目标帧的抽取数量保持在合适的范围之内,我们可以适当调整目标帧的抽取策略。具体地,例如可以按照图像组的序列,使每一个图像组中目标帧的抽取数量保持在一定的水平,即任意图像组中目标帧的抽帧比例为ratio=q/a。此时,按照上述改进后的抽帧策略对目标视频数据进行抽帧的话,由于只需要保证目标视频数据中每一个图像组中目标帧的抽取比例,那么当各图像组的抽帧比例确定后,整个目标视频数据的抽帧比例也就确定了。

在一些具体地示例中,参照图7所示,在根据倒播倍速和确定出的图像组的帧数,确定图像组中目标帧的抽取数量时,可以包括下述步骤:

S531、计算每一个图像组对应的帧数与倒播倍速的比值m。

由于图像组的帧数和倒播倍速的具体数值均可以有多种,因此比值m也存在多种不同的情况,如m≥1,且m为整数时,或者m>1,且m为非整数时,或者m<1时。并且,基于比值m的不同,每一个图像组中目标帧的预抽取数量n也均不相同。

S532、根据比值m确定每一个图像组中目标帧的预抽取数量n。

具体地,当m≥1,且m为整数时,n=m。其中,m≥1意味着任一图像组的帧数满足抽帧比例ratio=q/a,即图像组中帧的数量足够进行目标帧的抽取;并且,当m为整数时,即可以通过直接将预抽取数量n确定为与比值m相同的数量,即对于任一图像组可以按照每个图像组抽取m个目标帧的数量进行抽取。

当m>1,且m为非整数时,n=m

当m<1时,意味着任一图像组的帧数不满足抽帧比例ratio=q/a,而为了保证目标帧的抽取数量保持在合适的范围,可以通过确定当前图像组的帧数与前一个或多个图像组的帧数之和是否满足抽帧比例的方式来对目标帧进行抽取。即:当m<1时,可以首先判断当前图像组是否为目标视频数据中的第一个图像组,以确定当前图像组之前是否存在图像组。当不存在时,表明当前图像组为目标视频数据中的第一个图像组,则将该图像组中目标帧的预抽取数量n确定为1;当存在时,则根据当前图像组的帧数和前至少一个相邻图像组的帧数之和与倒播倍速比值更新m,即更新后的m为当前图像组的帧数和前至少一个相邻图像组的帧数之和与倒播倍速比值,然后根据更新的m重新确定目标帧的预抽取数量n。如此循环,直到确定出目标视频数据中所有图像组的目标帧的预抽取数量n。

在一个具体的示例中,若目标视频数据包含有三个图像组的帧序列为{1 2 3 4 56 7 8 9 1011},其中1、6、9为关键帧,第一个图像组的帧数为5,第二个图像组的帧数为3,第三个图像组的帧数为3,当前帧为第11帧,倒播倍速a=4,那么按照上述目标帧的抽取策略,各图像组中目标帧的抽取数量可以参考下述内容:

首先,从当前帧第11帧开始按照目标视频数据中视频帧显示顺序的倒序,依次确定第三个、第二个和第一个图像组中目标帧的帧数与倒播倍速的比值m,然后根据m的取值确定预抽取数量n。

对于第三个图像组而言,由于倒播倍速a大于该图像组的帧数3,则其比值3/4<1。并且,由于当前图像组并非第一个图像组,因此需要计算第二个图像组与第三个图像组的帧数和与倒播倍速的比值,由于(3+3)/4>1,并且6/4为非整数,则将第二个图像组与第三个图像组共同的目标帧的抽取数量确定为2。

然后,确定第一个图像组与倒播倍速的比值,由于5/4>1,且5/4为非整数,则将第一个图像组的目标帧的抽取数量确定为2。综上,对于本实例中总帧数为11帧的目标视频数据而言,按照上述目标帧的抽取策略确定出目标帧的抽取数量总计为4帧。

应当理解的是,在目标视频数据中目标帧的抽取数量确定之后,尤其是当图像组中目标帧的抽取数量为多个时,还需要对各图像组中目标帧的抽取帧号进行确定,关于目标帧的抽取帧号可以参照下述不同实施例:

在一些实施例中,当每一个图像组中目标帧的预抽取数量n≤1时,该图像组中的目标帧的实际抽取数量N=1,并将每一个图像组中的关键帧确定为目标帧;然后,按照目标视频数据中视频帧显示顺序的倒序,确定目标帧的抽取帧号。

在一些实施例中,当任意图像组中目标帧的预抽取数量n>1时,根据该图像组中关键帧之后相邻n-1帧中最后一张非关键帧的类型,确定图像组中的目标帧的实际抽取数量N,其中,实际抽取数量N不小于预抽取数量n;然后,按照目标视频数据中视频帧显示顺序的倒序和确定出的实际抽取数量N,确定目标帧的抽取帧号。

也就是说,对于预抽取数量n≤1的图像组,可以直接确定该图像组的实际抽取数量N=1,即可以直接抽取该图像组的关键帧作为目标帧;对于预抽取数量n>1的图像组,还需要根据该图像组中各个视频帧的类型进一步确定目标帧的实际抽取数量N,具体的确定方式可以参见下述内容:

具体地,由于非关键帧的解码依赖于关键帧,例如P帧的解码依赖于其前至少一个帧被解码,B帧的解码依赖于其前后两帧被解码,因此图像组中非关键帧的抽取帧号一般从该图像组中的关键帧开始,这意味着,首先抽取该图像组中的关键帧,然后从该图像组中关键帧后的第一张非关键帧开始连续抽取k张非关键帧,其中k=n-1。不过由于非关键帧类型的不同,非关键帧的抽取帧号和抽取数量存在下述几种不同的情形:

情形一、若该图像组中关键帧后的连续k张非关键帧的最后一张是P帧,则将该k张P帧按照显示时间戳的时序进行抽取即可。其中,该情形下,参照图8所示,该图像组中关键帧后的连续k张可以全都是P帧,则将该k张P帧按照显示时间戳的时序进行抽取即可;或者参照图9所示,该图像组中关键帧后的连续k张包含B帧和P帧,但无论最后一张P帧之前存在多少B帧,由于要解码B帧,该B帧前后的两帧也需要被解码,因此非关键帧中的B帧一定可以被解码,且该B帧实际上并不影响图像组中目标帧的抽取数量和顺序。即,当图像组中关键帧后连续的k帧中最后一帧不是B帧时,目标帧的实际抽取数量N不变,即k+1帧。

情形二、若该图像组中关键帧后连续的k张非关键帧的最后一张是B帧。此时,由于B帧的解码依赖于其前后两帧的解码,因此需要确定B帧的后一帧的类型。参照图10所示,当B帧的后一帧为P帧,则该P帧也需要被解码和抽取,该图像组中非关键帧的抽取数量为k+1,即该图像组中关键帧和非关键帧总共需要被抽取k+2张;参照图11所示,当B帧的后一帧也为B帧,且第二个B帧的后一帧为P帧时,则第二个B帧后的P帧也需要被解码和抽取,该图像组中非关键帧的抽取数量为k+2,即该图像组中关键帧和非关键帧总共需要被抽取k+3张;参照图12所示,当B帧的后连续s帧均为B帧,且直到连续s张B帧的后一帧为P帧时,由于与B帧相邻的P帧始终需要被解码和抽取,因此该图像组中非关键帧的抽取数量为k+s+1,图像组中关键帧和非关键帧总共需要被抽取k+s+2张;当B帧的后连续s帧均为B帧,且连续s张B帧之后不存在P帧时,则将该s张B帧进行解码和抽取,该图像组中非关键帧的抽取数量为k+s,图像组中关键帧和非关键帧总共需要被抽取k+s+1张。

即,当图像组中关键帧后连续的k帧中最后一帧是B帧,且该图像组的最后一帧不是B帧时,目标帧的实际抽取数量N为k+s+2,其中,s为连续k帧之后,连续B帧的数量;当图像组中关键帧后连续的k帧中最后一帧是B帧,且该图像组中最后一帧为B帧时,目标帧的实际抽取数量N为k+s+1,其中,s为连续k帧之后,连续B帧的数量。

也就是说,对于情形二,根据图像组的帧数和倒播倍速的比值确定出目标帧的抽取数量之后,还需要根据图像组中具体的非关键帧的排序灵活调整最终的非关键的抽取数量。应当理解的是,上述关于图像组中目标帧的抽取数量和抽取方式的描述,仅作为本申请实施例的一种可选实施方式,并不能构成对本申请实施例关于该部分内容的全部限定。

在一些实施例中,在根据确定出的抽取数量和抽取帧号,抽取目标视频数据中的目标帧时,可以按照目标帧的帧号和图像组在目标视频数据中的序列号将抽取到的目标帧记录在二维抽帧矩阵中,即二维抽帧矩阵记录每个图像组需要抽取的目标帧。

其中,图像组在目标视频数据中的序列号可以按照倒播顺序确定,也可以按照正向播放的顺序确定,图像组的序列号对应二维抽帧矩阵中的行;目标帧的帧号应二维抽帧矩阵的列,且二维抽帧矩阵的第一列为关键帧列。可以理解的是,由于二维抽帧矩阵记录了从目标视频数据的第一个图像组一直到当前帧所在图像组抽取到的所有的目标帧的信息,每一个图像组占一行,因每个图像组目标帧的抽取数量可能不同,但为了便于对二维抽帧矩阵进行计算,可以用0来代替那些目标帧数量较少的图像组中的数据。

由于二维抽帧矩阵无论是按照自上往下还是自下往上的方向,都非常容易对目标帧进行统计,因此这种方式能够大大提升后续对于目标帧的解码效率。具体地,由于上述二维抽帧矩阵仅是对目标帧的记录,在该矩阵的生成过程中无需对其进行解码,因此当接收到倒播指令时,二维抽帧矩阵可以快速生成,从而能够对下述的二维解码矩阵起到良好的逻辑指导和加速作用。此外,在对抽取到的目标帧进行记录时,除了可以采用二维抽帧矩阵的方式之外,还可以采用二维数组、队列群或者二维链表等方式,本申请对此没有限定。

在一些实施例中,在按照目标视频数据中视频帧显示顺序的倒序,对抽取的目标帧进行解码和播放时,可以基于生成的二维解码矩阵对目标帧进行解码。其中,二维解码矩阵与二维抽帧矩阵相对应,随着解码过程的进行,二维解码矩阵能够对二维抽帧矩阵进行逐行解码,且只去解二维抽帧矩阵中记录的那些目标帧,一方面这种方式能够使得解码过程连续和有序的进行,另一方面也能够在很大程度上避免解码浪费的问题。

可以理解的是,在对抽取到的目标帧进行解码时,除了可以采用二维解码矩阵的方式之外,还可以采用二维数组、队列群或者二维链表等方式,本申请对此也没有限定。

在一些实施例中,倒播指令还可以包括预设的解码长度。其中,预设的解码长度的设置能够对目标视频数据的解码过程起到一定的控制作用,避免将目标视频数据全部解码完,造成解码浪费。

需要注意的是,本申请中解码长度可以是当前帧与预定解码帧之间图像组的数量,也可以是当前帧与预定解码帧之间的帧数,或者可以是当前帧与预定解码帧之间的时长,关于解码长度的定义可以有多种,本领域技术人员可以根据实际的需求灵活设定。

示例性地,若预设的解码长度为L=2,目标视频数据中包含有35个图像组,此时如果通过二维解码矩阵对该目标视频数据进行解码,则每轮解码都只会对2个图像组进行解码,或者每轮解码都只会对2秒对应的目标视频数据进行解码,或者每轮解码都只会对2帧对应的目标视频数据进行解码。

在一些实施例中,在对目标帧进行解码之后,可以等待预设的缓冲时长再对解码后的目标帧进行播放。其中,缓冲时长可以与上述解码长度L相同,也可以不同,本申请对此没有限定。

例如,当缓冲时长l=2时,即表明目标视频数据的播放开始时刻要比解码开始时刻晚2个图像组或者2秒或者2帧。这种设置方式由于给二维解码矩阵预留了一定的缓冲时间,从而能够使得目标视频数据的播放过程更加连续,降低播放过程出现卡顿的可能性。

在一个具体的示例中,参照图13所示,还是以正常播放顺序时有至少11帧图像的一段视频为例,其中,图13中帧号下面带有三角形符号的帧为关键帧。在当前播放帧为第11帧时,若接到倍速3的倒播指令,结合上述关于目标帧的抽取数量和抽取帧号的确定方式,可以确定该段视频总共需要抽取的目标帧数量为4个,即第1帧、第3帧、第6帧和第9帧。该段视频中除了目标帧之外的其他帧均不需要被抽取和解码,因此该段视频以3倍的倒播倍速进行播放时,也只需要按照倒播顺序依次播放第9帧、第6帧、第3帧和第1帧即可。

可以发现,与本申请实施例上述内容中提到的现有的视频倒播方案相比,本申请提供的视频倒播方法具有更高的解码和播放效率,对于目标帧的解码利用率达到了一个非常高的水平。

应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。

另外,本申请还提供一种多媒体资源播放方法,可以应用于上述播放设备或其他电子设备中,该方法包括:获取目标视频数据中的图像组,所述图像组包括关键帧;响应于针对所述目标视频数据的倒播指令,确定所述图像组的帧数,所述倒播指令包括倒播倍速;根据所述倒播倍速和确定出的所述图像组的帧数,确定所述图像组中目标帧的抽取数量和抽取帧号,所述目标帧至少包括所述图像组中的关键帧;根据确定出的所述抽取数量和所述抽取帧号,抽取所述目标视频数据中的所述目标帧;按照所述目标视频数据中视频帧显示顺序的倒序,对抽取的所述目标帧进行解码和播放。

在本申请的示例性实施例中,播放设备能够根据倒播倍速和图像组的帧数之间的关系,确定图像组中目标帧的抽取数量和抽取帧号,然后根据目标视频数据中视频帧显示顺序的倒序,对确定出的目标帧进行解码和播放。这种方式,一方面由于完全取消了对于目标视频数据的转码处理过程,从而能够避免因转码耗时长导致的视频倒序播放效率低的问题;另一方面,由于仅对图像组中的目标帧进行抽取和解码处理,相较于现有技术而言,能够大大降低解码的运算负荷,提升解码效率;再一方面,鉴于目标帧抽取数量的限制,整个抽帧的过程是十分短暂的,因而实际上会使得目标视频数据中的解码和播放呈现出并行的表现形式,大大降低因解码速度的局限而对播放效率产生的影响。此外,对于目标视频数据中那些没有被抽取的非目标帧,因无需对其进行解码,能够大大提升目标视频数据的解码利用率和播放过程的流畅性。

上述实施例提供的视频倒播方法的实现原理,可以参见上文中关于播放设备中控制器配置内容的各实施例的具体限定,在此不再赘述。

另外,在实施上述视频倒播方法时,本申请还提供了一种计算机可读存储介质。其中,该计算机可读存储介质可存储有计算机程序,该计算机程序被播放设备或其他电子设备中的控制器调用并运行时,可实现本申请提供的视频倒播方法中的部分或全部步骤。

作为一个示例,该计算机可读存储介质可以为磁碟、光盘、只读存储记忆体或随机存储记忆体等。

应该理解的是,本申请实施例中的技术方案可借助软件加必需的通用硬件平台的方式来实现。因此,本申请实施例中的技术方案本质上或者对现有技术做出贡献的部分可以以软件产品的形式体现出来,该软件产品可以存储在计算机可读存储介质中。

另外,在实施上述视频倒播方法时,本申请还提供了一种计算机程序产品。其中,该计算机程序产品包括计算机程序,该计算机程序被播放设备或其他电子设备中的控制器调用并运行时,可实现本申请提供的视频倒播方法中的部分或全部步骤。

以上仅为本申请实施例的具体实施方式而已,并不用于限定本申请实施例的保护范围,凡在本申请实施例的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本申请实施例的保护范围之内。

技术分类

06120115686145