视频播放方法以及相关设备与流程

文档序号:30958191发布日期:2022-07-30 11:11阅读:149来源:国知局
视频播放方法以及相关设备与流程

1.本技术涉及计算机技术领域,具体涉及一种视频播放方法以及相关设备。


背景技术:

2.随着智能终端的普及和互联网的发展,用户可以在多种类型的终端设备上安装视频应用,通过安装的视频应用调用播放器播放视频文件,例如,用户可以通过视频应用观看电视连续剧、电影、综艺节目、体育赛事节目,等等。
3.在观看视频的过程中,用户有时会想跳过中间的视频片段,直接从某个时间点开始播放视频,这一操作过程可以称为seek(查找)。
4.在目前的相关技术中,快速seek的能力较差,耗时较久,容易导致播放视频文件时出现卡顿的问题。


技术实现要素:

5.本技术实施例提供一种视频播放方法以及相关设备,相关设备可以包括视频播放装置、电子设备、计算机可读存储介质和计算机程序产品,可以提高目标视频帧对应的数据包位置的查找效率,从而避免视频跳转播放时出现卡顿的现象。
6.本技术实施例提供一种视频播放方法,包括:
7.响应于针对目标视频中的目标视频帧的播放请求操作,确定所述目标视频帧对应的时间信息;
8.基于所述目标视频帧对应的时间信息、所述目标视频的视频时长、以及所述目标视频的视频数据包序列大小,获取所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的预估位置信息;
9.以所述预估位置信息为起点,按照第一序列方向依次对所述视频数据包序列中的视频帧数据包进行关键帧数据包识别;
10.当识别到所述视频数据包序列中的关键帧数据包时,根据所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息,确定所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的目标位置信息;
11.基于所述目标位置信息,对所述视频数据包序列中的视频帧数据包进行解码并播放显示。
12.相应的,本技术实施例提供一种视频播放装置,包括:
13.第一确定单元,用于响应于针对目标视频中的目标视频帧的播放请求操作,确定所述目标视频帧对应的时间信息;
14.获取单元,用于基于所述目标视频帧对应的时间信息、所述目标视频的视频时长、以及所述目标视频的视频数据包序列大小,获取所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的预估位置信息;
15.识别单元,用于以所述预估位置信息为起点,按照第一序列方向依次对所述视频
数据包序列中的视频帧数据包进行关键帧数据包识别;
16.第二确定单元,用于当识别到所述视频数据包序列中的关键帧数据包时,根据所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息,确定所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的目标位置信息;
17.播放单元,用于基于所述目标位置信息,对所述视频数据包序列中的视频帧数据包进行解码并播放显示。
18.可选的,在本技术的一些实施例中,所述获取单元可以包括第一获取子单元、查找子单元和第二获取子单元,如下:
19.所述第一获取子单元,用于获取预设映射关系集合,所述预设映射关系集合包括所述目标视频的关键帧对应的时间信息和关键帧数据包在所述视频数据包序列中的位置信息之间的映射关系;
20.查找子单元,用于基于所述目标视频帧对应的时间信息和所述预设映射关系集合,查找所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的位置信息;
21.第二获取子单元,用于当查找不到所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的位置信息时,基于所述目标视频帧对应的时间信息、所述目标视频的视频时长、以及所述目标视频的视频数据包序列大小,获取所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的预估位置信息。
22.可选的,在本技术的一些实施例中,所述第二确定单元具体可以用于当所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息之间的时间差小于预设值时,基于所述关键帧数据包在所述视频数据包序列中的位置信息,确定所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的目标位置信息。
23.可选的,在本技术的一些实施例中,所述第二确定单元可以包括识别子单元和返回子单元,如下:
24.所述识别子单元,用于当所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息之间的时间差大于预设值时,对所述视频数据包序列中的视频帧数据包进行关键帧数据包的重新识别;
25.返回子单元,用于当识别到所述视频数据包序列中新的关键帧数据包时,返回执行所述根据所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息,确定所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的目标位置信息的步骤。
26.可选的,在本技术的一些实施例中,所述识别子单元具体可以用于当所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息之间的时间差大于预设值、且所述关键帧数据包对应的时间信息大于所述目标视频帧对应的时间信息时,将所述关键帧数据包在所述视频数据包序列中的位置信息确定为参考位置信息;以所述参考位置信息为起点,按照所述第一序列方向依次对所述视频数据包序列中的视频帧数据包进行关键帧数据包的重新识别。
27.可选的,在本技术的一些实施例中,所述识别子单元具体可以用于当所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息之间的时间差大于预设值、且所述关键帧数据包对应的时间信息小于所述目标视频帧对应的时间信息时,以所述预估位置信息为起点,按照第二序列方向依次对所述视频数据包序列中的视频帧数据包进行关键帧
数据包的重新识别。
28.本技术实施例提供的一种电子设备,包括处理器和存储器,所述存储器存储有多条指令,所述处理器加载所述指令,以执行本技术实施例提供的视频播放方法中的步骤。
29.本技术实施例还提供一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现本技术实施例提供的视频播放方法中的步骤。
30.此外,本技术实施例还提供一种计算机程序产品,包括计算机程序或指令,该计算机程序或指令被处理器执行时实现本技术实施例提供的视频播放方法中的步骤。
31.本技术实施例提供了一种视频播放方法以及相关设备,可以响应于针对目标视频中的目标视频帧的播放请求操作,确定所述目标视频帧对应的时间信息;基于所述目标视频帧对应的时间信息、所述目标视频的视频时长、以及所述目标视频的视频数据包序列大小,获取所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的预估位置信息;以所述预估位置信息为起点,按照第一序列方向依次对所述视频数据包序列中的视频帧数据包进行关键帧数据包识别;当识别到所述视频数据包序列中的关键帧数据包时,根据所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息,确定所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的目标位置信息;基于所述目标位置信息,对所述视频数据包序列中的视频帧数据包进行解码并播放显示。本技术可快速定位到目标视频帧对应的数据包位置,提高了目标视频帧对应的数据包位置的查找效率,从而避免视频跳转播放时出现卡顿的现象。
附图说明
32.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
33.图1a是本技术实施例提供的视频播放方法的场景示意图;
34.图1b是本技术实施例提供的视频播放方法的流程图;
35.图1c是本技术实施例提供的视频播放方法的另一流程图;
36.图2是本技术实施例提供的视频播放方法的另一流程图;
37.图3是本技术实施例提供的视频播放装置的结构示意图;
38.图4是本技术实施例提供的电子设备的结构示意图。
具体实施方式
39.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
40.本技术实施例提供一种视频播放方法以及相关设备,相关设备可以包括视频播放装置、电子设备、计算机可读存储介质和计算机程序产品。该视频播放装置具体可以集成在电子设备中,该电子设备可以是终端或服务器等设备。
41.可以理解的是,本实施例的视频播放方法可以是在终端上执行的,也可以是在服务器上执行,还可以由终端和服务器共同执行的。以上举例不应理解为对本技术的限制。
42.如图1a所示,以终端和服务器共同执行视频播放方法为例。本技术实施例提供的视频播放系统包括终端10和服务器11等;终端10与服务器11之间通过网络连接,比如,通过有线或无线网络连接等,其中,视频播放装置可以集成在终端中。
43.其中,终端10,可以用于:响应于针对目标视频中的目标视频帧的播放请求操作,确定所述目标视频帧对应的时间信息;基于所述目标视频帧对应的时间信息、所述目标视频的视频时长、以及所述目标视频的视频数据包序列大小,获取所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的预估位置信息;以所述预估位置信息为起点,按照第一序列方向依次对所述视频数据包序列中的视频帧数据包进行关键帧数据包识别;当识别到所述视频数据包序列中的关键帧数据包时,根据所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息,确定所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的目标位置信息;基于所述目标位置信息,对所述视频数据包序列中的视频帧数据包进行解码并播放显示。其中,终端10可以包括手机、智能电视、平板电脑、笔记本电脑、或个人计算机(pc,personal computer)等。终端10上还可以设置客户端,该客户端可以是应用程序客户端或浏览器客户端等等。
44.其中,服务器11可以用于:向终端10发送目标视频的视频数据包序列,所述目标视频的视频数据包序列包括至少一个视频帧对应的视频帧数据包。其中,服务器11可以是单台服务器,也可以是由多个服务器组成的服务器集群或云服务器。
45.以下分别进行详细说明。需说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。
46.本实施例将从视频播放装置的角度进行描述,该视频播放装置具体可以集成在电子设备中,该电子设备可以是服务器或终端等设备。
47.如图1b所示,该视频播放方法的具体流程可以如下:
48.101、响应于针对目标视频中的目标视频帧的播放请求操作,确定所述目标视频帧对应的时间信息。
49.其中,目标视频具体可以是当前正在播放的视频,目标视频包括至少一个视频帧。目标视频帧具体即用户所要跳转播放的视频帧,用户可以基于对目标视频帧的播放请求操作,将目标视频从当前正在播放的视频帧跳转到目标视频帧所在位置处开始进行播放。目标视频帧的时间信息具体是目标视频帧的显示时间戳(pts,presentation time stamp)。
50.本实施例中,针对目标视频中目标视频帧的播放请求操作,具体可以是播放从目标视频中目标视频帧对应的时间点开始的视频片段对应的请求操作。该播放请求操作可以是点击对目标视频的进度条中某个时间点的点击操作,也可以是对目标视频的进度条的拖动操作等,将进度条拖动至某个时间点,目标视频将播放从该时间点起的视频片段,该时间点对应的视频帧即目标视频帧。
51.其中,在视频播放过程中,用户将视频从一个时间点拖动到另一个时间点,来观看自己关注的内容,这一操作过程可以称为seek,拖动到的另一个时间点对应的视频帧可以视为目标视频帧,目标视频帧也可以称为seek点。
52.随着智能终端的飞速发展,终端上各种视频播放场景日益增多,如需要支持各种
格式的播放场景,ts格式码流是较为常见的一种格式。ts(transportstream,传输流)是一种视频封装格式。但ts格式在seek时无法直接根据索引表来找到seek点所在文件位置,导致seek耗时较长。本技术提供的视频播放方法可以实现ts格式码流seek的快速响应,使用该视频播放方法,可以有效地提高ts格式码流的seek速度,极大地改善用户体验,有效地提高产品竞争力。
53.具体地,目标视频中的视频帧可以分为i帧、p帧和b帧。其中,i帧又称关键帧,它是靠尽可能去除图像空间冗余信息来压缩传输数据量的帧内编码图像;p帧是通过充分降低图像序列中前面已编码帧的时间冗余信息来压缩传输数据量的编码图像,可以由在它前面的p帧或者i帧预测而来,也叫预测帧;b帧是既考虑与源图像序列前面已编码帧、也顾及源图像序列后面已编码帧之间的时间冗余信息来压缩传输数据量的编码图像,也叫双向预测帧。
54.102、基于所述目标视频帧对应的时间信息、所述目标视频的视频时长、以及所述目标视频的视频数据包序列大小,获取所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的预估位置信息。
55.其中,目标视频的视频时长即目标视频整个片源的时间,目标视频的视频数据包序列大小即目标视频的片源大小。其中,目标视频的视频数据包序列具体为目标视频对应的视频数据流,该视频数据流可以包括目标视频中各个视频帧对应的视频帧数据包。具体地,视频数据流中的视频帧数据包可以按照各个视频帧对应的时间信息进行排列。
56.在一具体场景中,目标视频帧为seek点,可以设定目标视频帧对应的时间信息为seektime,目标视频整个片源的时长可以记为duration,片源的大小记为size,则可以采用如下式子计算出seek点对应的位置,即目标视频帧对应的视频帧数据包在视频数据包序列中的预估位置信息position1=(duration/size)*seektime。
57.可选地,本实施例中,步骤“基于所述目标视频帧对应的时间信息、所述目标视频的视频时长、以及所述目标视频的视频数据包序列大小,获取所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的预估位置信息”,可以包括:
58.获取预设映射关系集合,所述预设映射关系集合包括所述目标视频的关键帧对应的时间信息和关键帧数据包在所述视频数据包序列中的位置信息之间的映射关系;
59.基于所述目标视频帧对应的时间信息和所述预设映射关系集合,查找所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的位置信息;
60.当查找不到所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的位置信息时,基于所述目标视频帧对应的时间信息、所述目标视频的视频时长、以及所述目标视频的视频数据包序列大小,获取所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的预估位置信息。
61.具体地,在目标视频的播放的过程中,可以把解析到i帧对应的pts和位置记录到自建的i帧索引表,该i帧索引表即预设映射关系集合,i帧对应的pts即关键帧对应的时间信息,i帧的位置具体即关键帧数据包在所述视频数据包序列中的位置信息。
62.其中,本实施例可以根据目标视频帧对应的时间信息和i帧索引表,来查找目标视频帧对应的视频帧数据包在视频数据包序列中的位置信息,也即seek点的位置。具体地,若seek点对应的pts与自建的i帧索引表中某个i帧的pts差值小于预设值,则这个i帧对应的
位置就是需要seek到的位置,可以将该i帧的位置作为目标视频帧对应的视频帧数据包在视频数据包序列中的目标位置信息,并直接跳转到这个目标位置信息开始读取视频数据进行播放。其中,该预设值可以根据实际情况进行设置,本实施例对此不作限制,比如,该预设值可以是i帧间距,i帧间距是指视频中两个i帧之间pts的平均差值。
63.若seek点对应的pts无法在自建的i帧索引表中查找到,或者说,无法在自建的i帧索引表中查找到与seek点对应的pts的时间差小于预设值的i帧,则可以根据目标视频帧对应的时间信息、目标视频的视频时长、以及目标视频的视频数据包序列大小,先预估seek点的位置,再基于预估位置信息来的寻找到最接近seek点的i帧位置,从而获取seek点对应的目标位置信息。
64.103、以所述预估位置信息为起点,按照第一序列方向依次对所述视频数据包序列中的视频帧数据包进行关键帧数据包识别。
65.其中,该第一序列方向具体可以是视频数据包序列中向前的方向,视频数据包序列中的视频帧数据包可以按照时间信息从前到后进行排列。
66.在一具体场景中,将预估位置信息记为position1,可以从position1开始向前读取视频帧数据包(具体可以是ts数据包),对每个ts数据包进行解析并判断是否为i帧对应的数据包。如果对每个ts数据包都进行完整的解析则将耗费很长的时间,无法达到快速seek的目的。本实施例可以基于下述方法快速判定ts数据包是否为包含i帧的数据包,具体描述如下:
67.i.如果该ts数据包的pid为非video(视频)或者audio(音频)的pid,则不需要解析该ts数据包其他的内通,直接越过该ts数据包,读取下一个ts数据包。其中,pid字段可以用于指明不同的数据包类型。
68.ii.如果该ts数据包的头数据中的payload_unit_start_indicator(负载起始标志)关键字为非1,则不需要解析该ts数据包其他的内通,直接越过该ts数据包,读取下一个ts数据包。其中,由于码流中大部分数据这个关键词都是非1,这里可以越过大部分数据,节省解析时间。
69.iii.检测该ts数据包中的头数据中是否包含pts或者dts(decoding timestamp,解码时间戳),如果不包含则不需要解析该ts数据包其他的内通,直接越过该ts数据包,读取下一个ts数据包。
70.iv.根据视频格式的i帧数据结构与b帧和p帧的不同点,越过b帧和p帧所有在ts数据包。
71.104、当识别到所述视频数据包序列中的关键帧数据包时,根据所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息,确定所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的目标位置信息。
72.可选地,本实施例中,步骤“根据所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息,确定所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的目标位置信息”,可以包括:
73.当所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息之间的时间差小于预设值时,基于所述关键帧数据包在所述视频数据包序列中的位置信息,确定所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的目标位置信息。
74.其中,该预设值可以根据实际情况进行设置,本实施例对此不作限制,比如,该预设值可以是i帧间距,i帧间距是指视频中两个i帧之间pts的平均差值。
75.其中,当关键帧数据包对应的时间信息与目标视频帧对应的时间信息之间的时间差小于预设值时,可以将关键帧数据包在所述视频数据包序列中的位置信息作为目标视频帧对应的视频帧数据包在所述视频数据包序列中的目标位置信息。
76.具体地,当解析到i帧对应的数据包后,解析出i帧的pts(时间信息),如果i帧的pts和seek点对应的pts的差值小于i帧间距,则可以判定该i帧位置就是所需的seek点对应的位置(即上述实施例中的目标位置信息)。
77.可选地,本实施例中,步骤“根据所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息,确定所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的目标位置信息”,可以包括:
78.当所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息之间的时间差大于预设值时,对所述视频数据包序列中的视频帧数据包进行关键帧数据包的重新识别;
79.当识别到所述视频数据包序列中新的关键帧数据包时,返回执行所述根据所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息,确定所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的目标位置信息的步骤。
80.其中,该预设值可以根据实际情况进行设置,本实施例对此不作限制,比如,该预设值可以是i帧间距,i帧间距是指视频中两个i帧之间pts的平均差值。
81.其中,当识别到视频数据包序列中新的关键帧数据包时,可以返回重复执行之前的步骤,即“根据关键帧数据包对应的时间信息与目标视频帧对应的时间信息,确定目标视频帧对应的视频帧数据包在所述视频数据包序列中的目标位置信息”的步骤,直到满足获取到的i帧的pts与seek点对应的pts的差值小于i帧间距,将该i帧位置确定为目标视频帧对应的视频帧数据包在所述视频数据包序列中的目标位置信息。
82.可选地,本实施例中,步骤“当所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息之间的时间差大于预设值时,对所述视频数据包序列中的视频帧数据包进行关键帧数据包的重新识别”,可以包括:
83.当所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息之间的时间差大于预设值、且所述关键帧数据包对应的时间信息大于所述目标视频帧对应的时间信息时,将所述关键帧数据包在所述视频数据包序列中的位置信息确定为参考位置信息;
84.以所述参考位置信息为起点,按照所述第一序列方向依次对所述视频数据包序列中的视频帧数据包进行关键帧数据包的重新识别。
85.具体地,如果i帧的pts和seek点对应的pts的差值大于i帧间距,并且i帧的pts大于seek点对应的pts,则可以记录i帧对应的位置为positions2(即上述实施例中的参考位置信息),并以position2为起点向前寻找下一个i帧,直到满足i帧的pts与seek点对应的pts的差值小于i帧间距。
86.可选地,本实施例中,步骤“当所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息之间的时间差大于预设值时,对所述视频数据包序列中的视频帧数据包进行关键帧数据包的重新识别”,可以包括:
87.当所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息之间的时间差大于预设值、且所述关键帧数据包对应的时间信息小于所述目标视频帧对应的时间信息时,以所述预估位置信息为起点,按照第二序列方向依次对所述视频数据包序列中的视频帧数据包进行关键帧数据包的重新识别。
88.其中,第二序列方向具体可以是与第一序列方向相反的方向,比如,第一序列方向为向前,则第二序列方向为向后。
89.具体地,如果i帧的pts和seek点对应的pts的差值大于i帧间距,并且i帧的pts小于seek点对应的pts,则可以以预估位置信息positions1为起点向后寻找下一个i帧,直到满足i帧的pts与seek点对应的pts的差值小于i帧间距。
90.可选地,一些实施例中,如果无法找到满足pts和seek点对应的pts的差值小于i帧间距的i帧,可以直接以预估位置信息positions1作为接近seek的i帧位置,即将预估位置信息作为目标视频帧对应的视频帧数据包在所述视频数据包序列中的目标位置信息。
91.105、基于所述目标位置信息,对所述视频数据包序列中的视频帧数据包进行解码并播放显示。
92.其中,在确定seek点在视频数据包序列中对应的位置(即目标位置信息)后,可以从该位置开始,按照第二序列方向依次对视频数据包序列中的视频帧数据包进行解码,得到各个对应的视频帧并进行展示,从而实现目标视频跳转到seek点处开始播放。
93.在一具体场景中,如图1c所示,为该视频播放方法整体方案对应的流程图,具体如下所述:
94.a、响应于针对目标视频中的seek点的播放请求操作,确定seek点对应的时间信息pts;
95.b、查找seek点对应的pts是否在自建i帧索引表中,若是,则将i帧索引表中对应i帧的位置作为seek点的位置,可以将该i帧的位置作为目标视频帧对应的视频帧数据包在视频数据包序列中的目标位置信息,并直接从i帧索引表对应i帧的位置开始读取视频数据进行播放;若否,执行步骤c;
96.c、根据seek点对应的时间信息、正在播放的目标视频的视频时长、以及目标视频的视频数据包序列大小,预估seek点对应的位置position1;
97.d、以position1为起点,向前读取视频帧数据包序列中的视频帧数据包,对每个视频帧数据包进行解析并判断是否为i帧对应的数据包,也即向前快速寻找i帧;
98.e、当解析到i帧对应的数据包后,判断i帧的pts和seek点对应的pts的差值是否小于i帧间距,若是,则可以判定该i帧位置就是所需的seek点对应的位置,可以从i帧的位置开始读取视频数据进行播放;若否,执行步骤f;
99.f、将i帧对应的位置记为position2,判断i帧的pts是否小于seek点对应的pts;若否,则以position2为起点向前寻找下一个i帧,直到满足i帧的pts与seek点对应的pts的差值小于i帧间距;若是,则以positions1为起点向后寻找下一个i帧,直到满足i帧的pts与seek点对应的pts的差值小于i帧间距。
100.由上可知,本实施例可以响应于针对目标视频中的目标视频帧的播放请求操作,确定所述目标视频帧对应的时间信息;基于所述目标视频帧对应的时间信息、所述目标视频的视频时长、以及所述目标视频的视频数据包序列大小,获取所述目标视频帧对应的视
频帧数据包在所述视频数据包序列中的预估位置信息;以所述预估位置信息为起点,按照第一序列方向依次对所述视频数据包序列中的视频帧数据包进行关键帧数据包识别;当识别到所述视频数据包序列中的关键帧数据包时,根据所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息,确定所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的目标位置信息;基于所述目标位置信息,对所述视频数据包序列中的视频帧数据包进行解码并播放显示。本技术可快速定位到目标视频帧对应的数据包位置,提高了目标视频帧对应的数据包位置的查找效率,从而避免视频跳转播放时出现卡顿的现象。
101.根据前面实施例所描述的方法,以下将以该视频播放装置具体集成在终端举例作进一步详细说明。
102.本技术实施例提供一种视频播放方法,如图2所示,该视频播放方法的具体流程可以如下:
103.201、终端响应于针对目标视频中的目标视频帧的播放请求操作,确定所述目标视频帧对应的时间信息。
104.其中,目标视频具体可以是当前正在播放的视频。用户可以基于对目标视频帧的播放请求操作,将目标视频从当前正在播放的视频帧跳转到目标视频帧所在位置处开始进行播放。
105.其中,在视频播放过程中,用户将视频从一个时间点拖动到另一个时间点,来观看自己关注的内容,这一操作过程可以称为seek,拖动到的另一个时间点对应的视频帧可以视为目标视频帧,目标视频帧也可以称为seek点。
106.202、终端基于所述目标视频帧对应的时间信息、所述目标视频的视频时长、以及所述目标视频的视频数据包序列大小,获取所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的预估位置信息。
107.其中,目标视频的视频时长即目标视频整个片源的时间,目标视频的视频数据包序列大小即目标视频的片源大小。其中,目标视频的视频数据包序列具体为目标视频对应的视频数据流,该视频数据流可以包括目标视频中各个视频帧对应的视频帧数据包。具体地,视频数据流中的视频帧数据包可以按照各个视频帧对应的时间信息进行排列。
108.在一具体场景中,目标视频帧为seek点,可以设定目标视频帧对应的时间信息为seektime,目标视频整个片源的时长可以记为duration,片源的大小记为size,则可以采用如下式子计算出seek点对应的位置,即目标视频帧对应的视频帧数据包在视频数据包序列中的预估位置信息position1=(duration/size)*seektime。
109.203、终端以所述预估位置信息为起点,按照第一序列方向依次对所述视频数据包序列中的视频帧数据包进行关键帧数据包识别。
110.其中,该第一序列方向具体可以是视频数据包序列中向前的方向,视频数据包序列中的视频帧数据包可以按照时间信息从前到后进行排列。
111.在一具体场景中,将预估位置信息记为position1,可以从position1开始向前读取视频帧数据包(具体可以是ts数据包),对每个ts数据包进行解析并判断是否为i帧对应的数据包。如果对每个ts数据包都进行完整的解析则将耗费很长的时间,无法达到快速seek的目的。本实施例可以基于下述方法快速判定ts数据包是否为包含i帧的数据包,具体描述如下:
112.i.如果该ts数据包的pid为非video(视频)或者audio(音频)的pid,则不需要解析该ts数据包其他的内通,直接越过该ts数据包,读取下一个ts数据包。其中,pid字段可以用于指明不同的数据包类型。
113.ii.如果该ts数据包的头数据中的payload_unit_start_indicator(负载起始标志)关键字为非1,则不需要解析该ts数据包其他的内通,直接越过该ts数据包,读取下一个ts数据包。其中,由于码流中大部分数据这个关键词都是非1,这里可以越过大部分数据,节省解析时间。
114.iii.检测该ts数据包中的头数据中是否包含pts或者dts(decoding time stamp,解码时间戳),如果不包含则不需要解析该ts数据包其他的内通,直接越过该ts数据包,读取下一个ts数据包。
115.iv.根据视频格式的i帧数据结构与b帧和p帧的不同点,越过b帧和p帧所有在ts数据包。
116.204、终端当识别到所述视频数据包序列中的关键帧数据包时,根据所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息,确定所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的目标位置信息。
117.可选地,本实施例中,步骤“根据所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息,确定所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的目标位置信息”,可以包括:
118.当所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息之间的时间差小于预设值时,基于所述关键帧数据包在所述视频数据包序列中的位置信息,确定所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的目标位置信息。
119.其中,该预设值可以根据实际情况进行设置,本实施例对此不作限制,比如,该预设值可以是i帧间距,i帧间距是指视频中两个i帧之间pts的平均差值。
120.其中,当关键帧数据包对应的时间信息与目标视频帧对应的时间信息之间的时间差小于预设值时,可以将关键帧数据包在所述视频数据包序列中的位置信息作为目标视频帧对应的视频帧数据包在所述视频数据包序列中的目标位置信息。
121.可选地,本实施例中,步骤“根据所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息,确定所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的目标位置信息”,可以包括:
122.当所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息之间的时间差大于预设值、且所述关键帧数据包对应的时间信息大于所述目标视频帧对应的时间信息时,将所述关键帧数据包在所述视频数据包序列中的位置信息确定为参考位置信息;
123.以所述参考位置信息为起点,按照所述第一序列方向依次对所述视频数据包序列中的视频帧数据包进行关键帧数据包的重新识别;
124.当识别到所述视频数据包序列中新的关键帧数据包时,返回执行所述根据所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息,确定所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的目标位置信息的步骤。
125.可选地,本实施例中,步骤“根据所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息,确定所述目标视频帧对应的视频帧数据包在所述视频数据包序列中
的目标位置信息”,可以包括:
126.当所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息之间的时间差大于预设值、且所述关键帧数据包对应的时间信息小于所述目标视频帧对应的时间信息时,以所述预估位置信息为起点,按照第二序列方向依次对所述视频数据包序列中的视频帧数据包进行关键帧数据包的重新识别;
127.当识别到所述视频数据包序列中新的关键帧数据包时,返回执行所述根据所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息,确定所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的目标位置信息的步骤。
128.其中,第二序列方向具体可以是与第一序列方向相反的方向,比如,第一序列方向为向前,则第二序列方向为向后。
129.可选地,一些实施例中,如果无法找到满足pts和seek点对应的pts的差值小于i帧间距的i帧,可以直接以预估位置信息positions1作为接近seek的i帧位置,即将预估位置信息作为目标视频帧对应的视频帧数据包在所述视频数据包序列中的目标位置信息。
130.205、终端基于所述目标位置信息,对所述视频数据包序列中的视频帧数据包进行解码并播放显示。
131.其中,在确定seek点在视频数据包序列中对应的位置(即目标位置信息)后,可以从该位置开始,按照第二序列方向依次对视频数据包序列中的视频帧数据包进行解码,得到各个对应的视频帧并进行展示,从而实现目标视频跳转到seek点处开始播放。
132.由上可知,本实施例可以通过终端响应于针对目标视频中的目标视频帧的播放请求操作,确定所述目标视频帧对应的时间信息;基于所述目标视频帧对应的时间信息、所述目标视频的视频时长、以及所述目标视频的视频数据包序列大小,获取所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的预估位置信息;以所述预估位置信息为起点,按照第一序列方向依次对所述视频数据包序列中的视频帧数据包进行关键帧数据包识别;当识别到所述视频数据包序列中的关键帧数据包时,根据所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息,确定所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的目标位置信息;基于所述目标位置信息,对所述视频数据包序列中的视频帧数据包进行解码并播放显示。本技术可快速定位到目标视频帧对应的数据包位置,提高了目标视频帧对应的数据包位置的查找效率,从而避免视频跳转播放时出现卡顿的现象。
133.为了更好地实施以上方法,本技术实施例还提供一种视频播放装置,如图3所示,该视频播放装置可以包括第一确定单元301、获取单元302、识别单元303、第二确定单元304以及播放单元305,如下:
134.(1)第一确定单元301;
135.第一确定单元,用于响应于针对目标视频中的目标视频帧的播放请求操作,确定所述目标视频帧对应的时间信息。
136.(2)获取单元302;
137.获取单元,用于基于所述目标视频帧对应的时间信息、所述目标视频的视频时长、以及所述目标视频的视频数据包序列大小,获取所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的预估位置信息。
138.可选的,在本技术的一些实施例中,所述获取单元可以包括第一获取子单元、查找子单元和第二获取子单元,如下:
139.所述第一获取子单元,用于获取预设映射关系集合,所述预设映射关系集合包括所述目标视频的关键帧对应的时间信息和关键帧数据包在所述视频数据包序列中的位置信息之间的映射关系;
140.查找子单元,用于基于所述目标视频帧对应的时间信息和所述预设映射关系集合,查找所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的位置信息;
141.第二获取子单元,用于当查找不到所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的位置信息时,基于所述目标视频帧对应的时间信息、所述目标视频的视频时长、以及所述目标视频的视频数据包序列大小,获取所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的预估位置信息。
142.(3)识别单元303;
143.识别单元,用于以所述预估位置信息为起点,按照第一序列方向依次对所述视频数据包序列中的视频帧数据包进行关键帧数据包识别。
144.(4)第二确定单元304;
145.第二确定单元,用于当识别到所述视频数据包序列中的关键帧数据包时,根据所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息,确定所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的目标位置信息。
146.可选的,在本技术的一些实施例中,所述第二确定单元具体可以用于当所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息之间的时间差小于预设值时,基于所述关键帧数据包在所述视频数据包序列中的位置信息,确定所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的目标位置信息。
147.可选的,在本技术的一些实施例中,所述第二确定单元可以包括识别子单元和返回子单元,如下:
148.所述识别子单元,用于当所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息之间的时间差大于预设值时,对所述视频数据包序列中的视频帧数据包进行关键帧数据包的重新识别;
149.返回子单元,用于当识别到所述视频数据包序列中新的关键帧数据包时,返回执行所述根据所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息,确定所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的目标位置信息的步骤。
150.可选的,在本技术的一些实施例中,所述识别子单元具体可以用于当所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息之间的时间差大于预设值、且所述关键帧数据包对应的时间信息大于所述目标视频帧对应的时间信息时,将所述关键帧数据包在所述视频数据包序列中的位置信息确定为参考位置信息;以所述参考位置信息为起点,按照所述第一序列方向依次对所述视频数据包序列中的视频帧数据包进行关键帧数据包的重新识别。
151.可选的,在本技术的一些实施例中,所述识别子单元具体可以用于当所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息之间的时间差大于预设值、且所述关键帧数据包对应的时间信息小于所述目标视频帧对应的时间信息时,以所述预估位置
信息为起点,按照第二序列方向依次对所述视频数据包序列中的视频帧数据包进行关键帧数据包的重新识别。
152.(5)播放单元305;
153.播放单元,用于基于所述目标位置信息,对所述视频数据包序列中的视频帧数据包进行解码并播放显示。
154.由上可知,本实施例可以由第一确定单元301响应于针对目标视频中的目标视频帧的播放请求操作,确定所述目标视频帧对应的时间信息;通过获取单元302基于所述目标视频帧对应的时间信息、所述目标视频的视频时长、以及所述目标视频的视频数据包序列大小,获取所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的预估位置信息;通过识别单元303以所述预估位置信息为起点,按照第一序列方向依次对所述视频数据包序列中的视频帧数据包进行关键帧数据包识别;当识别到所述视频数据包序列中的关键帧数据包时,由第二确定单元304根据所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息,确定所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的目标位置信息;通过播放单元305基于所述目标位置信息,对所述视频数据包序列中的视频帧数据包进行解码并播放显示。本技术可快速定位到目标视频帧对应的数据包位置,提高了目标视频帧对应的数据包位置的查找效率,从而避免视频跳转播放时出现卡顿的现象。
155.本技术实施例还提供一种电子设备,如图4所示,其示出了本技术实施例所涉及的电子设备的结构示意图,该电子设备可以是终端或者服务器等,具体来讲:
156.该电子设备可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403和输入单元404等部件。本领域技术人员可以理解,图4中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
157.处理器401是该电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行电子设备的各种功能和处理数据。可选的,处理器401可包括一个或多个处理核心;优选的,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。
158.存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。
159.电子设备还包括给各个部件供电的电源403,优选的,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
160.该电子设备还可包括输入单元404,该输入单元404可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
161.尽管未示出,该电子设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,电子设备中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能,如下:
162.响应于针对目标视频中的目标视频帧的播放请求操作,确定所述目标视频帧对应的时间信息;基于所述目标视频帧对应的时间信息、所述目标视频的视频时长、以及所述目标视频的视频数据包序列大小,获取所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的预估位置信息;以所述预估位置信息为起点,按照第一序列方向依次对所述视频数据包序列中的视频帧数据包进行关键帧数据包识别;当识别到所述视频数据包序列中的关键帧数据包时,根据所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息,确定所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的目标位置信息;基于所述目标位置信息,对所述视频数据包序列中的视频帧数据包进行解码并播放显示。
163.以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
164.由上可知,本实施例可以响应于针对目标视频中的目标视频帧的播放请求操作,确定所述目标视频帧对应的时间信息;基于所述目标视频帧对应的时间信息、所述目标视频的视频时长、以及所述目标视频的视频数据包序列大小,获取所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的预估位置信息;以所述预估位置信息为起点,按照第一序列方向依次对所述视频数据包序列中的视频帧数据包进行关键帧数据包识别;当识别到所述视频数据包序列中的关键帧数据包时,根据所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间信息,确定所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的目标位置信息;基于所述目标位置信息,对所述视频数据包序列中的视频帧数据包进行解码并播放显示。本技术可快速定位到目标视频帧对应的数据包位置,提高了目标视频帧对应的数据包位置的查找效率,从而避免视频跳转播放时出现卡顿的现象。
165.本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
166.为此,本技术实施例提供一种计算机可读存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本技术实施例所提供的任一种视频播放方法中的步骤。例如,该指令可以执行如下步骤:
167.响应于针对目标视频中的目标视频帧的播放请求操作,确定所述目标视频帧对应的时间信息;基于所述目标视频帧对应的时间信息、所述目标视频的视频时长、以及所述目标视频的视频数据包序列大小,获取所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的预估位置信息;以所述预估位置信息为起点,按照第一序列方向依次对所述视频数据包序列中的视频帧数据包进行关键帧数据包识别;当识别到所述视频数据包序列中的关键帧数据包时,根据所述关键帧数据包对应的时间信息与所述目标视频帧对应的时间
信息,确定所述目标视频帧对应的视频帧数据包在所述视频数据包序列中的目标位置信息;基于所述目标位置信息,对所述视频数据包序列中的视频帧数据包进行解码并播放显示。
168.以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
169.其中,该计算机可读存储介质可以包括:只读存储器(rom,read only memory)、随机存取记忆体(ram,random access memory)、磁盘或光盘等。
170.由于该计算机可读存储介质中所存储的指令,可以执行本技术实施例所提供的任一种视频播放方法中的步骤,因此,可以实现本技术实施例所提供的任一种视频播放方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
171.根据本技术的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述视频播放方面的各种可选实现方式中提供的方法。
172.以上对本技术实施例所提供的一种视频播放方法以及相关设备进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1