数据缓冲方法和电子设备与流程

文档序号:14155060阅读:187来源:国知局

本发明涉及数据处理技术领域,尤其涉及一种数据缓冲方法和电子设备。



背景技术:

在进行流媒体数据播放时,观看端一般会将流媒体数据缓冲至本地,由播放器从缓冲器中读取数据进行播放。但是,目前的播放器一般采用的是单缓冲器缓冲机制,容易出现重复缓冲现象。

所谓单缓冲器缓冲机制,简单来说就是,假设流媒体数据中前500mb为视频数据流,随后的100mb为音频数据流,假设起始缓冲位置为该流媒体数据的开始位置,则在单缓冲器缓冲机制下,是按照顺序将该流媒体数据缓冲下来的,即先缓冲前500mb数据之后再缓冲后100mb数据。但是,在播放器播放的时候,受流媒体播放规则的影响,可能会存在这样的情形:假设缓冲器已经缓冲了前50mb的视频数据流,当播放器从缓冲器中读取前20mb视频数据流之后,与该20mb视频数据流对应的音频数据流假设位于第500-510mb的位置,由于此时缓冲器中还没有缓冲该音频数据流,则此时缓冲器随即去缓冲位于第500-510mb的音频数据流,此时则需要先清空之前缓冲下来后30mb视频数据流,以便将缓冲下的该音频数据流存入到紧随前20mb视频数据流后的存储空间,从而播放器可以读取到该10mb的音频数据流以与这20mb视频数据流进行同步播放。但是,待该10mb音频数据流播放完后,缓冲器还需要重新再次缓冲已经被清空的那30mb视频数据流,这样便出现了重复缓冲的现象。这种重复缓冲的现象一方面容易导致画面出现卡顿情形,一方面也是对缓冲处理资源的浪费。



技术实现要素:

有鉴于此,本发明实施例提供一种数据缓冲方法和电子设备,用以克服重复缓冲的问题。

第一方面,本发明实施例提供一种数据缓冲方法,包括:

接收播放器发送的数据请求,所述数据请求中包括待请求数据的网络地址和请求位置;

查询缓冲数据库中是否存在与所述网络地址和所述请求位置对应的第一缓冲文件索引项;

若存在所述第一缓冲文件索引项,则根据所述第一缓冲文件索引项获取缓冲文件;

将所述缓冲文件反馈给所述播放器,以使所述播放器播放其中包含的已缓冲数据。

第二方面,本发明实施例提供一种电子设备,包括:

包括存储器和处理器;

所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行时实现本发明第一方面提供的数据缓冲方法。

第三方面,本发明实施例提供一种存储有计算机程序的计算机可读存储介质,所述计算机程序使计算机执行时实现本发明第一方面提供的数据缓冲方法。

本发明实施例所提供的一种数据缓冲方法和电子设备,当播放器发起数据请求时,查询缓冲数据库中是否存储有与请求位置对应的第一缓冲文件索引项,当存在时根据第一缓冲文件索引项获取缓冲文件并反馈给播放器进行播放。由此可知,本发明实施例中采用的数据缓冲机制是数据库结合文件存储的形式实现的,其中,缓冲下来的数据以文件形式进行存储,数据库中则存储有缓冲文件的存储索引信息。基于此,一旦数据被缓冲下来则会存入到某个缓冲文件中以供需要的时候查询获得而被使用,而不会出现重复缓冲相同的数据的问题。

附图说明

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

图1为本发明实施例提供的数据缓冲方法所适用于的系统框架图;

图2为本发明实施例提供的数据缓冲方法实施例一的流程图;

图3为缓冲数据库的一种可选实现方式的示意图;

图4为缓冲数据库的另一种可选实现方式的示意图;

图5为本发明实施例提供的数据缓冲方法实施例二的流程图;

图6-图13为图5所示实施例执行过程中的缓冲数据库内容变化示意图;

图14为本发明实施例提供的数据缓冲装置的结构示意图;

图15为本发明实施例提供的电子设备的结构示意图。

具体实施方式

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

在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种,但是不排除包含至少一种的情况。

应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

应当理解,尽管在本发明实施例中可能采用术语第一、第二、第三等来描述xxx,但这些xxx不应限于这些术语。这些术语仅用来将xxx区分开。例如,在不脱离本发明实施例范围的情况下,第一xxx也可以被称为第二xxx,类似地,第二xxx也可以被称为第一xxx。

取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。

进一步值得说明的是,本发明各实施例中各步骤之间的顺序是可以调整的,不是必须按照以下举例的顺序执行。

如图1所示,在终端设备向网络侧的服务器请求获得某待请求数据比如某音视频数据的场景下,终端设备中包括用于为用户展示该待请求数据的播放器以及代理应用程序,该代理应用程序可以是以插件的形式安装在终端设备中的。该代理应用程序的作用是:在播放器和网络侧的服务器之间添加了一层代理,使得播放器可以从代理应用程序中读取待缓冲下来的数据进行播放,而代理应用程序则从服务器中加载并缓冲数据。这样,播放器就可以直接读取代理应用程序缓冲在本地的数据,而无需播放器基于现有的单缓冲器机制缓冲数据,从而可以减少用于重复缓冲导致的卡顿现象。

上述终端设备可以为智能手机、台式机、平板电脑、带数据通信功能的流媒体放映机等。

如图2所示,以代理应用程序的角度,本发明实施例提供的数据缓冲方法的实施例一,可以包括如下步骤:

s101:接收播放器发送的数据请求,数据请求中包括待请求数据的网络地址和请求位置。

当用户需要通过播放器浏览网络中的资源时,对播放器进行交互操作,以使得播放器发送数据请求。例如,若用户需要观看某一集电视剧,则可以在播放器上点击该集电视剧对应的控件,进而触发播放器发送数据请求。

需要说明的是,数据请求可以为http(hypertexttransferprotocol,超文本传输协议)请求、或者ftp(filetransferprotocol,文件传输协议)请求。

数据请求中的网络地址可以为统一资源定位符(url),指示了待请求数据在网络侧对应的地址。上述请求位置是指播放器请求播放的位置相对于待请求数据整体而言的相对位置,比如,待请求数据为500mb大小,该请求位置比如为是100mb的位置,即请求从该待请求数据的第100mb位置处开始播放。

s102:查询缓冲数据库中是否存在与上述网络地址和上述请求位置对应的第一缓冲文件索引项,若存在则执行步骤s103-s104,若不存在,则执行步骤s105-s106。

s103:根据第一缓冲文件索引项获取缓冲文件。

s104:将上述缓冲文件反馈给播放器,以使播放器播放其中包含的已缓冲数据。

s105:从待请求数据对应的服务器中获取自请求位置开始的数据,以生成缓冲文件并更新缓冲数据库,其中,每个缓冲文件中包含预设数据量大小的数据。

s106:将生成的缓冲文件反馈给播放器,以使播放器播放其中包含的已缓冲数据。

本发明实施例中,采用数据库和文件相结合的方式实现对待请求数据的缓冲处理,其中,该数据库即为本发明实施例提及的缓冲数据库,文件即为本发明实施例中提及的缓冲文件。概括来说,在缓冲下来一定数据量大小的数据之后,会将该一定数据量大小的数据存入一个文件中而形成缓冲文件,从而,随着缓冲下来的数据的增加,会形成越来越多的缓冲文件,每个缓冲文件中存储了一定数据量大小的数据,且不同缓冲文件中存储的数据不同,都为待请求数据的部分。而缓冲数据库中则存储有每个缓冲文件的存储索引信息。

在一可选情形下,以待请求数据为某个音视频数据为例,当用户通过播放器打开该音视频数据的网络链接地址而进入到播放画面时,默认情况下,代理应用程序会自动从头开始缓冲音视频数据,即代理应用程序会向服务器从头开始读取该音视频数据,从而,每当读取到一定数据量大小比如10mb的音视频数据时,会随即生成一个缓冲文件用于存储该10mb的音视频数据,并将该缓冲文件存储在本地的存储空间中,进而在缓冲数据库中形成一条缓冲文件索引项。可以理解的是,该缓冲文件索引项中可以包括对应的缓冲文件在存储空间中的存储位置以及该缓冲文件中的音视频数据相对于整个音视频数据而言是哪段位置的数据以及音视频数据对应的网络地址等索引信息。其中,该存储空间可以是终端设备的内存或其他存储器中。

基于此,假设遍历缓冲数据库中包含的各缓冲文件索引项发现:缓冲数据库中包含的各缓冲文件索引项中存在与当前数据请求中的网络地址和请求位置对应的第一缓冲文件索引项,则说明本地已经存在了当前请求所需的缓冲数据,此时,基于第一缓冲文件索引项获取对应的缓冲文件,将获得的缓冲文件反馈给播放器以使播放器可以播放其中的已缓冲数据。

其中,一条缓冲文件索引项对应于一个缓冲文件,该缓冲文件索引项中包含有对应的缓冲文件中的已缓冲数据的数据缓冲起始位置和数据缓冲结束位置,即该已缓冲数据相对于待请求数据的位置段,从而,如果请求位置位于某条缓冲文件索引项对应的该数据缓冲起始位置和数据缓冲结束位置之间,则可以认为该条缓冲文件索引项即为与请求位置对应的第一缓冲文件索引项。从而,根据该第一缓冲文件索引项中包含的缓冲文件存储位置获取对应的缓冲文件。

相反地,假设遍历缓冲数据库中包含的各缓冲文件索引项发现:缓冲数据库中包含的各缓冲文件索引项中不存在与当前数据请求中的网络地址和请求位置对应的第一缓冲文件索引项,则此时说明用户所请求的数据还没有被缓冲下来。此时,代理应用程序可以服务器中获取自请求位置开始的数据,并在每获取到一定数据量大小的数据后生成一个缓冲文件存储在本地存储空间中,并更新缓冲数据库,即在缓冲数据库中增加对应的一条缓冲文件索引项,之后可以将生成的缓冲文件反馈播放器进行播放。

由此可知,本发明实施例中采用的数据缓冲机制是数据库结合文件存储的形式实现的,其中,缓冲下来的数据以文件形式进行存储,数据库中则存储有缓冲文件的存储索引信息。基于此,一旦数据被缓冲下来则会存入到某个缓冲文件中以供需要的时候查询获得而被使用,而不会出现重复缓冲相同的数据的问题。另外,通过该机制,可以在播放器访问任意位置的时候进行缓冲,不会重复缓冲,减少了重复缓冲导致的卡顿情况的发生,提升了用户体验。

前述实施例中提及缓冲数据库中存储有缓冲文件的存储索引信息,在一可选实施例中,如图3所示,该缓冲数据库中可以仅包含一个数据表,该数据表中的任一条缓冲文件索引项可以包括图3中所示意的如下存储索引信息:索引项标识(id)、网络地址、数据缓冲起始位置、数据缓冲结束位置、缓冲文件存储位置。

在另一可选实施例中,如图4所示,该缓冲数据库中可以包含三个数据表:网络地址索引表、缓冲索引表、文件索引表,这三个数据表之间可以通过索引项id进行关联。

其中,网络地址索引表用于存储网络地址索引项,每个网络地址索引项中可以包括:网络地址索引项标识比如id1,以及网络地址,可选地,每个网络地址索引项中还可以包括:数据总大小,即待请求数据的总数据量。

其中,缓冲索引表用于存储缓冲索引项,每个缓冲索引项中可以包括:对应的网络地址索引项标识比如id1,缓冲索引项标识比如id2,以及数据缓冲起始位置和数据缓冲结束位置,可选地,每个缓冲索引项中还可以包括:缓冲文件个数。每个缓冲索引项对应于一次缓冲过程,即描述了一次缓冲过程中缓冲了待请求数据的什么位置(数据缓冲起始位置)至什么位置(数据缓冲结束位置)的数据,并且此次缓冲过程中一共生成了多少个缓冲文件。

其中,文件索引表用于存储缓冲文件索引项,一个缓冲文件索引项对应于一个缓冲文件。每个缓冲文件索引项中可以包括:对应的缓冲索引项标识比如id2,文件索引项标识比如id3、id4,相应缓冲文件所对应的数据缓冲起始位置和数据缓冲结束位置,以及相应缓冲文件的存储位置,可选地,每个文件索引项中还可以包括:缓冲文件大小,即每个缓冲文件中存储有多少数据量的已缓冲数据。

上述三级存储的形式,可以更加快捷高效的查询缓冲数据库中是否包含与当前的请求位置对应的缓冲数据。

