CN108965910B - 一种视频缓存方法及播放器 - Google Patents
一种视频缓存方法及播放器 Download PDFInfo
- Publication number
- CN108965910B CN108965910B CN201810905039.6A CN201810905039A CN108965910B CN 108965910 B CN108965910 B CN 108965910B CN 201810905039 A CN201810905039 A CN 201810905039A CN 108965910 B CN108965910 B CN 108965910B
- Authority
- CN
- China
- Prior art keywords
- video
- target
- cache
- index information
- target video
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/231—Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
- H04N21/23106—Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion involving caching operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/433—Content storage operation, e.g. storage operation in response to a pause request, caching operations
- H04N21/4331—Caching operations, e.g. of an advertisement for later insertion during playback
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/85—Assembly of content; Generation of multimedia applications
- H04N21/858—Linking data to content, e.g. by linking an URL to a video object, by creating a hotspot
- H04N21/8586—Linking data to content, e.g. by linking an URL to a video object, by creating a hotspot by using a URL
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种视频缓存方法及播放器,其中,所述方法包括:基于目标视频的视频标识,判断是否对所述目标视频进行缓存;若判定对所述目标视频进行缓存,获取指定缓存文件,并从所述指定缓存文件中读取所述目标视频的缓存索引信息;在播放所述目标视频时,若存在与当前的播放进度相匹配的目标索引信息,从所述指定缓存文件中获取所述目标索引信息指向的视频数据;若不存在,根据所述视频标识下载所述当前的播放进度对应的视频片段;将下载的所述视频片段写入所述指定缓存文件中,并基于下载的所述视频片段,更新所述目标视频的缓存索引信息。本申请提供的技术方案,能够在节省系统成本的同时,适用于HLS视频协议。
Description
技术领域
本发明涉及互联网技术领域,特别涉及一种视频缓存方法及播放器。
背景技术
目前,FFmpeg(Fast Forward Moving Picture Experts Group,快速动态图像专家组)由于其能够便捷地记录、转换数字音视频,并可以将数字音视频转化为音视频流,因此广泛应用于各类播放器中。
FFmpeg本身不支持视频缓存功能,为了解决这一缺陷,通常会额外开设一个代理服务器来负责视频缓存的过程。具体地,基于FFmpeg的播放器可以将需要播放的视频的URL(Uniform Resource Locator,统一资源定位符)拼接在本地链接中,然后拼接了该URL的本地链接可以被发送至代理服务器处。这样,代理服务器可以识别出该URL,并对该URL指向的视频数据进行缓存,缓存后的视频数据便可以被提供给播放器进行播放。
然而,这样的方式需要额外开设一个代理服务器,增加了整个系统的成本。此外,通过代理服务器的方式,无法适用于HLS(HTTP Live Streaming,HTTP直播流)协议,而HLS协议是比较常见的点播/直播视频协议,因此这种方式的应用范围不够广泛。
发明内容
本申请的目的在于提供一种视频缓存方法及播放器,能够在节省系统成本的同时,适用于HLS视频协议。
为实现上述目的,本申请一方面提供一种视频缓存方法,所述方法包括:基于目标视频的视频标识,判断是否对所述目标视频进行缓存;若判定对所述目标视频进行缓存,获取指定缓存文件,并从所述指定缓存文件中读取所述目标视频的缓存索引信息;在播放所述目标视频时,根据当前的播放进度,判断读取的所述缓存索引信息中是否存在与所述当前的播放进度相匹配的目标索引信息;若存在,从所述指定缓存文件中获取所述目标索引信息指向的视频数据,并播放所述视频数据表征的视频片段;若不存在,根据所述视频标识下载所述当前的播放进度对应的视频片段;将下载的所述视频片段写入所述指定缓存文件中,并基于下载的所述视频片段,更新所述目标视频的缓存索引信息,并播放下载的所述视频片段。
为实现上述目的,本申请另一方面还提供一种播放器,所述播放器包括播放系统,所述播放系统包括:缓存判断单元,用于基于目标视频的视频标识,判断是否对所述目标视频进行缓存;缓存索引信息读取单元,用于若判定对所述目标视频进行缓存,获取指定缓存文件,并从所述指定缓存文件中读取所述目标视频的缓存索引信息;索引信息匹配单元,用于在播放所述目标视频时,根据当前的播放进度,判断读取的所述缓存索引信息中是否存在与所述当前的播放进度相匹配的目标索引信息;缓存读写单元,用于若存在,从所述指定缓存文件中获取所述目标索引信息指向的视频数据,并播放所述视频数据表征的视频片段;若不存在,根据所述视频标识下载所述当前的播放进度对应的视频片段;将下载的所述视频片段写入所述指定缓存文件中,并基于下载的所述视频片段,更新所述目标视频的缓存索引信息,并播放下载的所述视频片段。
由上可见,本申请提供的技术方案,可以对现有的FFmpeg协议进行扩展,从而实现视频缓存的过程。具体地,可以预先在目标视频的视频标识中添加用于判断是否进行视频缓存的指定字段。当播放器获取到目标视频的视频标识后,便可以根据其中是否包含该指定字段,从而判断是否需要对该目标视频进行缓存。如果需要进行缓存,则可以在本地获取指定缓存文件,该指定缓存文件中可以存储已缓存的视频数据以及指向各个已缓存的视频数据的缓存索引信息。在获取了所述指定缓存文件之后,便可以从该指定缓存文件中读取所述目标视频的缓存索引信息。然后可以根据目标视频当前的播放进度,判断读取的所述缓存索引信息中是否存在与所述当前的播放进度相匹配的目标索引信息。如果存在,则表示当前的播放进度对应的视频片段已经在本地缓存,那么可以直接从所述指定缓存文件中获取所述目标索引信息指向的视频数据,并播放所述视频数据表征的视频片段。如果不存在,则表示本地目前没有缓存对应的视频片段,此时,可以根据目标视频的视频标识,从存储目标视频的服务器处下载该当前的播放进度对应的视频片段。然后,可以将下载的视频片段写入上述的指定缓存文件中,同时还可以更新所述目标视频的缓存索引信息,从而完成对视频片段的缓存过程。由上可见,本申请提供的技术方案,无需额外增设代理服务器,从而节省了整体系统的成本。此外,由于是在FFmpeg协议的基础上进行扩展的,因此能够支持HLS协议,从而具备较广的应用范围。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施方式中的视频缓存方法步骤图;
图2是本发明实施方式中视频缓存方法的流程示意图;
图3是本发明实施方式中指定缓存文件的数据示意图;
图4是本发明实施方式中播放系统的功能模块图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例一
本申请提供一种视频缓存方法,该方法可以应用于支持FFmpeg协议的播放器中。请参阅图1和图2,所述视频缓存方法可以包括以下步骤。
S1:基于目标视频的视频标识,判断是否对所述目标视频进行缓存。
在本实施方式中,可以对现有的FFmpeg协议进行扩展,从而实现视频缓存的功能。具体地,可以通过在原有的视频URL的基础上,添加指定字段,从而通过是否携带该指定字段来判断目标视频是否需要进行缓存。在实际应用中,指定字段的具体内容和格式可由技术人员自行设定,所述指定字段可以位于视频URL的指定位置处。例如,所述指定字段可以是wscache字段,该字段可以位于视频原始URL的前端,并且与视频原始URL之间通过“:”隔开。
在本实施方式中,当用户想要观看目标视频时,播放器便可以获取到该目标视频的视频标识,所述视频标识中可以包含所述目标视频的URL。此外,如果当前开启了视频缓存功能,那么在生成目标视频的视频标识时,可以自动在该目标视频的URL的指定位置处添加指定字段。这样,播放器获取到所述目标视频的视频标识之后,可以判断所述目标视频的视频标识中是否包含位于指定位置的指定字段,若包含,则可以判定需要对所述目标视频进行缓存。若不包含,则表示可以按照现有的FFmpeg的处理方式来获取视频数据,无需对所述目标视频进行缓存。
S3:若判定对所述目标视频进行缓存,获取指定缓存文件,并从所述指定缓存文件中读取所述目标视频的缓存索引信息。
在本实施方式中,播放器中播放的视频的缓存数据可以存储于本地的指定缓存文件中。因此,若判定当前需要对所述目标视频进行缓存,则可以获取本地存储的所述指定缓存文件。在所述指定缓存文件中,可以存储各个视频已缓存的视频数据,所述视频数据可以按照视频片段进行划分。此外,所述指定缓存文件中还可以包括缓存索引信息,其中,已缓存的各个视频片段均可以具备各自的缓存索引信息,该缓存索引信息可以作为查询条件,在所述指定缓存文件中查询到对应的视频片段。
在本实施方式中,所述缓存索引信息在所述指定缓存文件中可以通过链表的方式进行存储。请参阅图3,所述缓存索引信息中通常可以包括视频片段对应的视频标识、视频片段的播放进度、视频片段的数据量以及视频片段在指定缓存文件中的起始存储位置。
其中,视频片段对应的视频标识可以是该视频片段所处视频的URL,也可以是对该URL进行加密处理后的字符串。例如,视频片段对应的视频标识可以是对视频的URL进行MD5处理后的结果。
所述视频片段的播放进度,可以是该视频片段的起始播放位置在原始视频中对应的时间节点。
所述视频片段在所述指定缓存文件中的起始存储位置,也就是该视频片段在指定缓存文件中对应的起始偏移量(offset),通过该起始存储位置和视频片段的数据量,从而可以在指定缓存文件中确定出该视频片段所对应的存储区间。
在本实施方式中,当需要对所述目标视频进行缓存时,在获取到本地的指定缓存文件之后,可以读取其中的索引信息链表,然后可以根据该目标视频的视频标识,从读取的链表中查询出具备所述目标视频的视频标识的缓存索引信息,读取出的该缓存索引信息便可以作为所述目标视频的缓存索引信息。
在一个实施方式中,为了提高后续数据查询的效率,可以针对读取到的所述目标视频的缓存索引信息,单独创建所述目标视频的缓存索引树。后续便可以基于创建的该缓存索引树,查询所述目标视频的缓存索引信息。
需要说明的是,若无法在本地获取到所述指定缓存文件,则表明当前在本地还不具备视频的缓存数据,此时,可以按照预先设定的路径,在该路径下创建所述指定缓存文件。后续的缓存数据的读取和写入便可以基于创建的该指定缓存文件进行。
S5:在播放所述目标视频时,根据当前的播放进度,判断读取的所述缓存索引信息中是否存在与所述当前的播放进度相匹配的目标索引信息。
在本实施方式中,在创建了所述目标视频的缓存索引树之后,可以将所述指定字段从所述目标视频的视频标识中去除,从而得到该目标视频的原始URL,基于该原始URL,便可以与存储所述目标视频的服务器建立网络连接。
在本实施方式中,在与存储所述目标视频的服务器建立网络连接之后,播放器便可以开始播放所述目标视频。在播放所述目标视频时,若没有开启视频缓存功能,则可以直接根据建立的网络连接,从上述的服务器中下载目标视频的视频数据,并播放所述目标视频。在实际应用中,目标视频可以按照视频片段进行划分,播放器在从上述的服务器中下载所述目标视频时,可以下载当前的播放进度对应的视频片段并进行播放。若当前开启了视频缓存功能,播放器则可以优先从本地的所述指定缓存文件中查询,是否已经缓存了待播放的视频片段。
具体地,播放器可以记录该目标视频当前的播放进度,该当前的播放进度可以是目标视频正常播放的进度,也可以是用户的快进或者快退操作产生的进度。在记录了当前的播放进度之后,播放器可以在创建的所述目标视频的索引树中查询是否存在与所述当前的播放进度相匹配的目标索引信息。具体地,播放器可以将目标视频的播放进度,自动转换为所述目标视频中对应数据的存储位置。
举例来说,目标视频的总时长为10分钟,总数据量为100MB,那么目标视频最初的播放进度是0分钟,对应的可以是数据量为0的存储位置。播放进度每过1分钟,播放的数据量便会增长10MB,那么第1分钟的播放进度对应的可以是数据量为10MB的存储位置。播放器可以自动实现由播放进度到数据的存储位置之间的转换。这样,由于所述目标视频的缓存索引信息中包括已缓存的视频片段的数据量以及所述已缓存的视频片段的起始播放进度,因此播放器可以基于该目标视频的缓存索引信息,将所述已缓存的视频片段的起始播放进度转换为所述已缓存的视频片段在所述目标视频中的存储位置,并基于转换得到的所述存储位置和所述已缓存的视频片段的数据量,确定所述已缓存的视频片段在所述目标视频中的位置区间。
例如,一个已缓存的视频片段的起始播放进度为第1分钟,播放器将该播放进度进行转换之后,可以得到数据量为10MB的存储位置,该存储位置便可以是该已缓存的视频片段在目标视频中的起始存储位置。而该已缓存的视频片段的数据量为1MB,那么便表明该已缓存的视频片段在目标视频中的位置区间为从第10MB到第11MB的区间。这样,针对所述指定缓存文件中已缓存的各个视频片段,均可以得到各自在目标视频中的位置区间。这样,针对当前的播放进度,播放器同样可以将该当前的播放进度转换为对应的目标存储位置,然后,播放器可以在已经确定出的各个位置区间中,判断该目标存储位置是否落入其中的某个位置区间。若所述目标存储位置位于其中任意一个位置区间内,则表明当前的播放进度在本地具备已缓存的视频片段,该已缓存的视频片段对应的缓存索引信息,便可以作为所述当前的播放进度相匹配的目标索引信息。相反,若所述目标存储位置位于各个所述位置区间之外,则表明该当前的播放进度并不处于本地已缓存的视频片段中,此时,可以判定读取的所述缓存索引信息中不存在与所述当前的播放进度相匹配的目标索引信息。
上述在查询相匹配的目标索引信息时,可以根据当前的播放进度,在创建的所述缓存索引树中判断是否存在与所述当前的播放进度相匹配的目标索引信息,从而提高数据的查询效率。
S7:若存在,从所述指定缓存文件中获取所述目标索引信息指向的视频数据,并播放所述视频数据表征的视频片段;若不存在,根据所述视频标识下载所述当前的播放进度对应的视频片段;将下载的所述视频片段写入所述指定缓存文件中,并基于下载的所述视频片段,更新所述目标视频的缓存索引信息,并播放下载的所述视频片段。
在本实施方式中,若根据创建的缓存索引树,查询到所述当前的播放进度相匹配的目标索引信息之后,表明该当前的播放进度对应的视频片段已经在本地缓存过了,此时,可以直接从所述指定缓存文件中获取所述目标索引信息指向的视频数据,并播放所述视频数据表征的视频片段。
其中,如图3所示,所述指定缓存文件中可以包括已缓存的视频片段以及该视频片段对应的缓存索引信息,在该缓存索引信息中,可以包括已缓存的视频片段对应的视频标识、已缓存的视频片段的播放进度、已缓存的视频片段的数据量以及已缓存的视频片段在指定缓存文件中的起始存储位置。这样,通过该起始存储位置和视频片段的数据量,从而可以在指定缓存文件中确定出已缓存的视频片段所对应的存储区间,从而可以基于所述目标索引信息,从所述指定缓存文件中获取到对应的视频数据。
在本实施方式中,若根据创建的缓存索引树查询之后,发现并不存在与当前的播放进度相匹配的缓存索引信息,则表示该当前的播放进度对应的视频片段并没有在本地缓存。此时,可以通过之前建立的网络连接,从存储所述目标视频的服务器中下载该当前的播放进度对应的视频片段。在下载了该对应的视频片段后,可以将下载的所述视频片段写入所述指定缓存文件中,并基于下载的所述视频片段,在目标视频的缓存索引信息中,添加该已下载的视频片段的缓存索引信息,从而可以更新所述目标视频的缓存索引信息。
具体地,在目标视频播放过程中,当需要更新所述目标视频的缓存索引信息时,可以在所述指定缓存文件的缓存索引信息链表中更新所述目标视频的缓存索引信息,同时,可以一并在创建的所述目标视频的缓存索引树中更新所述目标视频的缓存索引信息,从而保证链表与索引树中缓存索引信息的一致性。然而在所述目标视频停止播放时,若需要对所述目标视频的缓存索引信息进行更新,则可以仅在所述指定缓存文件的缓存索引信息链表中更新所述目标视频的缓存索引信息,而无需在创建的索引树中更新对应的缓存索引信息。原因在于,由于该目标视频已经停止播放,缓存索引树便不会用于查询缓存索引信息,因此可以停止对该缓存索引树进行更新。后续如果再次播放所述目标视频时,可以基于更新后的所述链表,重新生成所述目标视频的缓存索引树,从而保证重新生成的缓存索引树中的缓存索引信息依然与链表中的缓存索引信息保持一致。
在一个实施方式中,所述指定缓存文件中存储的视频数据还可以具备数据量上限值。该数据量上限值可以根据当前设备的可用存储空间来确定。具体地,播放器可以读取当前设备的可用存储空间,并在预设的多个存储区间中确定所述可用存储空间所处的目标存储区间。其中,可以按照实际情况来限定各个存储区间的大小。
例如,可以按照1GB的空间间隔划分各个存储区间,从而可以得到0至1GB、1GB至2GB、2GB至3GB等这些存储区间。对于每个存储区间,可以关联一个存储阈值,随着存储区间的不断递增,关联的存储阈值也可以不断递增。例如,对于0至1GB的存储区间而言,关联的存储阈值可以是500MB,对于1GB至2GB的存储区间而言,关联的存储阈值可以是1GB,以此类推。这样,在读取了当前设备的可用存储空间之后,可以在预设的多个存储区间中确定所述可用存储空间所处的目标存储区间。例如,当前设备的可用存储空间为1.7GB,那么便位于1GB至2GB的目标存储区间中。此时,可以将所述目标存储区间关联的存储阈值作为所述数据量上限值。
在本实施方式中,在将下载的视频片段写入所述指定缓存文件时,可以计算所述指定缓存文件中已存储的视频数据的数据量与待写入的所述视频片段的数据量之和,若计算的结果大于所述数据量上限值,则表明当前的指定缓存文件已经无法容纳整个视频片段,此时,可以在所述指定缓存文件的起始位置处以覆盖已存储的视频数据的方式写入所述视频片段。这样,通过用新数据覆盖旧数据的循环存储方式,能够保证指定缓存文件的大小不会过大,从而保证了系统的稳定性。此外,本地缓存的视频数据,均可以存储于所述指定缓存文件中,这样,通过单文件的循环存储方式,可以避免产生过多的文件碎片,从而便于对缓存数据进行管理。
实施例二
请参阅图4,本申请还提供一种播放器,所述播放器包括播放系统,所述播放系统包括:
缓存判断单元,用于基于目标视频的视频标识,判断是否对所述目标视频进行缓存;
缓存索引信息读取单元,用于若判定对所述目标视频进行缓存,获取指定缓存文件,并从所述指定缓存文件中读取所述目标视频的缓存索引信息;
索引信息匹配单元,用于在播放所述目标视频时,根据当前的播放进度,判断读取的所述缓存索引信息中是否存在与所述当前的播放进度相匹配的目标索引信息;
缓存读写单元,用于若存在,从所述指定缓存文件中获取所述目标索引信息指向的视频数据,并播放所述视频数据表征的视频片段;若不存在,根据所述视频标识下载所述当前的播放进度对应的视频片段;将下载的所述视频片段写入所述指定缓存文件中,并基于下载的所述视频片段,更新所述目标视频的缓存索引信息,并播放下载的所述视频片段。
在一个实施方式中,所述缓存判断单元包括:
指定字段判断模块,用于判断所述目标视频的视频标识中是否包含位于指定位置的指定字段,若包含,判定对所述目标视频进行缓存;若不包含,判定不对所述目标视频进行缓存。
在一个实施方式中,所述缓存读写单元包括:
指定字段去除模块,用于从所述视频标识中去除位于所述指定位置处的所述指定字段,以得到所述目标视频的资源定位符;
视频片段下载模块,用于根据所述资源定位符下载所述当前的播放进度对应的视频片段。
在一个实施方式中,所述播放系统还包括:
缓存索引树创建单元,用于根据所述缓存索引信息,创建所述目标视频对应的缓存索引树;
相应地,所述索引信息匹配单元还用于在播放所述目标视频时,根据当前的播放进度,判断创建的所述缓存索引树中是否存在与所述当前的播放进度相匹配的目标索引信息。
在一个实施方式中,所述缓存索引信息在所述指定缓存文件中以链表的形式进行存储;相应地,所述缓存读写单元包括:
播放过程更新模块,用于在所述指定缓存文件的所述链表中更新所述目标视频的缓存索引信息,并在创建的所述缓存索引树中更新所述目标视频的缓存索引信息。
在一个实施方式中,所述缓存读写单元还包括:
停止播放更新模块,用于在所述目标视频停止播放时,在所述指定缓存文件的所述链表中更新所述目标视频的缓存索引信息,以使得再次播放所述目标视频时,基于更新后的所述链表,生成所述目标视频的缓存索引树。
由上可见,本申请提供的技术方案,可以对现有的FFmpeg协议进行扩展,从而实现视频缓存的过程。具体地,可以预先在目标视频的视频标识中添加用于判断是否进行视频缓存的指定字段。当播放器获取到目标视频的视频标识后,便可以根据其中是否包含该指定字段,从而判断是否需要对该目标视频进行缓存。
如果需要进行缓存,则可以在本地获取指定缓存文件,该指定缓存文件中可以存储已缓存的视频数据以及指向各个已缓存的视频数据的缓存索引信息。在获取了所述指定缓存文件之后,便可以从该指定缓存文件中读取所述目标视频的缓存索引信息。然后可以根据目标视频当前的播放进度,判断读取的所述缓存索引信息中是否存在与所述当前的播放进度相匹配的目标索引信息。如果存在,则表示当前的播放进度对应的视频片段已经在本地缓存,那么可以直接从所述指定缓存文件中获取所述目标索引信息指向的视频数据,并播放所述视频数据表征的视频片段。如果不存在,则表示本地目前没有缓存对应的视频片段,此时,可以根据目标视频的视频标识,从存储目标视频的服务器处下载该当前的播放进度对应的视频片段。然后,可以将下载的视频片段写入上述的指定缓存文件中,同时还可以更新所述目标视频的缓存索引信息,从而完成对视频片段的缓存过程。
由上可见,本申请提供的技术方案,无需额外增设代理服务器,从而节省了整体系统的成本。此外,由于是在FFmpeg协议的基础上进行扩展的,因此能够支持HLS协议,从而具备较广的应用范围。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (15)
1.一种视频缓存方法,其特征在于,所述方法应用于播放器中,所述播放器中建立有指定缓存文件,所述指定缓存文件中存储有各个视频已缓存的视频片段,以及各个视频片段对应的缓存索引信息,所述方法包括:
获取目标视频的视频标识,并判断所述视频标识中是否包含位于指定位置的指定字段,若包含所述指定字段,则获取所述指定缓存文件,并在所述指定缓存文件中查询具备所述视频标识的缓存索引信息,以获取所述目标视频的缓存索引信息;
根据所述目标视频的缓存索引信息,在所述指定缓存文件中查询所述目标视频已缓存的各个视频片段,并根据所述目标视频的缓存索引信息中包含的已缓存的视频片段的数据量,以及所述已缓存的视频片段的起始存储位置,计算所述目标视频已缓存的各个视频片段各自在所述目标视频中的位置区间;
将所述目标视频当前的播放进度转换为目标存储位置,并判断所述目标存储位置是否位于任一所述位置区间内,若所述目标存储位置位于其中任意一个位置区间内,则播放所述目标存储位置所处位置区间对应的视频片段;
若所述目标存储位置并不位于其中任意一个位置区间内,则根据所述视频标识下载所述当前的播放进度对应的视频片段,将下载的所述视频片段写入所述指定缓存文件中,并基于下载的所述视频片段,更新所述目标视频的缓存索引信息,并播放下载的所述视频片段。
2.根据权利要求1所述的方法,其特征在于,判断是否对所述目标视频进行缓存包括:
判断所述目标视频的视频标识中是否包含位于指定位置的指定字段,若包含,判定对所述目标视频进行缓存;若不包含,判定不对所述目标视频进行缓存。
3.根据权利要求2所述的方法,其特征在于,根据所述视频标识下载所述当前的播放进度对应的视频片段包括:
从所述视频标识中去除位于所述指定位置处的所述指定字段,以得到所述目标视频的资源定位符;
根据所述资源定位符下载所述当前的播放进度对应的视频片段。
4.根据权利要求1所述的方法,其特征在于,所述目标视频的缓存索引信息中至少包括已缓存的视频片段的数据量以及所述已缓存的视频片段的起始播放进度;相应地,判断读取的所述缓存索引信息中是否存在与所述当前的播放进度相匹配的目标索引信息包括:
将所述已缓存的视频片段的起始播放进度转换为所述已缓存的视频片段在所述目标视频中的存储位置,并基于转换得到的所述存储位置和所述已缓存的视频片段的数据量,确定所述已缓存的视频片段在所述目标视频中的位置区间;
在所述目标视频中确定所述当前的播放进度对应的目标存储位置,若所述目标存储位置位于任一所述位置区间内,判定读取的所述缓存索引信息中存在与所述当前的播放进度相匹配的目标索引信息;若所述目标存储位置位于各个所述位置区间之外,判定读取的所述缓存索引信息中不存在与所述当前的播放进度相匹配的目标索引信息。
5.根据权利要求1所述的方法,其特征在于,在从所述指定缓存文件中读取所述目标视频的缓存索引信息之后,所述方法还包括:
根据所述缓存索引信息,创建所述目标视频对应的缓存索引树;
相应地,在播放所述目标视频时,根据当前的播放进度,判断创建的所述缓存索引树中是否存在与所述当前的播放进度相匹配的目标索引信息。
6.根据权利要求5所述的方法,其特征在于,所述缓存索引信息在所述指定缓存文件中以链表的形式进行存储;相应地,更新所述目标视频的缓存索引信息包括:
在所述指定缓存文件的所述链表中更新所述目标视频的缓存索引信息,并在创建的所述缓存索引树中更新所述目标视频的缓存索引信息。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
在所述目标视频停止播放时,在所述指定缓存文件的所述链表中更新所述目标视频的缓存索引信息,以使得再次播放所述目标视频时,基于更新后的所述链表,生成所述目标视频的缓存索引树。
8.根据权利要求1所述的方法,其特征在于,所述指定缓存文件中存储的视频数据具备数据量上限值;相应地,将下载的所述视频片段写入所述指定缓存文件中包括:
计算所述指定缓存文件中已存储的视频数据的数据量与待写入的所述视频片段的数据量之和,若计算的结果大于所述数据量上限值,在所述指定缓存文件的起始位置处以覆盖已存储的视频数据的方式写入所述视频片段。
9.根据权利要求8所述的方法,其特征在于,所述数据量上限值按照以下方式确定:
读取当前设备的可用存储空间,并在预设的多个存储区间中确定所述可用存储空间所处的目标存储区间,并将所述目标存储区间关联的存储阈值作为所述数据量上限值。
10.一种播放器,其特征在于,所述播放器中建立有指定缓存文件,所述指定缓存文件中存储有各个视频已缓存的视频片段,以及各个视频片段对应的缓存索引信息,所述播放器包括播放系统,所述播放系统包括:
缓存判断单元,用于获取目标视频的视频标识,并判断所述视频标识中是否包含位于指定位置的指定字段,以判断是否对所述目标视频进行缓存;
缓存索引信息读取单元,用于若判定对所述目标视频进行缓存,获取所述指定缓存文件,并在所述指定缓存文件中查询具备所述视频标识的缓存索引信息,以获取所述目标视频的缓存索引信息;
索引信息匹配单元,用于根据所述目标视频的缓存索引信息,在所述指定缓存文件中查询所述目标视频已缓存的各个视频片段,并根据所述目标视频的缓存索引信息中包含的已缓存的视频片段的数据量,以及所述已缓存的视频片段的起始存储位置,计算所述目标视频已缓存的各个视频片段各自在所述目标视频中的位置区间,以及将所述目标视频当前的播放进度转换为目标存储位置,并判断所述目标存储位置是否位于任一所述位置区间内;
缓存读写单元,用于若所述目标存储位置位于其中任意一个位置区间内,则播放所述目标存储位置所处位置区间对应的视频片段;若所述目标存储位置并不位于其中任意一个位置区间内,则根据所述视频标识下载所述当前的播放进度对应的视频片段,将下载的所述视频片段写入所述指定缓存文件中,并基于下载的所述视频片段,更新所述目标视频的缓存索引信息,并播放下载的所述视频片段。
11.根据权利要求10所述的播放器,其特征在于,所述缓存判断单元包括:
指定字段判断模块,用于判断所述目标视频的视频标识中是否包含位于指定位置的指定字段,若包含,判定对所述目标视频进行缓存;若不包含,判定不对所述目标视频进行缓存。
12.根据权利要求11所述的播放器,其特征在于,所述缓存读写单元包括:
指定字段去除模块,用于从所述视频标识中去除位于所述指定位置处的所述指定字段,以得到所述目标视频的资源定位符;
视频片段下载模块,用于根据所述资源定位符下载所述当前的播放进度对应的视频片段。
13.根据权利要求10所述的播放器,其特征在于,所述播放系统还包括:
缓存索引树创建单元,用于根据所述缓存索引信息,创建所述目标视频对应的缓存索引树;
相应地,所述索引信息匹配单元还用于在播放所述目标视频时,根据当前的播放进度,判断创建的所述缓存索引树中是否存在与所述当前的播放进度相匹配的目标索引信息。
14.根据权利要求13所述的播放器,其特征在于,所述缓存索引信息在所述指定缓存文件中以链表的形式进行存储;相应地,所述缓存读写单元包括:
播放过程更新模块,用于在所述指定缓存文件的所述链表中更新所述目标视频的缓存索引信息,并在创建的所述缓存索引树中更新所述目标视频的缓存索引信息。
15.根据权利要求14所述的播放器,其特征在于,所述缓存读写单元还包括:
停止播放更新模块,用于在所述目标视频停止播放时,在所述指定缓存文件的所述链表中更新所述目标视频的缓存索引信息,以使得再次播放所述目标视频时,基于更新后的所述链表,生成所述目标视频的缓存索引树。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810905039.6A CN108965910B (zh) | 2018-08-09 | 2018-08-09 | 一种视频缓存方法及播放器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810905039.6A CN108965910B (zh) | 2018-08-09 | 2018-08-09 | 一种视频缓存方法及播放器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108965910A CN108965910A (zh) | 2018-12-07 |
CN108965910B true CN108965910B (zh) | 2022-05-10 |
Family
ID=64468674
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810905039.6A Active CN108965910B (zh) | 2018-08-09 | 2018-08-09 | 一种视频缓存方法及播放器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108965910B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110337037A (zh) * | 2019-06-27 | 2019-10-15 | 深圳Tcl数字技术有限公司 | 软件升级方法、装置、智能电视及存储介质 |
CN110868643B (zh) * | 2019-11-21 | 2022-04-26 | 郑州阿帕斯科技有限公司 | 一种视频下载进度的确定方法和装置 |
CN113163226B (zh) * | 2021-03-26 | 2023-04-07 | 维沃移动通信有限公司 | 媒体文件的播放方法、装置、电子设备、服务器和介质 |
CN114143577B (zh) * | 2021-11-26 | 2023-10-24 | 中电信数智科技有限公司 | 一种视频获取方法及系统 |
CN114125509B (zh) * | 2021-11-30 | 2024-01-19 | 深圳Tcl新技术有限公司 | 一种视频播放方法、装置、电子设备和存储介质 |
CN114257879B (zh) * | 2021-12-17 | 2023-05-12 | 深圳市瑞云科技有限公司 | 一种播放视频的方法及系统 |
CN114051152A (zh) * | 2022-01-17 | 2022-02-15 | 飞狐信息技术(天津)有限公司 | 视频播放方法及装置、存储介质及电子设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101075241A (zh) * | 2006-12-26 | 2007-11-21 | 腾讯科技(深圳)有限公司 | 缓存处理方法以及缓存处理系统 |
CN101917388A (zh) * | 2009-12-17 | 2010-12-15 | 新奥特(北京)视频技术有限公司 | 一种流媒体数据存储方法及装置 |
CN102075792A (zh) * | 2010-12-23 | 2011-05-25 | 华为技术有限公司 | 视频文件播放方法及系统、用户端设备、服务器设备 |
CN105120321A (zh) * | 2015-08-21 | 2015-12-02 | 北京佳讯飞鸿电气股份有限公司 | 一种视频搜索方法、视频存储方法和相关装置 |
CN105357544A (zh) * | 2015-10-29 | 2016-02-24 | 浪潮软件集团有限公司 | 一种基于hls的多媒体文件处理方法及服务器 |
CN105812833A (zh) * | 2016-04-07 | 2016-07-27 | 网宿科技股份有限公司 | 文件处理方法和装置 |
CN108156474A (zh) * | 2017-12-29 | 2018-06-12 | 北京搜狐新媒体信息技术有限公司 | 一种视频播放方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007115293A (ja) * | 2005-10-17 | 2007-05-10 | Toshiba Corp | 情報記憶媒体、プログラム、情報再生方法、情報再生装置、データ転送方法、及びデータ処理方法 |
CN101217638B (zh) * | 2007-12-28 | 2012-10-24 | 深圳市迅雷网络技术有限公司 | 视频文件分段下载的方法、系统及装置 |
CA2803026C (en) * | 2009-03-23 | 2014-06-03 | Azuki Systems, Inc. | Method and system for efficient streaming video dynamic rate adaptation |
US9961381B2 (en) * | 2016-08-18 | 2018-05-01 | Google Llc | Reducing latency in presenting digital videos |
-
2018
- 2018-08-09 CN CN201810905039.6A patent/CN108965910B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101075241A (zh) * | 2006-12-26 | 2007-11-21 | 腾讯科技(深圳)有限公司 | 缓存处理方法以及缓存处理系统 |
CN101917388A (zh) * | 2009-12-17 | 2010-12-15 | 新奥特(北京)视频技术有限公司 | 一种流媒体数据存储方法及装置 |
CN102075792A (zh) * | 2010-12-23 | 2011-05-25 | 华为技术有限公司 | 视频文件播放方法及系统、用户端设备、服务器设备 |
CN105120321A (zh) * | 2015-08-21 | 2015-12-02 | 北京佳讯飞鸿电气股份有限公司 | 一种视频搜索方法、视频存储方法和相关装置 |
CN105357544A (zh) * | 2015-10-29 | 2016-02-24 | 浪潮软件集团有限公司 | 一种基于hls的多媒体文件处理方法及服务器 |
CN105812833A (zh) * | 2016-04-07 | 2016-07-27 | 网宿科技股份有限公司 | 文件处理方法和装置 |
CN108156474A (zh) * | 2017-12-29 | 2018-06-12 | 北京搜狐新媒体信息技术有限公司 | 一种视频播放方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108965910A (zh) | 2018-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108965910B (zh) | 一种视频缓存方法及播放器 | |
JP4944484B2 (ja) | 再生装置、再生方法及びプログラム | |
CN105339922A (zh) | 个人过顶网络视频记录器 | |
RU2268484C2 (ru) | Система и способ обновления данных интерактивной переписки в сети проигрывателей интерактивных дисков | |
JPWO2005033952A1 (ja) | 情報再生装置および方法、並びにプログラム | |
CN103686455A (zh) | 一种基于hls协议的视频播放方法和装置 | |
JP2003219344A (ja) | 通信網を利用した対話形光ディスク再生方法 | |
EP2897060B1 (en) | Subtitle processing method, device and system, and storage medium | |
CN101527736A (zh) | 分布式文件系统中业务内容处理、更新方法与装置 | |
KR101742419B1 (ko) | 영상 재생 제어 프로그램, 영상 재생 제어 방법, 영상 배신 서버, 송신 프로그램 및 송신 방법 | |
US20170094338A1 (en) | Information processing apparatus and delivery method | |
CN103051977A (zh) | 一种处理p2p缓存数据的方法 | |
JP2009182369A (ja) | テレビ番組録画再生装置、テレビ番組録画再生方法、及びテレビ番組録画再生装置を動作させるプログラム | |
KR101950997B1 (ko) | 컨텐츠 태그를 이용한 컨텐츠 관리 방법 및 그 장치 | |
JP2006127574A5 (zh) | ||
CN101390166B (zh) | 一种光盘播放方法及装置 | |
JP2011124940A (ja) | 配信システム、ノード装置、情報処理装置、ノードプログラム、及び広告コンテンツ再生方法 | |
US20170070565A1 (en) | Information device | |
JP2012124748A (ja) | ネットワークシステム、サーバ、再生装置及びコンテンツ再生方法 | |
JP3865139B2 (ja) | ネットワークavシステム | |
JP5412924B2 (ja) | ノード装置、ノード処理プログラム及びコンテンツデータ削除方法 | |
JP6080781B2 (ja) | 情報再生システム、情報再生方法、及び情報再生装置 | |
JP2008109188A (ja) | コンテンツ配信システム、ピア及びセンタサーバ | |
JP5321863B2 (ja) | コンテンツキャッシュ装置、コンテンツキャッシュ方法およびコンピュータプログラム | |
CN112866409B (zh) | 基于对象存储分片上传的对象传送及收集方法、终端设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |