一种显示缓存进度的方法和播放设备与流程

文档序号:16130816发布日期:2018-12-01 00:18阅读:277来源:国知局

本发明涉及多媒体技术领域,尤其涉及一种显示缓存进度的方法和播放设备。

背景技术

在视频网站的pc客户端的开发过程中,对于在线的直播视频流,由于该直播视频流为实时的,因此用户不能对直播视频进行快进或者快退的操作;而对于点播视频流,由于该点播视频流可能是非实时的,因此针对某个特定的时间点,用户可以对该点播视频流进行快进或者快退的操作。

现有技术中,点播视频流采用和直播视频流类似的缓存策略,即不对视频流进行缓存,直接播放从网络上拉取视频流进行播放。那么用户在对点播视频流进行快进与快退的操作时,都要等待点播视频流缓冲完成后,再开始播放。

然而,现有技术中,每次进行时间定位时,都需要等待视频流下载完成,即使用户观看的点播视频流是已经播放过的视频,但由于没有缓存,仍然需要重新下载,造成了用户的网络资源的浪费。



技术实现要素:

本发明实施例提供了一种显示缓存进度的方法和播放设备,用于在播放在线视频流时,将在线视频流缓存到本地并显示缓存进度。

本申请实施例的第一方面提供了一种显示缓存进度的方法,包括:获取目标视频的索引文件,所述索引文件按播放顺序包括组成所述目标视频的多个分片视频的网络地址和对应于各分片视频的播放时长,所述目标视频为在线的点播视频;根据所述索引文件建立所述多个分片视频的信息索引关系,所述信息索引关系包括第一分片视频的起始时间和所述第一分片视频的描述信息的关联关系,所述第一分片视频的描述信息至少包括以下信息:所述第一分片视频的索引信息,所述第一分片视频的播放时长和所述第一分片视频的网络地址,所述第一分片视频为所述多个分片视频中的任一视频;根据所述信息索引关系缓存所述多个分片视频,并获取缓存进度信息,所述缓存进度信息包括缓存视频的起始时间和结束时间;根据所述缓存进度信息显示所述缓存视频的缓存进度。

在一种可能的设计中,在本申请实施例第一方面的第一种实现方式中,所述方法还包括:接收用户发送的第一消息,所述第一消息用于将所述目标视频的播放位置定位至目标时间点;响应于所述第一消息,根据所述第一消息以及所述信息索引关系确定第二分片视频,所述目标时间点在所述第二分片视频的起始时间和结束时间之间;从所述第二分片视频的起始时间缓存所述第二分片视频。

在一种可能的设计中,在本申请实施例第一方面的第二种实现方式中,所述获取缓存进度信息包括:获取所述第二分片视频的缓存进度信息。

在一种可能的设计中,在本申请实施例第一方面的第三种实现方式中,所述获取所述第二分片视频的缓存进度信息包括:确定所述第二分片视频的已下载时间长度;根据所述已下载时间长度和所述第二分片视频的起始时间得到所述第二分片视频的缓存进度信息,所述第二分片视频包含于所述缓存视频。

在一种可能的设计中,在本申请实施例第一方面的第四种实现方式中,所述获取缓存进度信息包括:当第一缓存视频的结束时间与第二缓存视频的起始时间相同时,将所述第一缓存视频与所述第二缓存视频合并,得到第三缓存视频,所述第三缓存视频的起始时间为所述第一缓存视频的起始时间,所述第三缓存视频的结束时间为所述第二缓存视频的结束时间。

本申请实施例的第二方面提供了一种播放设备,包括:获取单元,用于获取目标视频的索引文件,所述索引文件按播放顺序包括组成所述目标视频的多个分片视频的网络地址和对应于各分片视频的播放时长,所述目标视频为在线的点播视频;建立单元,用于根据所述索引文件建立所述多个分片视频的信息索引关系,所述信息索引关系包括第一分片视频的起始时间和所述第一分片视频的描述信息的关联关系,所述第一分片视频的描述信息至少包括以下信息:所述第一分片视频的索引信息,所述第一分片视频的播放时长和所述第一分片视频的网络地址,所述第一分片视频为所述多个分片视频中的任一视频;缓存单元,用于根据所述信息索引关系缓存所述多个分片视频,且所述获取单元还用于获取缓存进度信息,所述缓存进度信息包括缓存视频的起始时间和结束时间;显示单元,用于根据所述缓存进度信息显示所述缓存视频的缓存进度。

在一种可能的设计中,在本申请实施例第二方面的第一种实现方式中,所述播放设备还包括:接收单元,用于接收用户发送的第一消息,所述第一消息用于将所述目标视频的播放位置定位至目标时间点;确定单元,用于响应于所述第一消息,根据所述第一消息以及所述信息索引关系确定第二分片视频,所述目标时间点在所述第二分片视频的起始时间和结束时间之间;所述缓存单元还用于从所述第二分片视频的起始时间缓存所述第二分片视频。

在一种可能的设计中,在本申请实施例第二方面的第二种实现方式中,所述获取单元具体用于:当第一缓存视频的结束时间与第二缓存视频的起始时间相同时,将所述第一缓存视频与所述第二缓存视频合并,得到第三缓存视频,所述第三缓存视频的起始时间为所述第一缓存视频的起始时间,所述第三缓存视频的结束时间为所述第二缓存视频的结束时间。

在一种可能的设计中,在本申请实施例第二方面的第三种实现方式中,所述获取单元包括:

获取模块,用于获取所述第二分片视频的缓存进度信息。

在一种可能的设计中,在本申请实施例第二方面的第四种实现方式中,所述获取模块具体用于:确定所述第二分片视频的已下载时间长度;根据所述已下载时间长度和所述第二分片视频的起始时间得到所述第二分片视频的缓存进度信息,所述第二分片视频包含于所述缓存视频。

本申请第三方面提供了一种电子设备,包括存储器、处理器,其特征在于,所述处理器用于执行存储器中存储的计算机管理类程序时实现如上述任意一项所述的显示缓存进度的方法的步骤。

本申请第四方面提供了一种计算机可读存储介质,其上存储有计算机管理类程序,其特征在于:所述计算机管理类程序被处理器执行时实现如上述任意一项所述的显示缓存进度的方法的步骤。

从以上技术方案可以看出,本发明实施例具有以下优点:完成了将一个在线的点播视频流,缓存到本地文件中,并根据目标时间点,定位到具体的第二分片视频的过程,解决了直接播放在线视频流时,因为没有缓存到本地而引起的需要不断下载文件内容的弊端,并向用户显示缓存视频的缓存进度,从而让用户知道当前视频哪些区域已经下载完成,以在播放在线视频流时,将在线视频流缓存到本地并显示缓存进度。

附图说明

图1为本申请实施例提供的一种可能的显示缓存进度的方法的流程示意图;

图2为本申请实施例提供的一种可能的播放设备的实施例示意图;

图3为本申请实施例提供的一种可能的播放设备的硬件结构示意图;

图4为本申请实施例提供的一种可能的电子设备的实施例示意图;

图5为本申请实施例提供的一种可能的计算机可读存储介质的实施例示意图。

具体实施方式

本申请实施例提供了一种显示缓存进度的方法和播放设备,用于在播放在线视频流时,将在线视频流缓存到本地并显示缓存进度。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。

请参阅图1,图1为本申请实施例提供的一种可能的显示缓存进度的方法的实施例示意图,该显示缓存进度的方法可以基于音视频解码库ffmpeg,所谓ffmpeg,可理解为一种用于记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。包括:

101、根据目标视频的地址确定目标视频为在线的点播视频;

需要说明的是,本申请实施例可应用于播放设备如视频网站客户端的mediadecoder音视频解码模块中,该mediadecoder音视频解码模块可以解码直播视频和点播视频。当mediadecoder音视频解码模块接收到一个字符串类型的视频地址时,若该地址为有效地址,那mediadecoder音视频解码模块会对该视频地址对应的视频进行解码,其中,该视频地址可以为网络地址,也可以是本地文件路径,具体此处不做限定。然而,由于直播视频和点播视频的视频流缓存机制不相同,因此在对视频进行解码之前,需判断该视频地址对应的视频是点播视频还是直播视频。当视频地址对应的视频为在线的点播视频时,则执行步骤102。

故,播放设备在接收到目标视频的地址后,根据该目标视频的地址确定目标视频为在线的点播视频。具体的确定方式可以包括以下步骤:

步骤1a:通过mediadecoder音视频解码模块提供的open方法,调用ffmpeg的avformat_open_input函数,打开目标视频的地址,并获取一个类型为avformatcontext的结构。如果获取成功,则执行步骤1b;

步骤1b:调用fopen函数,将目标视频的地址输入该fopen函数中,获得fopen函数的返回值。若该返回值为0,则表示该目标视频为在线视频;若该返回值不为0,则表示该目标视频为一个本地文件。当确定该目标视频为在线视频后,再执行步骤1c;

步骤1c:当目标视频的地址满足预置条件时,确定该目标视频为在线的点播视频。具体地,判断步骤1a中获取到的avformatcontext结构中的iformat成员的name字段是否等于“hls,applehttp”,如果等于则说明目标视频是一个在线的点播视频流,即本申请实施例后续需要处理的点播视频;如果不等于则说明该目标视频是一个在线的直播视频流,在本申请实施例中不做处理。

需要说明的是,实际应用中,根据目标视频的地址确定目标视频为在线的点播视频的方式有多种,具体此处不再一一赘述。

102、获取目标视频的索引文件;

在本申请实施例中,该目标视频可以为基于超文本传输协议(hypertexttransferprotocol,http)实时流媒体(httplivestreaming,hls)协议的hls视频流。其中,所谓hls协议,为苹果公司(appleinc)实现的一种流媒体传输协议,可实现流媒体的直播和点播;hls视频流的特点就是将一个完整的视频,分为一个playlist.m3u8的播放索引文件,以及n个分片的传送流(transportstream,ts)小视频文件,且每个ts小视频文件是这个完整视频的一部分,即n个ts小视频组成了该完整的视频。需要说明的是,在playlist.m3u8播放索引文件中,按播放顺序包含了所有ts分片视频的网络地址,以及每个ts分片视频的播放时长。因此,针对该playlist.m3u8播放索引文件,可以计算出该完整的视频的总时长。以及,在时间点定位时,通过给定的时间,定位到具体的ts分片视频。

因此,基于这样的认识,在确定目标视频为在线的点播视频后,获取该目标视频的索引文件,其中该索引文件按照播放顺序包括了组成该目标视频的多个分片视频的网络地址和对应于每个分片视频的播放时长。具体获取该目标视频的索引文件的方法可以包括以下步骤:

步骤2a:初始化hlsdemuxer类;

在mediadecoder音视频解码模块中,用hlsdemuxer类,来处理在线的点播视频流。该hlsdemuxer类的入口函数也是open函数,将该目标视频的地址传递给hlsdemuxer的open方法。

步骤2b:创建缓存文件夹;

在调用hlsdemuxer类的open方法时,第二个参数为保存下载文件的文件夹路径。根据该文件夹路径,调用boost开源库的boost::filesystem::create_directory方法,创建缓存文件夹。后续步骤中下载的目标视频的索引文件以及所有的分片视频,都将保存在该缓存文件夹里面。

步骤2c:创建工作线程;

创建一个工作线程,在该工作线程中,处理所有跟下载相关的任务。

步骤2d:下载目标视频的索引文件;

调用相关的http下载方法,将open方法中的地址,即目标视频的索引文件的下载地址所代表的索引文件下载到缓存文件夹中。

步骤2e:解析目标视频的索引文件;