具体来说,首先查询网络地址索引表,如果发现其中不包含与当前的数据请求中的网络地址对应的索引项,则既可判断没有与该数据请求对应的已缓冲数据;进一步的,如果网络地址索引表中存在与该网络地址对应的索引项,则可以进而查询缓冲索引表是否存在与请求位置对应的索引项,如果存在,则说明一定存在所需的缓冲数据,如果不存在,则说明不存在所需的缓冲数据,无需再查询文件索引表。而且,由于缓冲索引表中的一条缓冲索引项中的数据缓冲起始位置和数据缓冲结束位置是对应于一次缓冲过程所缓冲下来的全部已缓冲数据,往往对应于多个缓冲文件,因此,该缓冲索引表中的索引项个数远小于文件索引表中的索引项个数,从而,可以通过查询缓冲索引表中的少量索引项个数即可确定缓冲数据库中是否存在所需的缓冲数据,快捷性较佳。

下面结合图4所示的缓冲数据库的组织形式,介绍本发明实施例提供的数据缓冲方法的一种具体实现过程,如图5所示,实施例二包括如下步骤:

s201:接收播放器发送的数据请求,数据请求中包括待请求数据的网络地址和请求位置。

s202:查询网络地址索引表中是否存在与网络地址对应的网络地址索引项,若存在则执行步骤s203,若不存在,则执行步骤s208。

s203:确定缓冲索引表中与网络地址索引项标识对应的缓冲索引项中是否存在与请求位置对应的缓冲索引项,若存在,则执行步骤s204-s207,若不存在,则执行步骤s209。

其中,与请求位置对应的缓冲索引项中包括缓冲索引项标识、第一数据缓冲起始位置和第一数据缓冲结束位置,请求位置位于该第一数据缓冲起始位置和第一数据缓冲结束位置之间。

s204:从文件索引表中获取与所述缓冲索引项标识和请求位置对应的第一缓冲文件索引项,第一缓冲文件索引项中包括第二数据缓冲起始位置、第二数据缓冲结束位置和第一缓冲文件的存储位置,请求位置位于第二数据缓冲起始位置和第二数据缓冲结束位置之间。

s205:根据第一缓冲文件的存储位置获取第一缓冲文件,若文件索引表中存在与第一缓冲文件索引项连续索引的至少一个第二缓冲文件索引项,则根据至少一个第二缓冲文件索引项中的第二缓冲文件的存储位置,获取对应的至少一个第二缓冲文件,第一缓冲文件以及至少一个第二缓冲文件组成缓冲文件。

其中,所述连续索引是指后一个缓冲文件索引项的数据缓冲起始位置与前一个缓冲文件索引项的数据缓冲结束位置相邻。

s206:将获得的缓冲文件反馈给所述播放器,以使播放器播放其中包含的已缓冲数据。

s207:若第一数据缓冲结束位置未达到待请求数据的数据终止位置,并且第一数据缓冲结束位置不存在于缓冲索引表中的其他缓冲索引项中,则从待请求数据对应的服务器中获取自第一数据缓冲结束位置开始的数据,以继续生成缓冲文件并更新文件索引表和缓冲索引表。

s208:在网络地址索引表中增加新网络地址索引项,新网络地址索引项中包括所述网络地址和新网络地址索引标识。

s209:在缓冲索引表中增加新缓冲索引项,新缓冲索引项中包括所述新网络地址索引标识、新缓冲索引项标识、第三数据缓冲起始位置和第三数据缓冲结束位置,第三数据缓冲起始位置赋值为所述请求位置。

s210:从待请求数据对应的服务器中获取自请求位置开始的数据,迭代执行如下过程,直到满足迭代截止条件:若当前已获得数据达到预设数据量大小,则生成包含当前已获得数据的新缓冲文件,将新缓冲文件存入预设存储空间中;在文件索引表中增加第三缓冲文件索引项,第三缓冲文件索引项中包括新缓冲索引项标识、新文件索引项标识、第四数据缓冲起始位置、第四数据缓冲结束位置和新缓冲文件在预设存储空间中的存储位置;更新第三数据缓冲结束位置为第四数据缓冲结束位置。

其中,所述迭代截止条件包括:第四数据缓冲结束位置已经达到待请求数据的数据终止位置,或者,接收到新的数据请求。

s211:将生成的缓冲文件反馈给播放器,以使播放器播放其中包含的已缓冲数据。

为便于理解,下面以一个举例来说明上述执行过程。假设待请求数据为音视频数据,该音视频数据的总体数据量大小为500mb,网络地址为###,请求位置为100mb,并且假设缓冲文件数据量大小为10mb。

