视频切片生成方法和装置、缓存服务器与流程

文档序号:13944168阅读:557来源:国知局

本发明涉及流媒体直播点播技术领域,特别是涉及一种视频切片生成方法和装置、缓存服务器。



背景技术:

随着互联网多媒体技术的发展,在网络带宽不断增长的今天,网络视频以其便捷的访问体验、多样化的影片来源、实时的更新速度吸引了广大的用户,使得网络视频成为了用户网络生活不可或缺的重要组成部分。

相对于传统的流媒体直播点播按帧传输的方式,现在互联网各大视频网站采用了切片式的传输协议,切片式的传输方式可以很好的在HTTP协议,各种Web缓存和CDN上工作;但是各种浏览器和各种观看终端对切片格式的支持各不相同,视频服务器需要将原始视频切片成各种格式以支持各种观看终端和各种浏览器。切片成多种格式并存储浪费了大量的磁盘存储空间,每增加一种格式就占用一份原始视频大小的磁盘空间;同时切片成多种格式成倍数的占用了缓存服务器或者CDN的缓存空间,也增大了缓存服务器或者CDN回源时耗费的源视频服务器的带宽;某些现有技术将对视频的切片操作延迟到视频切片文件被请求时再执行,观看端需要哪个视频切片文件才生成该视频切片文件并存储在临时目录,这个过程只是将切片过程延后了,随着视频的大量观看,源视频服务器的磁盘占用和缓存服务器或CDN的缓存空间占用,以及回源带宽的占用问题并没有解决。

综上所述,现有的视频切片方式需要为不同的切片格式缓存不同的切片,占用资源较大。



技术实现要素:

基于此,有必要针对现有的视频切片方式需要为不同的切片格式缓存不同的切片,占用资源较大的问题,提供一种视频切片生成方法和装置、缓存服务器。

一种视频切片生成方法,包括以下步骤:接收视频切片获取请求;获取并缓存所述视频切片对应的虚拟切片信息文件和原始视频文件中对应所述视频切片的相应范围视频片段;根据所述虚拟切片信息文件对所述视频片段进行切片处理,以生成所述视频切片。

所述的视频切片生成方法,所述根据所述虚拟切片信息文件对所述视频片段进行切片处理,以生成所述视频切片的步骤包括:加载并解析所述虚拟切片信息文件;基于所述视频切片获取请求得到所述视频切片对应的切片序号和切片格式;根据所述切片序号和切片格式定位虚拟切片数据表中相应的表项;执行所述表项中的数据引用和转换命令序列,将所述视频片段转换成相应切片格式的视频切片。

所述的视频切片生成方法,所述虚拟切片信息文件中包括一个虚拟切片信息表和多个虚拟切片数据表;所述虚拟切片信息表用于记录所述原始视频文件对应的各个视频的虚拟切片的切片信息;所述多个虚拟切片数据表分别记录用于生成不同切片格式的视频切片对应的转换信息,其中一种格式对应一个虚拟切片数据表。

所述的视频切片生成方法,所述虚拟切片信息表包括若干个表项,每个表项对应一个虚拟切片的信息,所述虚拟切片的信息包括所述虚拟切片的切片序号、所述虚拟切片的切片时长、所述虚拟切片对应的原始视频文件的序号,以及所述虚拟切片中各个帧在原始视频文件中的字节范围开始点和所述虚拟切片的字节长度。

所述的视频切片生成方法,所述虚拟切片信息文件还包括索引文件内容表,用于记录各个切片格式的视频索引文件内容。

所述的视频切片生成方法,还包括以下步骤:接收视频索引文件获取请求;获取并缓存对应的虚拟切片信息文件;加载并解析所述虚拟切片信息文件,以得到相应的视频索引文件。

所述的视频切片生成方法,所述获取并缓存所述视频切片对应的虚拟切片信息文件和原始视频文件中对应所述视频切片的相应范围视频片段的步骤之前,还包括:在缓存系统中查找所述虚拟切片信息文件;若未查找到,则向视频服务器回源请求并缓存所述虚拟切片信息文件;和/或,在缓存系统中查找所述视频片段;若未查找到,则向视频服务器回源请求并缓存所述视频片段。

所述的视频切片生成方法,所述获取并缓存对应的虚拟切片信息文件的步骤之前,还包括:在缓存系统中查找所述虚拟切片信息文件;若未查找到,则向视频服务器回源请求并缓存所述虚拟切片信息文件。

所述的视频切片生成方法,所述在缓存系统中查找虚拟切片信息文件的步骤包括:基于所述视频切片获取请求或视频索引文件获取请求得到虚拟切片信息文件的路径;计算所述虚拟切片信息文件路径的哈希值;通过所述哈希值查询该虚拟切片信息文件是否存在于缓存系统中。

所述的视频切片生成方法,所述在缓存系统中查找所述视频片段的步骤包括:加载并解析所述虚拟切片信息文件;基于所述视频切片获取请求得到所述视频切片对应的切片序号和切片格式;根据所述切片序号确定所述视频切片在虚拟切片信息表中对应的表项,以及根据所述切片格式确定所述视频切片在虚拟切片数据表中对应的表项;查询所述在虚拟切片信息表中对应的表项指明的原始视频文件中的数据范围是否存在于缓存系统中。

所述的视频切片生成方法,还包括:将生成的视频切片或得到的视频索引文件响应给终端。

所述的视频切片生成方法,所述虚拟切片信息文件还包括用于记录原始视频标识信息的标识信息列表、用于对切片进行标识的切片基础序号,以及常用数据表,所述常用数据表用于定义在虚拟切片转化成实际视频切片时重复使用的数据。

一种视频切片生成装置,包括:第一接收单元,用于接收视频切片获取请求;第一获取单元,用于获取并缓存所述视频切片对应的虚拟切片信息文件和原始视频文件中对应所述视频切片的相应范围视频片段;切片生成单元,用于根据所述虚拟切片信息文件对所述视频片段进行切片处理,以生成所述视频切片。

所述的视频切片生成装置,所述切片生成单元包括:加载模块,用于加载并解析所述虚拟切片信息文件;获取模块,用于基于所述视频切片获取请求得到所述视频切片对应的切片序号和切片格式;定位模块,用于根据所述切片序号和切片格式定位虚拟切片数据表中相应的表项;转换模块,用于执行所述表项中的数据引用和转换命令序列,将所述视频片段转换成相应切片格式的视频切片。

进一步的,所述视频切片生成装置还包括:第二接收单元,用于接收视频索引文件获取请求;第二获取单元,用于获取并缓存所述视频切片对应的虚拟切片信息文件;解析单元,用于加载并解析所述虚拟切片信息文件,以得到相应格式的视频索引文件。

一种缓存服务器,用于实现任意一项所述的视频切片生成方法。

一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现任一所述视频切片生成方法的步骤。

一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现任一所述视频切片生成方法的步骤。

对比现有技术,本发明具有以下优点:

(1)多种切片格式时,缓存服务器无需从源视频服务器传输多份视频数据,节省了传输带宽;

(2)多种切片格式时,缓存服务器无需缓存多份视频数据,节省了缓存空间。

附图说明

图1为一个实施例的视频切片生成方法流程图;

图2为一个实施例的视频切片生成装置的结构框图;

图3为一个实施例的视频直播点播系统的结构示意图;

图4为一个实施例的缓存服务器响应视频索引文件的流程图;

图5为一个实施例的缓存服务器响应视频切片文件的流程图;

图6为一个实施例的虚拟切片信息文件格式示意图;

图7为一个实施例的VSD示意图。

具体实施方式

下面结合附图对本发明的技术方案进行说明。

如图1所示,本发明实施例提供一种视频切片生成方法,包括以下步骤:

S101,接收视频切片获取请求;

在本步骤中,视频切片获取请求可由请求方发送。请求方可以是视频播放终端,例如,电脑、手机、平板电脑等智能终端。在一个实施例中,所述视频切片获取请求可以是一个URL(Uniform Resource Locator,统一资源定位符),解析该URL可以获取切片序号和切片格式等信息。目标切片格式可以是HLS(HTTP Live Streaming,HTTP直播数据流),HDS(HTTP Dynamic Streaming,HTTP动态数据流),MPEG(Moving Picture Experts Group,动态图像专家组)-DASH(Dynamic Adaptive Stream over HTTP,基于HTTP的动态自适应流)等格式。原始视频文件的标识信息是用于对原始视频文件进行唯一标识的信息,一般地,可采用原始视频文件的文件名作为该标识信息。

在一个实施例中,本发明可以将请求的文件路径哈希后得到唯一标识该文件路径的密钥(key),从缓存映射表中查找key对应的文件是否已经在缓存中,存在则直接响应缓存中的副本,否则依据文件路径回源请求下载文件缓存并相应给请求方。

S102,获取并缓存所述视频切片对应的虚拟切片信息文件和原始视频文件中对应所述视频切片的相应范围视频片段;

在一个实施例中,所述虚拟切片信息文件中包括一个虚拟切片信息表和多个虚拟切片数据表,所述虚拟切片信息表用于记录所述原始视频文件对应的各个视频的虚拟切片的切片信息;所述多个虚拟切片数据表分别记录用于生成不同切片格式的视频切片对应的转换信息,其中一种格式对应一个虚拟切片数据表。

进一步地,所述虚拟切片信息文件中包括一个虚拟切片信息表(记为VST)和多个虚拟切片数据表(记为VSDT),其中,所述虚拟切片信息表包括若干个表项,每个表项对应一个虚拟切片的信息(记为VSI),所述虚拟切片的信息包括所述虚拟切片的切片序号(记为VSN)、所述虚拟切片的切片时长(记为VSDUR)、所述虚拟切片对应的原始视频文件的序号(记为OFN),以及所述虚拟切片中各个帧在原始视频文件中的字节范围开始点(记为OFNS)和所述虚拟切片的字节长度(记为OFNL)。在一个实施例中,逻辑上一个VSI为一个(VSN,VSDUR,OFN,OFNS,OFNL)五元组;依据VSI在VST中的排列顺序,记为VSIDX,从0开始;切片序号VSN本身不记录在VSI中,可以根据切片基础序号VSBN加上所述VSIDX得到。

虚拟切片数据表的每个表项记为VSD,在一个实施例中,每个VSD都是一串二进制字节,是高度紧凑表示的切片数据,每个VSD对应于VST中对应顺序的虚拟切片;VSD本质上是外部数据引用和转换命令序列,引用的外部数据包括常用数据表(记为CDT)中的常用数据以及对应OFN文件范围内的数据;通过丰富的数据引用和转换命令,可以用很小的VSD表达整个视频切片的数据。

因此,可以回源请求虚拟切片信息文件,并根据虚拟切片信息文件中的虚拟切片信息表和虚拟切片数据表执行后续操作。

在一个实施例中,所述虚拟切片信息文件还包括用于记录原始视频标识信息的标识信息列表、用于对切片进行标识的切片基础序号,以及常用数据表,所述常用数据表用于定义在虚拟切片转化成实际视频切片时重复使用的数据。其中,标识信息列表可选地为记录原始视频文件名的原始视频文件名列表(记为OFT),每个原始视频文件按在原始视频文件名列表中的顺序序号进行标识,这个序号记为OFN,OFN从0开始计数,第一个为0,第二个为1依次类推。切片基础序号(记为VSBN)是索引文件中的第一切片的序号,后续的切片序号依次+1;当太旧的切片文件需要从索引列表中移除时,切片基础序号需要更新到第一个未被移除的切片的序号,整个直播过程中,切片序号要连续递增,每个切片序号要唯一标识一个视频切片。常用数据表(记为CDT),每个表项记为CDI,CDI为一串字节,CDI由在CDT中顺序序号标识,记为CDIDX,从0开始。

在进一步的实施例中,所述虚拟切片信息文件还包括索引文件内容表(记为INDEX_FILE_TABLE),用于记录各个切片格式的视频索引文件内容。每个切片格式可定义一个格式代码,例如,HLS格式的格式代码为‘HLS’,HDS格式的格式代码为‘HDS’,MPEG-DASH格式的格式代码为‘DASH’。每个格式代码可关联一串字节,字节的内容为对应格式的视频索引文件的内容;视频切片文件名格式为<虚拟切片信息文件名>.VSN.格式扩展名,视频索引文件的文件名格式为<虚拟切片信息文件名>.格式扩展名。以video.mp4.vseg为例,HLS的索引文件名为video.mp4.vseg.m3u8,HLS的切片文件名为video.mp4.vseg.1.ts,HDS的索引文件名为video.mp4.vseg.f4m,HDS的切片文件名为video.mp4.vseg.1.f4f,MPEG-DASH的索引文件名为video.mp4.vseg.mpd,MPEG-DASH的切片文件名为video.mp4.vseg.1.m4s。这些文件实际上不存在,是虚拟的文件。

进一步地,本发明还可以接收视频索引文件获取请求;获取并缓存对应的虚拟切片信息文件;加载并解析所述虚拟切片信息文件,以得到相应的视频索引文件。在获取并缓存对应的虚拟切片信息文件的步骤之前,还可以在缓存系统中查找所述虚拟切片信息文件;若未查找到,则回源请求并缓存所述虚拟切片信息文件。例如,在接收到<文件名>.vseg.m3u8,<文件名>.vseg.mpd或者<文件名>.vseg.f4m的文件请求时,可将URI中的文件名部分替换为<文件名>.vseg,计算新的URI的key,从缓存系统中检查所述key的缓存文件是否存在,如果不存在则回源请求并缓存所述.vseg文件,进而加载所述.vseg文件将INDEX_FILE_TABLE中对应格式的索引文件内容响应给请求方。

在获取并缓存所述视频切片对应的虚拟切片信息文件和原始视频文件中对应所述视频切片的相应范围视频片段的步骤之前,可以在缓存系统中查找所述虚拟切片信息文件;若未查找到,则回源请求并缓存所述虚拟切片信息文件。

在获取并缓存所述视频切片对应的虚拟切片信息文件和原始视频文件中对应所述视频切片的相应范围视频片段的步骤之前,还可以在缓存系统中查找所述视频片段;若未查找到,则回源请求并缓存所述视频片段。

进一步地,在接收到视频索引文件获取请求之后,在获取并缓存对应的虚拟切片信息文件之前,还可以在缓存系统中查找所述虚拟切片信息文件;若未查找到,则回源请求并缓存所述虚拟切片信息文件。

进一步地,在缓存系统中查找虚拟切片信息文件时,可以基于所述视频切片获取请求或视频索引文件获取请求得到虚拟切片信息文件的路径;计算所述虚拟切片信息文件路径的哈希值;通过所述哈希值查询该虚拟切片信息文件是否存在于缓存系统中。

进一步地,在缓存系统中查找所述视频片段时,可以加载并解析所述虚拟切片信息文件;基于所述视频切片获取请求得到所述视频切片对应的切片序号和切片格式;根据所述切片序号确定所述视频切片在虚拟切片信息表中对应的表项,以及根据所述切片格式确定所述视频切片在虚拟切片数据表中对应的表项;查询所述在虚拟切片信息表中对应的表项指明的原始视频文件中的数据范围是否存在于缓存系统中。

S103,根据所述虚拟切片信息文件对所述视频片段进行切片处理,以生成所述视频切片。

在本步骤中,可以加载并解析所述虚拟切片信息文件;基于所述视频切片获取请求得到所述视频切片对应的切片序号和切片格式;根据所述切片序号和切片格式定位虚拟切片数据表中相应的表项;执行所述表项中的数据引用和转换命令序列,将所述视频片段转换成相应切片格式的视频切片。

在一个实施例中,还可以将生成的视频切片或得到的视频索引文件响应给终端。

进一步地,可以执行所述视频切片获取请求对应的虚拟切片数据表中的数据引用和转换命令序列,将所述视频切片获取请求对应的虚拟切片数据表展开,转换成对应格式的视频切片;根据所述虚拟切片信息表对[OFNS,OFNS+OFNL)范围的原始视频文件进行切片处理,并返回将所述视频切片获取请求对应的虚拟切片数据表展开的步骤,直到所述视频切片获取请求对应的虚拟切片数据表展开完毕;其中,OFNS为所请求的原始视频文件的字节范围开始点,OFNL为所请求的原始视频文件的字节长度。在加载数据时,可以通过HTTP的Range请求加载到缓存系统中,进而继续所述VSD的展开操作,直到展开完毕,将展开后的数据响应给请求方;为了提高响应速度,实现上也可以边展开VSD边响应数据给请求方。

如图2所示,本发明还提供一种视频切片生成装置,可包括:

第一接收单元201,用于接收视频切片获取请求;

在一个实施例中,视频切片获取请求可由请求方发送。请求方可以是视频播放终端,例如,电脑、手机、平板电脑等智能终端。在一个实施例中,所述视频切片获取请求可以是一个URL(Uniform Resource Locator,统一资源定位符),解析该URL可以获取切片序号和切片格式等信息。目标切片格式可以是HLS(HTTP Live Streaming,HTTP直播数据流),HDS(HTTP Dynamic Streaming,HTTP动态数据流),MPEG(Moving Picture Experts Group,动态图像专家组)-DASH(Dynamic Adaptive Stream over HTTP,基于HTTP的动态自适应流)等格式。原始视频文件的标识信息是用于对原始视频文件进行唯一标识的信息,一般地,可采用原始视频文件的文件名作为该标识信息。

在一个实施例中,本发明可以将请求的文件路径哈希后得到唯一标识该文件路径的密钥(key),从缓存映射表中查找key对应的文件是否已经在缓存中,存在则直接响应缓存中的副本,否则依据文件路径回源请求下载文件缓存并相应给请求方。

第一获取单元202,用于获取并缓存所述视频切片对应的虚拟切片信息文件和原始视频文件中对应所述视频切片的相应范围视频片段;

在一个实施例中,所述虚拟切片信息文件中包括一个虚拟切片信息表和多个虚拟切片数据表,所述虚拟切片信息表用于记录所述原始视频文件对应的各个视频的虚拟切片的切片信息;所述多个虚拟切片数据表分别记录用于生成不同切片格式的视频切片对应的转换信息,其中一种格式对应一个虚拟切片数据表。

进一步地,所述虚拟切片信息文件中包括一个虚拟切片信息表(记为VST)和多个虚拟切片数据表(记为VSDT),其中,所述虚拟切片信息表包括若干个表项,每个表项对应一个虚拟切片的信息(记为VSI),所述虚拟切片的信息包括所述虚拟切片的切片序号(记为VSN)、所述虚拟切片的切片时长(记为VSDUR)、所述虚拟切片对应的原始视频文件的序号(记为OFN),以及所述虚拟切片中各个帧在原始视频文件中的字节范围开始点(记为OFNS)和所述虚拟切片的字节长度(记为OFNL)。在一个实施例中,逻辑上一个VSI为一个(VSN,VSDUR,OFN,OFNS,OFNL)五元组;依据VSI在VST中的排列顺序,记为VSIDX,从0开始;切片序号VSN本身不记录在VSI中,可以根据切片基础序号VSBN加上所述VSIDX得到。

虚拟切片数据表的每个表项记为VSD,在一个实施例中,每个VSD都是一串二进制字节,是高度紧凑表示的切片数据,每个VSD对应于VST中对应顺序的虚拟切片;VSD本质上是外部数据引用和转换命令序列,引用的外部数据包括常用数据表(记为CDT)中的常用数据以及对应OFN文件范围内的数据;通过丰富的数据引用和转换命令,可以用很小的VSD表达整个视频切片的数据。

因此,可以回源请求虚拟切片信息文件,并根据虚拟切片信息文件中的虚拟切片信息表和虚拟切片数据表执行后续操作。

进一步地,本发明还可包括:第二接收单元,用于接收视频索引文件获取请求;第二获取单元,用于获取并缓存对应的虚拟切片信息文件;解析单元,用于加载并解析所述虚拟切片信息文件,以得到相应的视频索引文件。

进一步地,在接收到视频索引文件获取请求之后,在获取并缓存对应的虚拟切片信息文件之前,还可以在缓存系统中查找所述虚拟切片信息文件;若未查找到,则回源请求并缓存所述虚拟切片信息文件。

切片生成单元203,用于根据所述虚拟切片信息文件对所述视频片段进行切片处理,以生成所述视频切片。

在一个实施例中,本发明还可包括:加载模块,用于加载并解析所述虚拟切片信息文件;获取模块,用于基于所述视频切片获取请求得到所述视频切片对应的切片序号和切片格式;定位模块,用于根据所述切片序号和切片格式定位虚拟切片数据表中相应的表项;转换模块,用于执行所述表项中的数据引用和转换命令序列,将所述视频片段转换成相应切片格式的视频切片。

在一个实施例中,还可以将生成的视频切片或得到的视频索引文件响应给终端。

进一步地,可以执行所述视频切片获取请求对应的虚拟切片数据表中的数据引用和转换命令序列,将所述视频切片获取请求对应的虚拟切片数据表展开,转换成对应格式的视频切片;根据所述虚拟切片信息表对[OFNS,OFNS+OFNL)范围的原始视频文件进行切片处理,并返回将所述视频切片获取请求对应的虚拟切片数据表展开的步骤,直到所述视频切片获取请求对应的虚拟切片数据表展开完毕;其中,OFNS为所请求的原始视频文件的字节范围开始点,OFNL为所请求的原始视频文件的字节长度。在加载数据时,可以通过HTTP的Range请求加载到缓存系统中,进而继续所述VSD的展开操作,直到展开完毕,将展开后的数据响应给请求方;为了提高响应速度,实现上也可以边展开VSD边响应数据给请求方。

本发明的视频切片生成装置与本发明的视频切片生成方法一一对应,在上述视频切片生成方法的实施例阐述的技术特征及其有益效果均适用于视频切片生成装置的实施例中,特此声明。

如图3所示,在一个实施例中,视频直播点播系统300可包括视频服务器301和缓存服务器302,其中视频服务器301与缓存服务器302进行通信,缓存服务器302与视频播放终端303进行通信。

在一个实施例中,本发明的缓存服务器302可用于实现以下步骤:

接收视频切片获取请求;

获取并缓存所述视频切片对应的虚拟切片信息文件和原始视频文件中对应所述视频切片的相应范围视频片段;

根据所述虚拟切片信息文件对所述视频片段进行切片处理,以生成所述视频切片。

视频切片获取请求可由请求方发送。请求方可以是视频播放终端,例如,电脑、手机、平板电脑等智能终端。在一个实施例中,所述视频切片获取请求可以是一个URL(Uniform Resource Locator,统一资源定位符),解析该URL可以获取切片序号和切片格式等信息。目标切片格式可以是HLS(HTTP Live Streaming,HTTP直播数据流),HDS(HTTP Dynamic Streaming,HTTP动态数据流),MPEG(Moving Picture Experts Group,动态图像专家组)-DASH(Dynamic Adaptive Stream over HTTP,基于HTTP的动态自适应流)等格式。原始视频文件的标识信息是用于对原始视频文件进行唯一标识的信息,一般地,可采用原始视频文件的文件名作为该标识信息。

在一个实施例中,本发明的缓存服务器302可以将请求的文件路径哈希后得到唯一标识该文件路径的密钥(key),从缓存映射表中查找key对应的文件是否已经在缓存中,存在则直接响应缓存中的副本,否则依据文件路径向视频服务器301回源请求下载文件缓存并相应给请求方。

在一个实施例中,所述虚拟切片信息文件中包括一个虚拟切片信息表和多个虚拟切片数据表,所述虚拟切片信息表用于记录所述原始视频文件对应的各个视频的虚拟切片的切片信息;所述多个虚拟切片数据表分别记录用于生成不同切片格式的视频切片对应的转换信息,其中一种格式对应一个虚拟切片数据表。

进一步地,所述虚拟切片信息文件中包括一个虚拟切片信息表(记为VST)和多个虚拟切片数据表(记为VSDT),其中,所述虚拟切片信息表包括若干个表项,每个表项对应一个虚拟切片的信息(记为VSI),所述虚拟切片的信息包括所述虚拟切片的切片序号(记为VSN)、所述虚拟切片的切片时长(记为VSDUR)、所述虚拟切片对应的原始视频文件的序号(记为OFN),以及所述虚拟切片中各个帧在原始视频文件中的字节范围开始点(记为OFNS)和所述虚拟切片的字节长度(记为OFNL)。在一个实施例中,逻辑上一个VSI为一个(VSN,VSDUR,OFN,OFNS,OFNL)五元组;依据VSI在VST中的排列顺序,记为VSIDX,从0开始;切片序号VSN本身不记录在VSI中,可以根据切片基础序号VSBN加上所述VSIDX得到。