将目标视频的索引文件下载到缓存文件夹后,对该索引文件的内容进行解析,获取该目标视频的总播放时长,以及所有的分片视频。并且在hlsdemuxer类中有一个m_tsfiles的字典成员,该字典成员是以分片视频的起始时间为键,以一个tsfilecontext的结构为值的键值对结构。其中,tsfilecontext结构如下:

其中,url成员表示该分片视频的下载地址;

status成员表示该分片视频的下载状态,其中tsfilestatus的定义如下

其中,none表示空闲状态,downloading表示正在下载状态,downloaded表示下载已完成状态,paused表示下载被暂停状态。

index成员表示该分片视频的索引,从0开始,第一个分片视频的索引为0,第n个分片视频的索引为n-1;

starttime成员表示该分片视频的起始时间,以毫秒为单位;

duration成员表示该分片视频的播放持续时间,以毫秒为单位;

localfilename成员表示该分片视频存储在本地文件夹中的名称;

file成员用来将下载后的分片视频数据存储在本地文件中;

sizedownloaded成员表示该分片视频已经下载的数据大小;

totalsize成员表示该分片视频的文件总大小。

因此,通过上述步骤2a~2e实现了目标视频的索引文件的获取和解析。需要说明的是,实际应用中,还有其他获取和解析目标视频的索引文件的方式,具体此处不再一一赘述。

103、根据索引文件建立多个分片视频的信息索引关系;

当目标视频的索引文件下载完成后,根据该索引文件建立多个分片视频的信息索引关系,其中该信息索引关系包括第一分片视频的起始时间和第一分片视频的描述信息得到关联关系。需要说明的是,该第一分片视频的描述信息至少包括以下信息:第一分片视频的索引信息,第一分片视频的播放时长和第一分片视频的网络地址,其中,该第一分片视频为多个分片视频中的任一视频。

本实施例中,建立信息索引关系的方式可以为:当目标视频的索引文件下载完成后,按行读取该索引文件中的所有文本内容,如果所读取的文本行从“#extinf”字符串开始,那么该字符串后面所跟的就是该分片视频的播放时长(该时长是以秒位单位的),该文本行后面的一行就是该分片视频的下载地址。因此根据该目标视频的索引文件,获取播放总时长,以及所有ts分片文件,以建立信息索引关系的方式如下:

步骤3a:初始化变量;

初始化一个类型为32位整数的starttime变量,用来记录每个分片视频的起始播放时间,以及一个32位整数的tsfileindex变量,用来记录每个分片视频的索引,并将它们均初始化为0;

步骤3b:获取每一个分片视频;

读取目标视频的索引文件中的每一行内容,当该行内容以字符串“#extinf”开头时,则该字符串后面即为一个分片视频的播放时长,然后紧接着读取下一行的文件内容,获取该分片视频的下载地址。

创建一个tsfilecontext的结构,将tsfileindex变量赋值该结构的index成员,将,“#extinf”后面紧跟的播放时长乘以1000转换为毫秒单位后,保存到该tsfilecontext结构的duration字段中,将starttime变量保存到该tsfilecontext结构的starttime成员,将该行紧跟的下一行内容所代表的分片视频的下载地址,保存到该tsfilecontext结构的url成员中。然后将该starttime和tsfilecontext以键值对的方式,存储到m_tsfiles字典中,以建立该分片视频的信息索引关系。

上述过程完成后,将tsfileindex在原有基础上加1,将starttime变量在原有基础上加上该分片视频的播放时长,即tsfilecontext结构的duration值。

重复上述的步骤,获取下一个分片视频,直到读取完目标视频的索引文件中的内容为止。

在完成上述3a~3b中的步骤后,建立了多个分片视频的信息索引关系,且m_tsfiles成员中记录了该目标视频的所有分片视频,以及在starttime变量中,保存有该分片视频的总时长。

104、根据信息索引关系依次缓存多个分片视频;

通过步骤103获取到所有的分片视频后,在工作线程中按信息索引关系中的播放顺序依次下载所有的分片视频。

105、接收用户发送的第一消息;

当用户在观看该目标视频,且需要进行快进或者快退操作时,接收用户发送的第一消息,该第一消息用于向播放设备指示将目标视频的播放位置定位到目标时间点。

106、根据目标时间点和信息索引关系确定第二分片视频;

响应于该第一消息,根据目标时间点和信息索引关系确定目标时间分片。需要说明的是,当该目标时间点以秒为单位时,还需将该目标时间点转换为以毫秒为单位,来获得seektime,即播放设备根据该第一消息需要定位到seektime这个时间点。

再根据信息索引关系即在m_tsfiles字典中找到该seektime所位于的第二分片视频,例如,按照seektime大于等于分片视频的起始播放时间,小于分片视频的起始播放时间加速播放时长的规则,可以定位出该seektime位于哪个tsfilecontext结构中,实现了目标分片视频的确定。即该seektime在第二分片视频的起始时间和结束时间之间。

在确定第二分片视频后,即定位到该第二分片视频对应的tsfilecontext结构后,判断该结构的status字段是否等于downloaded。如果等于downloaded,则表示该第二分片视频已经下载完成,可以直接进行播放,则不需要做其他的处理;如果不等于downloaded,表示该第二分片视频没有下载完成,然后判断该status字段是否等于none空闲状态,如果等于none,则立即下载该第二分片视频,并把status字段设置为downloading状态。

需要说明的是,当该tsfilecontext中的status状态等于downloading时,表示该第二分片视频正在下载,需要等待该第二分片视频下载完成之后才能进行播放,所以在该tsfilecontext的status成员不等于downloaded之前,需要一直等待,直到该第二分片视频下载完成之后,将该tsfilecontext的status成员设置为downloaded状态时,才可以返回。

107、获取缓存进度信息;

需要说明的是,在利用http进行下载分片视频时,可以设置一个ondownloadprogress的回调函数,该回调函数的

会设置一个ondownloadprogress的回调函数,该回调函数的第一个参数sizetransferd表示当前分片视频的下载大小,第二个参数totalsize表示该分片视频的大小,第三个参数thissize表示本次发生回调时所下载的大小,第四个参数tsfile表示当前正在下载的tsfilecontext。并且在hlsdemuxer中,有一个m_cachedtimestamp的字典成员,该字典成员记录了所下载的分片视频的时间区域,其中该字典成员的键表示该分片视频的时间区域的起始时间,该字典成员的值表示该时间区域的结束时间,为便于描述,可将该分片视频的时间区域对应的视频称为缓存视频,即该缓存视频的缓存进度信息包括缓存视频的起始时间和结束时间。例如,当目标视频刚开始下载时,该m_cachedtimestamp中应该只有一个缓存进度信息,并且起始时间为0;如果该目标视频的所有分片视频都下载完成之后,那么该字典中也应该只有一个缓存进度信息,并且该缓存进度信息的起始时间为0,结束时间为该目标视频的总时长。当该目标视频的所有分片视频没有下载完成时,如果用户将该目标视频定位到某个时间点,例如,在步骤105中接收到用户发送的第一消息,以从目标时间点开始播放目标视频,则hlsdemuxer会立即去下载该目标时间点对应的第二分片视频,此时m_cachedtimestamp中,可能就会有两个时间区域的缓存进度信息,一个时间区域是从目标视频开始的一个已经下载的连续区域;另一个时间区域是从第二分片视频的起始时间开始的连续下载区域。其中,每个时间区域的缓存进度信息可通过以下步骤获得:

步骤7a:获得当前分片视频的缓存进度信息;

以当前分片视频为第二分片视频为例进行说明。当下载回调,进入到ondownloadprogress函数中时,计算第二分片视频已下载的时间长度。可通过下面的公式得到第二分片视频已下载的时间长度:

timelength=tsfile.duration*sizetransfered/totalsize;