第一种假设:假设当前的缓冲数据库中各索引表中存储的内容如图6所示,根据数据请求首先查询网络地址索引表,发现其中存在与数据请求中的网络地址###对应的一条网络地址索引项,该网络地址的索引项标识为id1。进而,查询缓冲索引表中与该id1对应的缓冲索引项,假设与之对应的缓冲索引项的标识为id2,并且该缓冲索引项中的第一数据缓冲起始位置和第一数据缓冲结束位置分别为80mb和120mb,由于请求位置100mb位于80mb和120mb之间,说明已经具有满足数据请求所需的缓冲数据。进而,在文件索引表中查询与该id2和请求位置100mb对应的第一缓冲文件索引项,图6中该第一缓冲文件索引项为id5对应的索引项,因为该缓冲文件索引项中包含id2,并且请求位置100mb位于该缓冲文件索引项中的第二数据缓冲起始位置100mb和第二数据缓冲结束位置110mb之间,从而,根据id5对应的缓冲文件索引项中的第一缓冲文件的存储位置l3,获得第一缓冲文件。另外,由于文件索引表中存在与第一缓冲文件索引项id5连续索引的至少一个第二缓冲文件索引项id6,则根据至少一个第二缓冲文件索引项中的第二缓冲文件的存储位置l4,获取对应的至少一个第二缓冲文件,以便将由第一缓冲文件以及至少一个第二缓冲文件组成的缓冲文件反馈给播放器。其中,id6对应的缓冲文件索引项的数据缓冲起始位置110mb与前一个缓冲文件索引项id5的数据缓冲结束位置110mb相邻。

其中,之所以将位于第一缓冲文件中数据之后的缓冲数据,即第二缓冲文件中的数据也反馈给播放器是因为,在实际应用中,用户在观看音视频的过程中,当指示从某个位置开始观看之后,一般需要为用户提供自该位置之后的连续音视频数据流。

另外,由于根据当前缓冲数据库中的存储内容可知,当前已经缓冲的数据仅缓冲至120mb的位置,120mb之后的数据还没有缓冲,因为缓冲索引表中不存在与120mb之后的数据对应的缓冲索引项,因此,为保证用户在不触发新的数据请求的情况下,能够顺畅观看后续的数据,则还需自该120mb位置开始,继续从服务器缓冲后续的数据。具体地,每缓冲到10mb数据后生成一个缓冲文件,将该缓冲文件存入到存储空间的某位置,假设为l5,并更新文件索引表和缓冲索引表。具体地,如图7所示,在文件索引表中添加一条缓冲文件索引项:该缓冲文件索引项的标识为id7,对应的缓冲索引项标识为id2,数据缓冲起始位置和数据缓冲结束位置分别为120mb和130mb,缓冲文件存储位置为l5;并且,更新缓冲索引表中id2对应的缓冲索引项的数据缓冲结束位置为130mb,缓冲文件个数为5个。

第二种假设:假设当前的缓冲数据库中各索引表中存储的内容如图8所示,根据数据请求首先查询网络地址索引表,发现其中存在与数据请求中的网络地址###对应的一条网络地址索引项,该网络地址的索引项标识为id1。进而,查询缓冲索引表中与该id1对应的缓冲索引项,假设与之对应的缓冲索引项的标识为id2,并且该缓冲索引项中的第一数据缓冲起始位置和第一数据缓冲结束位置分别为0mb和30mb,由于请求位置100mb不位于0mb和30mb之间,说明目前还不具有满足数据请求所需的缓冲数据。此时,在缓冲索引表中增加新缓冲索引项,如图9所示,新缓冲索引项中包括新网络地址索引标识id1、新缓冲索引项标识id6、第三数据缓冲起始位置和第三数据缓冲结束位置,此时,第三数据缓冲起始位置赋值为请求位置100mb,初始情况下,第三数据缓冲结束位置也为100mb,缓冲文件个数为0。之后,从服务器中获取自请求位置100mb开始的数据,每当获得10mb的数据时,生成包含当前已获得的10mb数据的新缓冲文件,将新缓冲文件存入预设存储空间中,在文件索引表中增加第三缓冲文件索引项,如图10所示,第三缓冲文件索引项中包括新缓冲索引项标识id6、新文件索引项标识id7、第四数据缓冲起始位置100mb、第四数据缓冲结束位置110mb和新缓冲文件在预设存储空间中的存储位置l4,此时,再更新缓冲索引表中第三数据缓冲结束位置为第四数据缓冲结束位置110mb,缓冲文件个数更新为1个,如此迭代执行下去,直到接收到另一个数据请求从而触发新的一次查询过程为止,或者直到缓冲索引表中第三数据缓冲结束位置已经更新为音视频数据的数据终止位置500mb。