虚拟切片数据表的每个表项记为VSD,在一个实施例中,每个VSD都是一串二进制字节,是高度紧凑表示的切片数据,每个VSD对应于VST中对应顺序的虚拟切片;VSD本质上是外部数据引用和转换命令序列,引用的外部数据包括常用数据表(记为CDT)中的常用数据以及对应OFN文件范围内的数据;通过丰富的数据引用和转换命令,可以用很小的VSD表达整个视频切片的数据。

因此,缓存服务器302可以回源请求虚拟切片信息文件,并根据虚拟切片信息文件中的虚拟切片信息表和虚拟切片数据表执行后续操作。

在一个实施例中,所述虚拟切片信息文件还包括用于记录原始视频标识信息的标识信息列表、用于对切片进行标识的切片基础序号,以及常用数据表,所述常用数据表用于定义在虚拟切片转化成实际视频切片时重复使用的数据。其中,标识信息列表可选地为记录原始视频文件名的原始视频文件名列表(记为OFT),每个原始视频文件按在原始视频文件名列表中的顺序序号进行标识,这个序号记为OFN,OFN从0开始计数,第一个为0,第二个为1依次类推。切片基础序号(记为VSBN)是索引文件中的第一切片的序号,后续的切片序号依次+1;当太旧的切片文件需要从索引列表中移除时,切片基础序号需要更新到第一个未被移除的切片的序号,整个直播过程中,切片序号要连续递增,每个切片序号要唯一标识一个视频切片。常用数据表(记为CDT),每个表项记为CDI,CDI为一串字节,CDI由在CDT中顺序序号标识,记为CDIDX,从0开始。

在进一步的实施例中,所述虚拟切片信息文件还包括索引文件内容表(记为INDEX_FILE_TABLE),用于记录各个切片格式的视频索引文件内容。每个切片格式可定义一个格式代码,例如,HLS格式的格式代码为‘HLS’,HDS格式的格式代码为‘HDS’,MPEG-DASH格式的格式代码为‘DASH’。每个格式代码可关联一串字节,字节的内容为对应格式的视频索引文件的内容;视频切片文件名格式为<虚拟切片信息文件名>.VSN.格式扩展名,视频索引文件的文件名格式为<虚拟切片信息文件名>.格式扩展名。以video.mp4.vseg为例,HLS的索引文件名为video.mp4.vseg.m3u8,HLS的切片文件名为video.mp4.vseg.1.ts,HDS的索引文件名为video.mp4.vseg.f4m,HDS的切片文件名为video.mp4.vseg.1.f4f,MPEG-DASH的索引文件名为video.mp4.vseg.mpd,MPEG-DASH的切片文件名为video.mp4.vseg.1.m4s。这些文件实际上不存在,是虚拟的文件。

进一步地,本发明的缓存服务器302还可以接收视频索引文件获取请求;获取并缓存对应的虚拟切片信息文件;加载并解析所述虚拟切片信息文件,以得到相应的视频索引文件。在获取并缓存对应的虚拟切片信息文件的步骤之前,缓存服务器302还可以在缓存系统中查找所述虚拟切片信息文件;若未查找到,则向视频服务器301回源请求并缓存所述虚拟切片信息文件。例如,在接收到<文件名>.vseg.m3u8,<文件名>.vseg.mpd或者<文件名>.vseg.f4m的文件请求时,可将URI中的文件名部分替换为<文件名>.vseg,计算新的URI的key,从缓存系统中检查所述key的缓存文件是否存在,如果不存在则回源请求并缓存所述.vseg文件,进而加载所述.vseg文件将INDEX_FILE_TABLE中对应格式的索引文件内容响应给请求方。

在获取并缓存所述视频切片对应的虚拟切片信息文件和原始视频文件中对应所述视频切片的相应范围视频片段的步骤之前,缓存服务器302可以在缓存系统中查找所述虚拟切片信息文件;若未查找到,则向视频服务器301回源请求并缓存所述虚拟切片信息文件。

在获取并缓存所述视频切片对应的虚拟切片信息文件和原始视频文件中对应所述视频切片的相应范围视频片段的步骤之前,缓存服务器302还可以在缓存系统中查找所述视频片段;若未查找到,则回源请求并缓存所述视频片段。

进一步地,在接收到视频索引文件获取请求之后,在获取并缓存对应的虚拟切片信息文件之前,缓存服务器302还可以在缓存系统中查找所述虚拟切片信息文件;若未查找到,则回源请求并缓存所述虚拟切片信息文件。

进一步地,缓存服务器302在缓存系统中查找虚拟切片信息文件时,可以基于所述视频切片获取请求或视频索引文件获取请求得到虚拟切片信息文件的路径;计算所述虚拟切片信息文件路径的哈希值;通过所述哈希值查询该虚拟切片信息文件是否存在于缓存系统中。

进一步地,缓存服务器302在缓存系统中查找所述视频片段时,可以加载并解析所述虚拟切片信息文件;基于所述视频切片获取请求得到所述视频切片对应的切片序号和切片格式;根据所述切片序号确定所述视频切片在虚拟切片信息表中对应的表项,以及根据所述切片格式确定所述视频切片在虚拟切片数据表中对应的表项;查询所述在虚拟切片信息表中对应的表项指明的原始视频文件中的数据范围是否存在于缓存系统中。

在一个实施例中,缓存服务器302可以加载并解析所述虚拟切片信息文件;基于所述视频切片获取请求得到所述视频切片对应的切片序号和切片格式;根据所述切片序号和切片格式定位虚拟切片数据表中相应的表项;执行所述表项中的数据引用和转换命令序列,将所述视频片段转换成相应切片格式的视频切片。

在一个实施例中,缓存服务器302还可以将生成的视频切片或得到的视频索引文件响应给视频播放终端303。

进一步地,缓存服务器302可以执行所述视频切片获取请求对应的虚拟切片数据表中的数据引用和转换命令序列,将所述视频切片获取请求对应的虚拟切片数据表展开,转换成对应格式的视频切片;根据所述虚拟切片信息表对[OFNS,OFNS+OFNL)范围的原始视频文件进行切片处理,并返回将所述视频切片获取请求对应的虚拟切片数据表展开的步骤,直到所述视频切片获取请求对应的虚拟切片数据表展开完毕;其中,OFNS为所请求的原始视频文件的字节范围开始点,OFNL为所请求的原始视频文件的字节长度。在加载数据时,可以通过HTTP的Range请求加载到缓存系统中,进而继续所述VSD的展开操作,直到展开完毕,将展开后的数据响应给请求方;为了提高响应速度,实现上也可以边展开VSD边响应数据给请求方。

统观整个处理过程,本发明通过虚拟切片信息文件,以数据引用的方式高度紧凑的表达了视频切片,使得无需对原始视频执行真实的切片操作,节省了存储空间;在缓存服务器上,除了额外传输和缓存了大小比原始视频小很多的虚拟切片信息文件外,对原始视频的缓存通过HTTP范围请求的方式将原始视频分段缓存到缓存系统中,而视频切片数据则通过虚拟切片信息文件结合已经缓存的原始视频分段展开还原,从而达到缓存服务器仅从源视频服务器中传输并缓存一份原始视频的目的;而采用HTTP范围请求回源的方式实现了请求方需要的视频切片才传输对应的原始视频片段,达到无需将整个原始视频完全缓存即可响应视频切片的目的。

如图4所示,是本发明一实施例的缓存服务器响应视频索引文件的流程图,包括以下步骤:

S401:观看端发起视频索引文件请求,如/video.mp4.vseg.m3u8;

S402:缓存服务器得到请求的路径,去除.m3u8得到虚拟切片信息文件的路径/video.mp4.vseg;

S403:缓存服务器计算虚拟切片信息文件路径的哈希值key,该步骤产生的key用于查询缓存系统中是否已经存在/video.mp4.vseg文件的缓存;

S404,S405:如果该文件尚未被缓存,执行回源下载操作,将/video.mp4.vseg文件从源视频服务器中下载到缓存服务器并写入缓存系统;

S406:加载并解析/video.mp4.vseg文件;

S407,S408:从所述索引文件内容表(INDEX_FILE_TABLE)中取出HLS格式的索引文件内容响应给观看端。

如图5所示,是本发明一实施例的缓存服务器响应视频切片文件的流程图,包括以下步骤:

S501:观看端发起视频切片文件请求,如/video.mp4.vseg.0.ts;

S502:缓存服务器得到虚拟切片信息文件路径,如/video.mp4.vseg;

S503:缓存服务器计算虚拟切片信息文件路径的哈希值key,该步骤产生的key用于查询缓存系统中是否已经存在/video.mp4.vseg文件的缓存;

S504,S505:如果该文件尚未被缓存,执行回源下载操作,将/video.mp4.vseg文件从源视频服务器中下载到缓存服务器并写入缓存系统;

S506:加载并解析/video.mp4.vseg文件;

S507:根据S501的切片文件路径,得知请求的是序号为0的视频切片,格式为HLS,从虚拟切片信息文件中的虚拟切片数据表VSDT中得到VSD 0,从虚拟切片信息表VST中得到VSI 0;

S508:如果VSI 0指明的原始文件video.mp4的数据范围尚未被缓存系统缓存,则执行回源操作下载/video.mp4的指定范围,此时采用HTTP协议的Range请求头;

S509:回源下载过来的/video.mp4的指定范围文件数据写入缓存系统;

S510:执行所述虚拟切片数据VSD 0的展开命令序列,将VSD 0虚拟切片转换成最终的HLS格式的视频切片数据;

S511:将转换后得到的视频切片数据响应给观看端。

图3所示的视频直播点播系统300的工作原理如下:

视频播放终端303发起对视频索引文件的下载请求和视频切片文件的下载请求;

缓存服务器302处理视频索引文件下载请求和视频切片文件的下载请求;