其中tsfile.duration表示第二分片视频的时长,sizetransfered表示该第二分片视频已经下载的字节大小,totalsize表示该第二分片视频的总字节大小;所以该第二分片视频已下载的时间长度timelength就等于已经下载的字节大小除以该第二分片视频的总字节数然后乘以该第二分片视频的时间长度,即得到第二分片视频的缓存进度信息,包括第二分片视频的起始时间,以及当前的结束时间。然后将该第二分片视频的起始时间,以及当前的结束时间保存到m_cachedtimestamp字典中,可以执行下面的语句:

m_cachedtimestamp[tsfile.starttime]=tsfile.starttime+timelength;

这样,当前正在下载的第二分片视频的缓存进度信息就保存在m_cachedtimestamp字典中了。

步骤7b:合并缓存视频;

上述的步骤,在每次发生下载回调时,都会进行一次操作,而本步骤在上述创建的工作线程中,每隔一秒执行一次,对m_cachedtimestamp中的数据进行合并。所谓合并,就是对m_cachedtimestamp字典中的连续的项进行合并,这样字典中的项数在合并后会变少,并且合并后的项所代表的已下载时间区域会越来越大。

上述中的连续是非常重要的一点,只有当m_cachedtimestamp字典中,前后两项发生重叠时,就代表是连续的,则可以进行合并。

例如m_cachedtimestamp中有三个缓存视频的缓存进度信息,并且这三个缓存进度信息分别是(0,1000),(1000,3000),(5000,6000)时,因为第一个缓存视频的结束时间与第二个缓存视频的开始时间相等,二者发生重叠,则第一个缓存视频的缓存进度信息和第二个缓存视频的缓存进度信息可以进行合并为(0,3000),但是3000与第三项的起始时间5000,不发生重叠,所以不能进行合并。具体的合并步骤如下:

1)令i等于m_cachedtimestanp的起始项;

2)令j等于i+1;

3)判断j是否等于m_cachedtimestamp的最后一项,如果不等于,则进入下面的步骤4);如果等于则进入到步骤7);

4)判断第j项的起始时间是否大于等于第i项的起始时间,并且第j项的起始时间是否小于等于第i项的结束时间,如果二者皆满足,表示第i项与第j项发生重叠,则进入到下面的步骤5),否则进入到步骤6);

5)将第i项的结束时间设置为第j项的结束时间,然后把j设置为j+1(也就是当前第j项的后一项),然后把第j项从m_cachedtimestamp字典中删除。然后继续进入到步骤3);

6)此时第i项与第j项没有发生重叠,无法进行合并,将i设置为j,继续进入到步骤2),判断i后面的项是否可以进行合并;

7)退出当前的合并过程。

通过上面的步骤,循环的将m_cachedtimestamp字典中的连续项合并完成之后,当前m_cachedtimestamp字典中所保存的项,就是所有已缓存的进度区间。当该m_cachedtimestamp字典中有n项时,就代表当前的视频下载了n个连续的区域,当该视频下载完成之后,m_cachedtimestamp中的所有项最终合并为一项。

108、根据缓存进度信息显示缓存视频的缓存进度。

获得缓存进度信息后,根据该缓存进度信息显示缓存视频的缓存进度。具体地,在合并完成后,将m_cachedtimestamp中的全部项,传递到ui展示层中显示缓存进度信息。在mediadecoder模块中,通过向用户界面(userinterface,ui)展示层发送一个mdt_vodbufferingprogressgraph的信息来完成该过程。其中,mdt_vodbufferingprogressgraph消息中,携带有一个类型为vodvideobufferinggraph的结构体参数,该结构体的定义如下:

typedefstruct

{

intnumsegments;

vodvideobufferingsegmentsements[1];

}vodvideobufferinggraph;

其中numsegments成员,表示vodvideobufferinggraph结构中,一共有几个vodvideobufferingsegment区间。而vodvideobufferingsegment结构则代表一个已经缓存的区域,该结构体定义如下:

其中,begintime表示该下载缓存区域的起始时间,endtime表示该下载缓存区域的结束时间。