第三种假设:假设当前的缓冲数据库中各索引表中存储的内容如图11所示,根据数据请求首先查询网络地址索引表,发现其中不存在与数据请求中的网络地址###对应的一条网络地址索引项,则在网络地址索引表中增加新网络地址索引项,该新网络地址索引项中包括该网络地址###和新网络地址索引标识,如图12所示,假设为id8。进而,如图12所示,在缓冲索引表中增加新缓冲索引项,新缓冲索引项中包括新网络地址索引标识id8、新缓冲索引项标识id6、第三数据缓冲起始位置和第三数据缓冲结束位置,此时,第三数据缓冲起始位置赋值为请求位置100mb,初始情况下,第三数据缓冲结束位置也为100mb,缓冲文件个数为0。之后,从服务器中获取自请求位置100mb开始的数据,每当获得10mb的数据时,生成包含当前已获得的10mb数据的新缓冲文件,将新缓冲文件存入预设存储空间中,在文件索引表中增加第三缓冲文件索引项,如图13所示,第三缓冲文件索引项中包括新缓冲索引项标识id6、新文件索引项标识id7、第四数据缓冲起始位置100mb、第四数据缓冲结束位置110mb和新缓冲文件在预设存储空间中的存储位置l4,此时,再更新缓冲索引表中第三数据缓冲结束位置为第四数据缓冲结束位置110mb,缓冲文件个数更新为1个,如此迭代执行下去,直到接收到另一个数据请求从而触发新的一次查询过程为止,或者直到缓冲索引表中第三数据缓冲结束位置已经更新为音视频数据的数据终止位置500mb。

在上述实施例的基础上,可选地,为了保证存储空间的高效使用,避免冗余数据对存储空间的占用,若监测到已反馈的缓冲文件已经达到预设数据量,则可以删除已反馈的缓冲文件,并更新文件索引表和/或缓冲索引表。比如,将删除的缓冲文件在文件索引表中对应的缓冲文件索引项删除,并更新对应的缓冲索引表中的缓冲文件个数以及数据缓冲起始位置、数据缓冲结束位置。

基于上述数据缓冲处理过程,在不改变播放器框架的同时,加入了新的缓冲机制——数据库结合文件存储的缓冲机制,通过该机制,可以在播放器请求访问任意数据位置的时候,进行缓冲查询,若已经缓冲过所需数据,则不会重复缓冲。同时,数据进行分块保存即每个缓冲文件仅保存一定数据量大小的数据,可以及时的回收存储空间。

相应于上述方法实施例,如图14所示,本发明实施例还提供一种数据缓冲装置,包括:接收模块610、查询模块620、第一获取模块630、反馈模块640。

接收模块610,用于接收播放器发送的数据请求,所述数据请求中包括待请求数据的网络地址和请求位置。

查询模块620,用于查询缓冲数据库中是否存在与所述网络地址和所述请求位置对应的第一缓冲文件索引项。

第一获取模块630,用于若存在所述第一缓冲文件索引项,则根据所述第一缓冲文件索引项获取缓冲文件。

反馈模块640,用于将所述缓冲文件反馈给所述播放器,以使所述播放器播放其中包含的已缓冲数据。

在一种可选实施方式中,所述查询模块620,包括:查询子模块621、第一获取子模块622、判断子模块623、第二获取子模块624。

查询子模块621,用于查询网络地址索引表中是否存在与所述网络地址对应的网络地址索引项,若存在则触发获取子模块。

判断子模块622,用于确定缓冲索引表中与所述网络地址索引项的标识对应的缓冲索引项中是否存在与所述请求位置对应的缓冲索引项,所述缓冲索引项中包括缓冲索引项标识、第一数据缓冲起始位置和第一数据缓冲结束位置,所述请求位置位于所述第一数据缓冲起始位置和第一数据缓冲结束位置之间,若存在则触发获取子模块623。

第一获取子模块623,用于从文件索引表中获取与所述缓冲索引项标识和所述请求位置对应的第一缓冲文件索引项,所述第一缓冲文件索引项中包括第二数据缓冲起始位置和第二数据缓冲结束位置,所述请求位置位于所述第二数据缓冲起始位置和所述第二数据缓冲结束位置之间。

所述缓冲数据库中包括所述网络地址索引表、所述缓冲索引表和所述文件索引表。

在一种可选实施方式中,所述第一缓冲文件索引项中还包括第一缓冲文件的存储位置。

所述第一获取模块630,包括:第三获取子模块631、第四获取子模块632。

第二获取子模块631,用于根据所述第一缓冲文件的存储位置获取所述第一缓冲文件。

第三获取子模块632,用于若所述文件索引表中存在与所述第一缓冲文件索引项连续索引的至少一个第二缓冲文件索引项,则根据所述至少一个第二缓冲文件索引项中的第二缓冲文件的存储位置,获取对应的至少一个第二缓冲文件,其中,所述连续索引是指后一个缓冲文件索引项的数据缓冲起始位置与前一个缓冲文件索引项的数据缓冲结束位置相邻。

所述缓冲文件包括所述第一缓冲文件以及所述至少一个第二缓冲文件。

在一种可选实施方式中,所述装置还包括第二获取模块650,具体用于:

若所述第一数据缓冲结束位置未达到所述待请求数据的数据终止位置,并且所述第一数据缓冲结束位置不存在于所述缓冲索引表中的其他缓冲索引项中,则从所述待请求数据对应的服务器中获取自所述第一数据缓冲结束位置开始的数据,以继续生成缓冲文件并更新所述文件索引表和所述缓冲索引表,其中,每个缓冲文件中包含预设数据量大小的数据。

在一种可选实施方式中,所述装置还包括删除模块660,用于:

若监测到已反馈的缓冲文件已经达到预设数据量,则删除所述已反馈的缓冲文件,并更新所述文件索引表和/或所述缓冲索引表。

在一种可选实施方式中,所述装置还包括请求模块670,用于:

若不存在所述第一缓冲文件索引项,则从所述待请求数据对应的服务器中获取自所述请求位置开始的数据,以生成缓冲文件并更新所述缓冲数据库,其中,每个缓冲文件中包含预设数据量大小的数据。

在一种可选实施方式中,所述请求模块670,包括:第一增加子模块671、第二增加子模块672、迭代子模块673。

第一增加子模块671,用于若不存在所述网络地址索引项,则在所述网络地址索引表中增加新网络地址索引项,所述新网络地址索引项中包括所述网络地址和新网络地址索引标识。

第二增加子模块672,用于若不存在所述缓冲索引项,则在所述缓冲索引表中增加新缓冲索引项,所述新缓冲索引项中包括所述新网络地址索引标识、新缓冲索引项标识、第三数据缓冲起始位置和第三数据缓冲结束位置,所述第三数据缓冲起始位置赋值为所述请求位置。

迭代子模块673,用于从所述待请求数据对应的服务器中获取自所述请求位置开始的数据,执行迭代步骤,直到满足迭代截止条件。

在一种可选实施方式中,迭代子模块673包括:生成子模块6731、第三增加子模块6732、更新子模块6733。

生成子模块6731,若当前已获得数据达到所述预设数据量大小,则生成包含所述当前已获得数据的新缓冲文件,将所述新缓冲文件存入预设存储空间中。

第三增加子模块6732,用于在所述文件索引表中增加第三缓冲文件索引项,所述第三缓冲文件索引项中包括所述新缓冲索引项标识、新文件索引项标识、第四数据缓冲起始位置、第四数据缓冲结束位置和所述新缓冲文件在所述预设存储空间中的存储位置。

更新子模块6733,用于更新所述第三数据缓冲结束位置为所述第四数据缓冲结束位置。

所述迭代截止条件包括:第四数据缓冲结束位置已经达到所述待请求数据的数据终止位置,或者,接收到新的数据请求。

需要说明的是,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得较为简单,相关之处参见方法实施例的部分说明即可。

如图15所示,本发明实施例还提供一种电子设备,包括存储器710和处理器720。

所述存储器710用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器720执行时实现本发明方法实施例对应的数据缓冲方法。

可选的,本实施例中,电子设备还可以包括通信接口730,用于电子设备与其他设备和/或互联网的通信。

另外,本发明实施例还提供一种存储有计算机程序的计算机可读存储介质,所述计算机程序使计算机执行时实现本发明方法实施例对应的数据缓冲方法。

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

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