所述缓存服务器302会依据所请求的视频索引文件的格式和路径,如果必要(即虚拟切片信息文件未缓存)向视频服务器301请求所述虚拟切片信息文件;

所述缓存服务器302依据观看终端所请求的视频索引文件的格式,从虚拟切片信息文件中解析对应格式的索引文件内容,响应给视频播放终端303;

所述缓存服务器302会依据所请求的视频切片文件的格式和路径,如果必要(即虚拟切片信息文件未缓存)向视频服务器301请求所述虚拟切片信息文件并缓存;

所述缓存服务器302会依据所请求的视频切片文件的格式和路径以及请求的切片序号,如果必要(即所请求的视频切片序号对应的原始文件的范围未缓存)向视频服务器301请求所述原始文件的范围数据并缓存;

所述缓存服务器302依据所述切片序号,所述虚拟切片信息文件,以及所述原始文件的范围数据,将虚拟切片数据转换成所请求格式的视频切片数据并响应给视频播放终端303;

所述视频服务器301在原始视频文件完全存储到视频服务器时,执行对原始视频文件的虚拟切片操作,产生对应的虚拟切片信息文件并存储在原始视频相同目录下;

所述视频服务器301在收到对原始视频文件的范围请求时,读取原始视频文件的所述范围的数据,以HTTP 206Partial Content的响应码响应范围数据给请求方。

如图6所示,为本发明的一实施例的虚拟切片信息文件格式示意图。

虚拟切片信息文件600包含了原始文件名表(OFT)601,切片基础序号(VSBN)602,虚拟切片信息表(VST)603,常用数据表(CDT)604,索引文件内容表(INDEX_FILE_TABLE)605,虚拟切片数据表(VSDT)606。

所述原始文件名表(OFT)601记录了每个需要在切片过程中使用到的原始视频文件名,对于单一的点播视频,该表通常只有一项,对于直播则记录了所有的原始视频切片文件名。

所述切片基础序号(VSBN)602则记录了第一个切片文件的序号,对于点播,该数值通常为0,对于直播,该数值随着旧切片文件的移除,序号一直累加,直到32位无符号整数溢出则归0。

所述虚拟切片信息表(VST)603则记录每个虚拟切片的信息(VSI),包括:以毫秒为单位的切片时长(VSDUR),该虚拟切片所引用的原始文件的序号(OFN),以字节为单位的所引用的原始文件的开始点(OFNS),以字节为单位的所引用的原始文件的数据长度(OFNL)。

如图6,虚拟切片信息表(VST)403中有4个虚拟切片,虚拟切片0引用原始文件OFN 0,即video.mp4,引用的数据范围为从67252字节开始的1048576字节数据,这个范围的数据包含了所有所述虚拟切片0转化成实际视频切片时所需要的所有音视频帧的数据。

所述常用数据表(CDT)604定义了在虚拟切片转化成实际视频切片时重复使用的一些数据,起到压缩虚拟切片数据的目的;

所述索引文件内容表(INDEX_FILE_TABLE)605存储了切片后产生的索引文件内容,示例图6中605展示的是HLS格式的索引文件内容,除了HLS索引外,本发明还支持HDS和MPEG-DASH的索引文件。

所述虚拟切片数据表(VSDT)606存储了将每个虚拟切片转换成目标视频切片的命令序列和部分数据,这些命令序列定义了如何将603中VSI对应的原始文件范围内的数据转换成目标格式的视频切片。

图7为一个实施例的VSD示意图,示例了VSD 0如何将VSI 0对应的原始文件范围的数据转换成目标格式视频切片文件,示例图中目标格式为HLS协议的TS切片文件。

701为VSI 0对应到原始文件的数据范围,从字节67252开始到1115828结束;702为所述VSD 0的示例,PAT命令指示VSD转换器在当前位置需要产生一个PAT TS PACKET;PMT命令指示在当前位置需要产生一个PMT TS PACKET;MAKE_VIDEO_TS_PACKETS指示在当前位置需要将VSI 0指明的范围内偏移0,长度74312字节的视频帧转换成PES并打包成TS PACKET,转换后结果产生443个TS PACKETS;MAKE_AUDIO_TS_PACKETS指示在当前位置需要将VSI 0指明的范围内偏移74313,长度为264字节的音频帧转换成PES并打包成TS PACKET,转换后结果产生2个TS PACKETS;不断处理后续更多指令,直到VSD 0的所有指令处理完毕,产生的所有TS PACKETS即是HLS视频切片的数据。

上述视频切片生成方法和装置、缓存服务器,通过虚拟切片信息文件,以数据引用的方式高度紧凑的表达了视频切片,使得无需对原始视频执行真实的切片操作,当存在多种切片格式时,对原始视频的缓存通过HTTP范围请求的方式将原始视频分段缓存到缓存系统中,从而达到缓存服务器仅从源视频服务器中传输并缓存一份原始视频的目的,无需缓存多份视频数据,节省了缓存空间,减少了系统资源占用。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。

计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

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