故在mdt_vodbufferingprogressgraph消息的vodvideobufferinggraph结构参数中,其numsegments成员等于m_cachedtimestamp的项个数,然后vodvideobufferinggraph结构中的第i(i大于等于0,小于numsegments)个vodvideobufferingsegment,其起始时间begintime等于m_cachedtimestamp字典第i项的起始时间,endtime字段等于m_cachedtimestamp字典第i项的结束时间。从而完成向ui展示层,传递缓存进度区间消息过程。

本申请实施例中,完成了将一个在线的点播视频流,缓存到本地文件中,并根据目标时间点,定位到具体的第二分片视频的过程,解决了直接播放在线视频流时,因为没有缓存到本地而引起的需要不断下载文件内容的弊端,并实现了向ui展示层传递缓存进度信息,从而让用户知道当前视频哪些区域已经下载完成。

上面对本申请实施例中显示缓存进度的方法进行了描述,下面对本申请实施例中的播放设备进行描述,请参阅图2,本申请实施例中播放设备的一个实施例,包括:

获取单元201,用于获取目标视频的索引文件,所述索引文件按播放顺序包括组成所述目标视频的多个分片视频的网络地址和对应于各分片视频的播放时长,所述目标视频为在线的点播视频;

建立单元202,用于根据所述索引文件建立所述多个分片视频的信息索引关系,所述信息索引关系包括第一分片视频的起始时间和所述第一分片视频的描述信息的关联关系,所述第一分片视频的描述信息至少包括以下信息:所述第一分片视频的索引信息,所述第一分片视频的播放时长和所述第一分片视频的网络地址,所述第一分片视频为所述多个分片视频中的任一视频;

缓存单元203,用于根据所述信息索引关系缓存所述多个分片视频,且所述获取单元还用于获取缓存进度信息,所述缓存进度信息包括缓存视频的起始时间和结束时间;

显示单元204,用于根据所述缓存进度信息显示所述缓存视频的缓存进度。

在一种可能的实现方式中,播放设备还包括:

接收单元205,用于接收用户发送的第一消息,所述第一消息用于将所述目标视频的播放位置定位至目标时间点;

确定单元206,用于响应于所述第一消息,根据所述第一消息以及所述信息索引关系确定第二分片视频,所述目标时间点在所述第二分片视频的起始时间和结束时间之间;

所述缓存单元203还用于从所述第二分片视频的起始时间缓存所述第二分片视频。

在一种可能的实现方式中,获取单元201具体用于:

当第一缓存视频的结束时间与第二缓存视频的起始时间相同时,将所述第一缓存视频与所述第二缓存视频合并,得到第三缓存视频,所述第三缓存视频的起始时间为所述第一缓存视频的起始时间,所述第三缓存视频的结束时间为所述第二缓存视频的结束时间。

上面图2从模块化功能实体的角度对本申请实施例中的播放设备进行了描述,下面从硬件处理的角度对本申请实施例中的播放设备进行详细描述,请参阅图3,本发明实施例中的播放设备300一个实施例,包括:

输入装置301、输出装置302、处理器303和存储器304(其中处理器303的数量可以一个或多个,图3中以一个处理器303为例)。在本申请的一些实施例中,输入装置301、输出装置302、处理器303和存储器304可通过总线或其它方式连接,其中,图3中以通过总线连接为例。

其中,通过调用存储器304存储的操作指令,处理器303,用于执行如下步骤:

获取目标视频的索引文件,所述索引文件按播放顺序包括组成所述目标视频的多个分片视频的网络地址和对应于各分片视频的播放时长,所述目标视频为在线的点播视频;

根据所述索引文件建立所述多个分片视频的信息索引关系,所述信息索引关系包括第一分片视频的起始时间和所述第一分片视频的描述信息的关联关系,所述第一分片视频的描述信息至少包括以下信息:所述第一分片视频的索引信息,所述第一分片视频的播放时长和所述第一分片视频的网络地址,所述第一分片视频为所述多个分片视频中的任一视频;

根据所述信息索引关系缓存所述多个分片视频,并获取缓存进度信息,所述缓存进度信息包括缓存视频的起始时间和结束时间;

根据所述缓存进度信息显示所述缓存视频的缓存进度。

可选的,通过调用存储器304存储的操作指令,处理器303,还用于执行如下步骤:

接收用户发送的第一消息,所述第一消息用于将所述目标视频的播放位置定位至目标时间点;响应于所述第一消息,根据所述第一消息以及所述信息索引关系确定第二分片视频,所述目标时间点在所述第二分片视频的起始时间和结束时间之间;从所述第二分片视频的起始时间缓存所述第二分片视频。

可选的,通过调用存储器304存储的操作指令,处理器303,具体用于执行如下步骤:当第一缓存视频的结束时间与第二缓存视频的起始时间相同时,将所述第一缓存视频与所述第二缓存视频合并,得到第三缓存视频,所述第三缓存视频的起始时间为所述第一缓存视频的起始时间,所述第三缓存视频的结束时间为所述第二缓存视频的结束时间。

请参阅图4,图4为本申请实施例提供的电子设备的实施例示意图。

如图4所示,本申请实施例提供了一种电子设备,包括存储器410、处理器420及存储在存储器420上并可在处理器420上运行的计算机程序411,处理器420执行计算机程序411时实现以下步骤:

获取目标视频的索引文件,所述索引文件按播放顺序包括组成所述目标视频的多个分片视频的网络地址和对应于各分片视频的播放时长,所述目标视频为在线的点播视频;根据所述索引文件建立所述多个分片视频的信息索引关系,所述信息索引关系包括第一分片视频的起始时间和所述第一分片视频的描述信息的关联关系,所述第一分片视频的描述信息至少包括以下信息:述第一分片视频的索引信息,所述第一分片视频的播放时长和所述第一分片视频的网络地址,所述第一分片视频为所述多个分片视频中的任一视频;根据所述信息索引关系缓存所述多个分片视频,并获取缓存进度信息,所述缓存进度信息包括缓存视频的起始时间和结束时间;根据所述缓存进度信息显示所述缓存视频的缓存进度。

在具体实施过程中,处理器420执行计算机程序411时,可以实现图1对应的实施例中任一实施方式。

由于本实施例所介绍的电子设备为实施本发明实施例中一种播放设备所采用的设备,故而基于本发明实施例中所介绍的方法,本领域所属技术人员能够了解本实施例的电子设备的具体实施方式以及其各种变化形式,所以在此对于该电子设备如何实现本发明实施例中的方法不再详细介绍,只要本领域所属技术人员实施本发明实施例中的方法所采用的设备,都属于本发明所欲保护的范围。

请参阅图5,图5为本申请实施例提供的一种计算机可读存储介质的实施例示意图。

如图5所示,本实施例提供了一种计算机可读存储介质500,其上存储有计算机程序511,该计算机程序511被处理器执行时实现如下步骤:

获取目标视频的索引文件,所述索引文件按播放顺序包括组成所述目标视频的多个分片视频的网络地址和对应于各分片视频的播放时长,所述目标视频为在线的点播视频;根据所述索引文件建立所述多个分片视频的信息索引关系,所述信息索引关系包括第一分片视频的起始时间和所述第一分片视频的描述信息的关联关系,所述第一分片视频的描述信息至少包括以下信息:述第一分片视频的索引信息,所述第一分片视频的播放时长和所述第一分片视频的网络地址,所述第一分片视频为所述多个分片视频中的任一视频;根据所述信息索引关系缓存所述多个分片视频,并获取缓存进度信息,所述缓存进度信息包括缓存视频的起始时间和结束时间;根据所述缓存进度信息显示所述缓存视频的缓存进度。

在具体实施过程中,该计算机程序511被处理器执行时可以实现图1对应的实施例中任一实施方式。

需要说明的是,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其它实施例的相关描述。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式计算机或者其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

本申请实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机软件指令,当计算机软件指令在处理设备上运行时,使得处理设备执行如图1对应实施例中的风电场数字化平台设计的方法中的流程。

所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digitalsubscriberline,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘(solidstatedisk,ssd))等。

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

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

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

以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

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