本申请实施例涉及计算机技术领域,特别涉及一种视频播放的方法、装置、终端及存储介质。
背景技术:
随着处理视频的技术的发展,移动终端能够集成播放器为用户播放视频等多媒体文件。
在一些技术中,播放器能够对需要播放的视频进行解码,并将解码后的视频逐帧播放。当视频被播放时,视频的流畅程度受实际播放时的帧数影响较大。当被播放的视频在录制时的帧数较低时,该视频被观看时的流程程度较差。
技术实现要素:
本申请实施例提供了一种视频播放的方法、装置、终端及存储介质,可以解决的问题。所述技术方案如下:
根据本申请的一方面内容,提供了一种视频播放的方法,所述方法包括:
当播放缓存中的第一图像帧是非首帧图像帧时,读取所述第一图像帧,所述第一图像帧是原视频中除第一帧外的其它所述图像帧,所述播放缓存用于存储所述原视频解码出的图像帧;
读取插帧缓存中的第二图像帧,所述第二图像帧是所述第一图像帧的上一帧;
当所述第一图像帧和所述第二图像帧之间的运动矢量δs0不小于预设阈值s0时,根据所述第一图像帧和所述第二图像帧,生成中间图像帧,所述中间图像帧的时间戳位于所述第一时间戳和第二时间戳之间,所述第一时间戳是第一图像帧的时间戳,所述第二时间戳是所述第二图像帧的时间戳;
根据所述中间图像帧的时间戳、所述第一时间戳和所述第二时间戳,播放包括所述第一图像帧、所述中间图像帧和所述第二图像帧的视频。
根据本申请的另一方面内容,提供了一种视频播放的装置,所述装置包括:
第一帧读取模块,用于当播放缓存中的第一图像帧是非首帧图像帧时,读取所述第一图像帧,所述第一图像帧是原视频中除第一帧外的其它所述图像帧,所述播放缓存用于存储所述原视频解码出的图像帧;
第二帧读取模块,用于读取插帧缓存中的第二图像帧,所述第二图像帧是所述第一图像帧的上一帧;
中间帧获取模块,用于当所述第一图像帧和所述第二图像帧之间的运动矢量δs0不小于预设阈值s0时,根据所述第一图像帧和所述第二图像帧,生成中间图像帧,所述中间图像帧的时间戳位于所述第一时间戳和第二时间戳之间,所述第一时间戳是第一图像帧的时间戳,所述第二时间戳是所述第二图像帧的时间戳;
视频播放模块,用于根据所述中间图像帧的时间戳、所述第一时间戳和所述第二时间戳,播放包括所述第一图像帧、所述中间图像帧和所述第二图像帧的视频。
根据本申请的另一方面内容,提供了一种终端,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如本申请实施提供的视频播放的方法。
根据本申请的另一方面内容,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如本申请实施提供的视频播放的方法。
本申请实施例提供的技术方案带来的有益效果可以包括:
本申请能够在视频播放时,从播放缓存中读取第一图像帧,从插帧缓存中读取第二图像帧,当第一图像帧和第二图像帧之间的运动矢量δs0不小于预设阈值s0时,根据第一图像帧和第二图像帧生成中间图像帧,该中间图像帧的时间戳位于第一图像帧的时间戳和第二图像帧的时间戳之间,随后根据时间戳播放包括第一图像帧、中间图像帧和第二图像帧的视频。由于本申请能够在视频播放的同时,分别从两个缓存区提取第一图像帧和第二图像帧,在上述两帧满足运动矢量不小于预设阈值时,生成中间帧,最终播放该视频,从而使得视频能够在播放的过程中,根据画面中物体的实际运动情况动态进行插帧操作,在保证插帧的效果的同时,使得插帧操作的计算量大幅减少。
附图说明
为了更清楚地介绍本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本申请一个示例性实施例提供的终端的结构框图;
图2是本申请一个示例性实施例提供的视频播放的方法的流程图;
图3是本申请另一个示例性实施例提供的视频播放的方法流程图;
图4是基于图3所示实施例提供的一种视频播放的示意图;
图5示出了本申请一个示例性实施例提供的视频播放的装置的结构框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本申请的描述中,需要说明的是,除非另有明确的规定和限定,术语“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
为了本申请实施例所示方案易于理解,下面对本申请实施例中出现的若干名词进行介绍。
原视频:指被播放器解码并播放的视频文件。在一种可能的场景中,该视频文件是已经封装完成的文件,终端能够在该视频播放时,将该视频文件预先下载完成,加载到播放器中播放。在另一种可能的场景中,该视频文件是流媒体文件,即终端接收云端发送的多个数据包,在终端本地解码该数据包获得需要播放的图像帧,从而进行播放的文件。
播放缓存:是用于缓存原视频中被解码出的图像帧的缓存区域。在一种可能的方式中,播放缓存中存存储一帧图像。可选地,在一种可能的方式中,播放缓存中存储多帧图像,通过队列的方式存储该多帧图像,即先被解码出的图像帧先被获取到显示队列中,令播放器根据图像帧的时间戳进行显示播放。
插帧缓存:是用于缓存原视频中被解码出的图像帧的另一个缓存区域。当一帧图像从播放缓存中被取出时,该帧图像被移动至插帧缓存中。例如,原视频中的第21帧在播放缓存中,此时,原视频中的第22帧在插帧缓存。
时间戳:在本申请实施例中,图像帧的时间戳用于指示该图像帧显示的时刻,播放器能够在该时间戳指示的时刻,显示该图像帧。
示例性地,本申请实施例所示的视频播放的方法,可以应用在终端中,该终端具备显示屏且具备视频播放的功能。终端可以包括手机、平板电脑、膝上型电脑、台式电脑、电脑一体机、服务器、工作站、电视、机顶盒、智能眼镜、智能手表、数码相机、mp4播放终端、mp5播放终端、学习机、点读机、电纸书、电子词典、车载终端、虚拟现实(virtualreality,vr)播放终端或增强现实(augmentedreality,ar)播放终端等。
请参考图1,图1是本申请一个示例性实施例提供的终端的结构框图,如图1所示,该终端包括处理器120、存储器140和显示屏160,所述存储器140中存储有至少一条指令,所述指令由所述处理器120加载并执行以实现如本申请各个方法实施例所述的视频播放的方法。
在本申请中,终端100是具备视频播放功能的电子设备。当终端100在播放缓存中的第一图像帧是非首帧图像帧时,终端100能够读取第一图像帧,并能够读取第一图像帧的上一帧,即第二图像帧,并根据第一图像帧和第二图像帧,生成中间图像帧,该中间图像帧的时间戳位于第一图像帧和第二图像帧之间,按照时间戳的顺序,播放包含第一图像帧、中间图像帧和第二图像帧的视频。
处理器120可以包括一个或者多个处理核心。处理器120利用各种接口和线路连接整个终端100内的各个部分,通过运行或执行存储在存储器140内的指令、程序、代码集或指令集,以及调用存储在存储器140内的数据,执行终端100的各种功能和处理数据。可选的,处理器120可以采用数字信号处理(digitalsignalprocessing,dsp)、现场可编程门阵列(field-programmablegatearray,fpga)、可编程逻辑阵列(programmablelogicarray,pla)中的至少一种硬件形式来实现。处理器120可集成中央处理器(centralprocessingunit,cpu)、图像处理器(graphicsprocessingunit,gpu)和调制解调器等中的一种或几种的组合。其中,cpu主要处理操作系统、用户界面和应用程序等;gpu用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器120中,单独通过一块芯片进行实现。
存储器140可以包括随机存储器(randomaccessmemory,ram),也可以包括只读存储器(read-onlymemory)。可选的,该存储器140包括非瞬时性计算机可读介质(non-transitorycomputer-readablestoragemedium)。存储器140可用于存储指令、程序、代码、代码集或指令集。存储器140可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等;存储数据区可存储下面各个方法实施例中涉及到的数据等。
显示屏160可以是柔性显示屏,也能够集成触摸触感器。在显示图像的同时,接收触摸信号,根据触摸信号进行相应的反馈。
请参考图2,图2是本申请一个示例性实施例提供的视频播放的方法的流程图。该视频播放的方法可以应用在上述图1所示的终端中。在图2中,视频播放的方法包括:
步骤210,当播放缓存中的第一图像帧是非首帧图像帧时,读取第一图像帧,第一图像帧是原视频中除第一帧外的其它图像帧,播放缓存用于存储原视频解码出的图像帧。
在本申请实施例中,终端能够通过播放器对原视频进行播放。可选地,终端能够通过播放器应用(英文:application,简写:app)播放原视频。可选地,终端还能够通过小程序或快应用中集成的播放器播放原视频。可选地,终端还能够通过浏览器中的网页播放器播放原视频。可选地,终端还能够通过集成播放器的其它应用中播放原视频,例如,终端通过即时通讯应用中集成的播放器播放原视频,或者,终端还能够通过购物应用中集成的播放器播放原视频。
在一种可能的实现方式中,当终端中的播放器接收到用于指示原视频播放的播放指令时,终端通过播放器对原视频进行解码,并将解码获得的图像帧存储在播放缓存中。当播放缓存中的第一图像帧是非首帧图像帧时,终端将读取第一图像帧。
需要说明的是,非首帧图像帧的含义与第一图像帧相同,用于指示原视频中除第一帧外的其它图像帧。第一帧是原视频被解码后编号为1的图像帧,其表示原视频中第一幅被显示的图像帧。
步骤220,读取插帧缓存中的第二图像帧,第二图像帧是第一图像帧的上一帧。
在本申请实施例中,终端能够从插帧缓存中读取第二图像帧。需要说明的是,该插帧缓存中存储有第二图像帧。在本申请公开的视频播放方法中,终端能够读取该第二图像帧。由于终端同时设计了播放缓存和插帧缓存这两个缓存区域,使得视频的正常播放流程不被干扰,本申请公开的方案能够在视频播放的同时对视频进行处理,提高了插帧的效率和效果,在大幅减少插帧的计算量的前提下,使得终端能够将本申请是所示的方案应用在移动终端中,在运算能力有限的终端中实现播放时的实时插帧处理,提高了移动终端播放的视频的图像效果。
可选地,在一种可能的方式中,第二图像帧是终端从播放缓存中移动至插帧缓存中的图像帧。
步骤230,当第一图像帧和第二图像帧之间的运动矢量δs0不小于预设阈值s0时,根据第一图像帧和第二图像帧,生成中间图像帧,中间图像帧的时间戳位于第一时间戳和第二时间戳之间,第一时间戳是第一图像帧的时间戳,第二时间戳是第二图像帧的时间戳。
在本申请实施例中,终端能够在第一图像帧和第二图像帧满足预定条件时,根据第一图像帧和第二图像帧,生成中间图像帧。可选地,原视频的第一图像帧和第二图像帧中均包括一对象,当该对象在第一图像帧中的位置与该对象在第二图像帧中的位置之间发生较大幅的移动时,终端将生成中间图像帧。
在一种可能的方式中,终端将通过计算该第一图像帧与第二图像帧之间的运动矢量δs0,将第一图像帧中的对象到第二图像帧中的移动量量化。可选地,终端能够在第一图像帧确定n个特征点,并在第二图像帧中确定对应的n个第二特征点。需要说明的是,第一特征点和第二特征点是对应于同一个实体物体的表面上的点。终端能够根据第一图像帧中的第一特征点,以及第二图像帧中对应的第二特征点的位置,能够确定第一图像帧和第二图像帧之间的运动矢量δs0,并能够在该运动矢量δs0不小于预设阈值s0时,根据第一图像帧和第二图像帧,生成中间图像帧。
可选地,终端能够通过第一图像帧中的特征点的位置信息,获取n个第一特征点,例如,终端获取指定坐标位置的上的像素点,将该位置上的像素点确定为n个第一特征点。也即,终端能够根据第一图像帧中的特征点的位置信息,获取n个第一特征点。
可选地,终端还能够根据第一图像帧中的像素值信息,获取n个第一特征点。例如,像素值给定,终端根据给定的像素值,获取第一图像帧中的n个第一特征点。
可选地,终端还能够从第一图像帧中的边界点中,获取n个第一特征点,该边界点是第一图像帧中目标物体的边界点。需要说明的是,该目标物体可以是第一图像帧中的目标对象。
在一种可能的方式中,中间图像帧是根据第一图像帧和第二图像帧重绘的图像帧。例如,第一图像帧中的特征点a的位置是(50,50),该特征点a在第二图像帧中对应的位置是(80,80)。则生成的中间图像帧中的相应的特征点的位置是(65,65)。终端能够根据第一图像帧和第二图像帧中各个像素点,或者根据各个特征点,生成中间图像帧。
在本申请实施例中,终端能够在申城中间图像帧后,将中间图像帧的时间戳设置在第一时间戳和第二时间戳之间。需要说明的是,第一时间戳是第一图像帧的时间戳,第二时间戳是第二图像帧的时间戳。可选地,中间图像帧的时间戳被设置在第一时间戳和第二时间戳之间,由于第二图像帧是第一图像帧的上一帧,则第一时间戳将晚于第二时间戳。
在一种可能的实施方式中,中间图像帧与第一图像帧之间的运动矢量δs1小于运动矢量δs0,和/或,中间图像帧与第二图像帧之间的运动矢量δs2小于运动矢量δs0。
步骤240,根据中间图像帧的时间戳、第一时间戳和第二时间戳,播放包括第一图像帧、中间图像帧和第二图像帧的视频。
在一种可能的实现方式中,终端将按照时间戳指示的时刻,播放包括第一图像帧、中间图像帧和第二图像帧的视频。在一种可能的实现方式中,当第二时间戳早于中间图像帧的时间戳,中间图像帧的时间戳早于第一时间戳时,终端依次播放第二图像帧、中间图像帧和第一图像帧。
综上所述,本实施例提供的视频播放的方法,能够在视频播放时,从播放缓存中读取第一图像帧,从插帧缓存中读取第二图像帧,当第一图像帧和第二图像帧之间的运动矢量δs0不小于预设阈值s0时,根据第一图像帧和第二图像帧生成中间图像帧,该中间图像帧的时间戳位于第一图像帧的时间戳和第二图像帧的时间戳之间,随后根据时间戳播放包括第一图像帧、中间图像帧和第二图像帧的视频。由于本申请能够在视频播放的同时,分别从两个缓存区提取第一图像帧和第二图像帧,在上述两帧满足运动矢量不小于预设阈值时,生成中间帧,最终播放该视频,从而使得视频能够在播放的过程中,根据画面中物体的实际运动情况动态进行插帧操作,在保证插帧的效果的同时,使得插帧操作的计算量大幅减少。
请参见图3,图3是本申请另一个示例性实施例提供的视频播放的方法流程图。该视频播放的方法可以应用在上述图1所示的终端中。在图3中,该视频播放的方法包括:
步骤310,当播放缓存中的第一图像帧是非首帧图像帧时,读取第一图像帧。
在本申请实施例中,步骤310的执行过程和步骤210的执行过程相同,此处不再赘述。
可选地,在一种可能的场景中,终端能够通过识别播放器用户界面中输入的文本,确定是否执行本申请提供的视频播放方法。在该场景中,终端将通过执行步骤(1)、步骤(2)、步骤(3)和步骤(4)以实现在播放器用户界面中输入的文本与原视频中的标识匹配时,执行本申请提供的视频播放的方法。
步骤(1),接收流媒体服务器发送的流媒体视频。
在本申请实施例中,原视频可以是流媒体服务器发送的流媒体视频。例如,流媒体视频可以是网络直播流视频、体育比赛直播流视频或其它节目直播流视频等。
步骤(2),解码流媒体视频,获取流媒体视频对应的图像帧。
在本申请实施例中,终端能够解码流媒体视频,获取流媒体视频对应的图像帧。需要说明的是,流媒体视频具有特定的编码解码格式,执行本步骤的播放器或者终端处理器需要支持解码流媒体视频的数据。
当该流媒体视频被解码后,终端将获得该流媒体视频对应的图像帧。
步骤(3),将流媒体视频对应的图像帧写入播放缓存中。
在本申请实施例中,终端将流媒体视频对应的图像帧写入播放缓存中。
步骤(4),当流媒体视频的标识与输入关键字匹配,且播放缓存中的第一图像帧是非首帧图像帧时,读取第一图像帧,输入关键字是指定时段内通过播放器用户界面输入的文本,播放器用户界面是指定应用的用户界面,指定应用用于播放流媒体视频。
在本申请实施例中,终端能够在指定时段内记录通过播放器用户界面输入的文本,将该输入的文本作为输入关键字。当流媒体视频的标识与该输入关键字匹配时,且播放缓存中的第一图像帧是非首帧图像帧时,读取第一图像帧。
需要说明的是,指定时段可以是流媒体视频开始播放的时刻前指定长度的时间段,例如,前5分钟,前30分钟等时段,本申请实施例对此不作限定。
例如,在一种应用场景中,当杰克打开系统播放器,在系统播放器的搜索框中输入“篮球直播比赛”时,播放器提供多个搜索结果,杰克选择了其中的一个直播播放器观看比赛。此时,终端开始接收流媒体服务器发送的流媒体视频。当终端识别到流媒体视频的标识包含“篮球直播比赛”,与杰克通过播放器用户界面输入的输入关键字匹配时,终端检测播放缓存中的第一图像帧是否是非首帧图像帧,当第一图像帧是非首帧图像帧时,终端读取第一图像帧,并执行后续步骤,以实现本申请提供的视频播放的方法。
在另一种可能的场景中,终端能够通过识别原视频的属性信息,从而确定原视频中是否存在大幅运动的片段,进而确定是否启用本申请提供的视频播放方法。在本场景中,终端能够通过执行步骤(5)和步骤(6)来实现针对存在大幅运动的对象时,终端自动对原视频执行本申请提供的视频播放的方法。
步骤(5),读取原视频的属性信息,属性信息用于指示原视频的类型。
在本申请实施例中,终端在播放原视频时,能够读取原视频的属性信息。需要说明的是,该属性信息可以通过附加文本的形式和原视频打包存储在一起。可选地,该属性信息也可以写入到原视频中,在指定帧的位置保存。
在一种可能的实现方式中,该属性信息可以是视频的标签信息,也可以是分类的类型信息,本申请实施例对此不作限制。
步骤(6),当属性信息指示原视频中存在大幅运动的对象,且播放缓存中的第一图像帧是非首帧图像帧时,读取第一图像帧。
在本申请实施例中,终端能够预先存储属性信息对应的含义的,当终端确认属性信息指示原视频中存在大幅运动的对象时,且播放缓存中的第一图像帧是非首帧图像帧时,终端将读取第一图像帧。
例如,当杰克使用手机中的播放器观看动作电影时,终端获取该动作电影的属性信息,读取到标签“动作”,并根据该标签确定该视频中存在大幅运动的对象。随后,当终端确定播放缓存中的第一图像帧是非首帧图像帧时,终端将读取第一图像帧,并执行后续步骤,以实现本申请提供的视频播放的方法。
步骤320,读取插帧缓存中的第二图像帧。
在本申请实施例中,步骤320的执行过程和步骤220的执行过程相同,此处不再赘述。
在本申请实施例中,当终端执行完成步骤320,终端可以执行步骤331和步骤332a,也可以执行步骤331和步骤332b,或者,终端还可以执行步骤333
步骤331,当第一图像帧和第二图像帧之间的运动矢量δs0小于预设阈值s0时,确定第一图像帧是否是原视频中的最后一帧。
步骤332a,当第一图像帧是原视频中的最后一帧时,将第一图像帧移动至显示队列中。
步骤332b,当第一图像帧不是原视频中的最后一帧时,将第一图像帧写入插帧缓存。
步骤333,当第一图像帧和第二图像帧之间的运动矢量δs0不小于预设阈值s0时,根据第一图像帧和第二图像帧,生成中间图像帧。
在本申请实施例中,步骤333的执行过程和步骤230的执行过程相同,此处不再赘述。
步骤334,将第二图像帧移动到显示队列中。
步骤335,将中间图像帧存储在插帧缓存中。
步骤336,当中间图像帧与第一图像帧之间的运动矢量δs1小于运动矢量δs0时,将中间图像帧从插帧缓存移动到显示队列中,并将第一图像帧移动至插帧缓存中。
步骤337,当插帧缓存写入新的图像帧时,将第一图像帧移动至显示队列中。
在本申请的一种应用场景中,终端能够在原视频一边播放的同时,一边对原始进行插帧处理。由于终端能够通过相邻两帧之间的运动矢量δs0与预设阈值s0的大小关系确定是否进行插帧处理,因此,终端能够在视频播放的过程中大大减少计算量,在保证视频播放效果的前提下,使得本申请提供的方案能够应用在计算能力有限的移动设备中。
步骤340,根据中间图像帧的时间戳、第一时间戳和第二时间戳,播放包括第一图像帧、中间图像帧和第二图像帧的视频。
在本申请实施例中,步骤340的执行过程和步骤240的执行过程相同,此处不再赘述。
例如,原视频包括1000帧图像,一共生成了20帧中间图像帧,则终端仅需要重绘20帧图像,减少了终端绘制图像的计算量。
请参见图4,图4是基于图3所示实施例提供的一种视频播放的示意图。在图4中,原视频400在处理前包括20帧图像,其中,第3帧403和第4帧404之间,第7帧407和第8帧408之间,第8帧408和第9帧409之间,第10帧410和第11帧411之间,运动矢量δs0均不小于预设阈值s0,终端在上述4个位置处插入中间图像帧,分别为中间图像帧4031、中间图像帧4071、中间图像帧4081和中间图像帧4101。需要说明的是,中间图像帧的时间戳可以是第一时间戳和第二时间戳之和的平均值。
综上所述,本实施例能够令原视频在播放的同时,被终端进行插入中间图像帧的处理,在原视频改善了流畅度的场景下,减少了生成中间图像帧带来的计算量压力,使得本申请提供的方案能够应用在计算能力有限的移动终端中,提高了移动终端改善视频播放质量的能力。
本实施例提供的视频播放的方法,还能够令终端在播放原视频时处理该视频,无需提前处理原视频,节省了用户的等待时间,提高了高质量原视频的播放效率。
本实施例提供的视频播放的方法,还能够令终端自动识别原视频是否需要执行本申请提供的视频播放的方法,在原视频的属性信息指示原视频中包含大幅运动的对象时,终端将执行本申请提供的视频播放的方法,从而智能提高视频的流畅程度。
本实施例提供的视频播放的方法,还能够在终端播放用户关注的视频时,提高视频的流畅程度。例如,用户主动在播放器用户界面搜索输入关键字对应的原视频。在此场景下,终端能够识别该场景,自动执行本申请提供的视频播放的方法,从而提高视频的流畅程度。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参考图5,图5示出了本申请一个示例性实施例提供的视频播放的装置的结构框图。该视频播放的装置可以通过软件、硬件或者两者的结合实现成为图1所示的终端的全部或一部分。该装置包括:
第一帧读取模块510,用于当播放缓存中的第一图像帧是非首帧图像帧时,读取所述第一图像帧,所述第一图像帧是原视频中除第一帧外的其它所述图像帧,所述播放缓存用于存储所述原视频解码出的图像帧;
第二帧读取模块520,用于读取插帧缓存中的第二图像帧,所述第二图像帧是所述第一图像帧的上一帧;
中间帧获取模块530,用于当所述第一图像帧和所述第二图像帧之间的运动矢量δs0不小于预设阈值s0时,根据所述第一图像帧和所述第二图像帧,生成中间图像帧,所述中间图像帧的时间戳位于所述第一时间戳和第二时间戳之间,所述第一时间戳是第一图像帧的时间戳,所述第二时间戳是所述第二图像帧的时间戳;
视频播放模块540,用于根据所述中间图像帧的时间戳、所述第一时间戳和所述第二时间戳,播放包括所述第一图像帧、所述中间图像帧和所述第二图像帧的视频。
在一个可选的实施例中,所述装置中涉及的所述中间图像帧与所述第一图像帧之间的运动矢量δs1小于所述运动矢量δs0,和/或,所述中间图像帧与所述第二图像帧之间的运动矢量δs2小于所述运动矢量δs0。
在一个可选的实施例中,所述装置还包括移帧模块,所述移帧模块用于将所述第二图像帧移动到显示队列中;将所述中间图像帧存储在所述插帧缓存中;当所述中间图像帧与所述第一图像帧之间的运动矢量δs1小于所述运动矢量δs0时,将所述中间图像帧从所述插帧缓存移动到所述显示队列中,并将所述第一图像帧移动至所述插帧缓存中;当所述插帧缓存写入新的图像帧时,将所述第一图像帧移动至所述显示队列中。
在一个可选的实施例中,所述装置还包括执行模块,所述执行模块用于当所述第一图像帧和所述第二图像帧之间的运动矢量δs0小于预设阈值s0时,确定所述第一图像帧是否是所述原视频中的最后一帧;当所述第一图像帧是所述原视频中的最后一帧时,将所述第一图像帧移动至所述显示队列中;当所述第一图像帧不是所述原视频中的最后一帧时,将所述第一图像帧写入所述插帧缓存。
在一个可选的实施例中,所述中间帧获取模块530,用于从所述第一图像帧中获取n个第一特征点,n为正整数;在所述第二图像帧中通过指定特征匹配,获取n个第一特征点对应的n个第二特征点,所述第一特征点和所述第二特征点是对应于同一个实体物体的表面上的点;根据所述n个第一特征点和所述n个第二特征点,获取所述运动矢量δs0;当所述第一图像帧和所述第二图像帧之间的运动矢量δs0不小于所述预设阈值s0时,根据所述第一图像帧和所述第二图像帧,生成所述中间图像帧。
在一个可选的实施例中,所述中间帧获取模块530,用于根据所述第一图像帧中的特征点的位置信息,获取n个所述第一特征点;和/或,根据所述第一图像帧中的像素值信息,获取n个所述第一特征点;和/或,从所述第一图像帧中的边界点中,获取n个所述第一特征点,所述边界点是所述第一图像帧中目标物体的边界点。
在一个可选的实施例中,所述第一帧读取模块510,用于接收流媒体服务器发送的流媒体视频;解码所述流媒体视频,获取所述流媒体视频对应的图像帧;将所述流媒体视频对应的图像帧写入所述播放缓存中;当所述流媒体视频的标识与输入关键字匹配,且所述播放缓存中的所述第一图像帧是非首帧图像帧时,读取所述第一图像帧,所述输入关键字是指定时段内通过播放器用户界面输入的文本,所述播放器用户界面是指定应用的用户界面,所述指定应用用于播放所述流媒体视频。
在一个可选的实施例中,所述第一帧读取模块510,用于读取所述原视频的属性信息,所述属性信息用于指示所述原视频的类型;当所述属性信息指示所述原视频中存在大幅运动的对象,且播放缓存中的所述第一图像帧是非首帧图像帧时,读取所述第一图像帧。
本申请实施例还提供了一种计算机可读介质,该计算机可读介质存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上各个实施例所述的视频播放的方法。
需要说明的是:上述实施例提供的视频播放的装置在执行视频播放的方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的视频播放的装置与视频播放的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的能够实现的示例性的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包括在本申请的保护范围之内。