视频缓存文件的封装方法和系统的制作方法

文档序号:10539510阅读:264来源:国知局
视频缓存文件的封装方法和系统的制作方法
【专利摘要】本发明实施例提供一种视频缓存文件封装方法和系统,所述方法包括根据原视频文件的元数据和与所述原视频文件相应的辅助转码数据形成索引区,根据原视频文件的部分帧数据形成数据区,其中,所述数据区位于所述索引区之后,以及通过封装文件访问函数将所述索引区和所述数据区封装为视频缓存文件。此外,提供了封装的视频缓存文件系统,通过提供的视频缓存文件封装方法和系统,为系统用户尤其是编程人员提供完全相同于常用文件系统操作的方式,使其不必关心文件具体的实现逻辑,减少文件调用的出错概率,降低开发难度并提高代码的可维护性,极大地方便了编程人员的使用,有效提高了开发效率。
【专利说明】
视频缓存文件的封装方法和系统
技术领域
[0001]本发明实施例涉及网络技术领域,尤其涉及一种视频缓存文件的封装方法和系统。
【背景技术】
[0002]随着互联网技术的发展,通过互联网获得的丰富的综合性的网络视频资源已变得十分普遍。对于提供视频资源的视频网站来讲,不仅要存储大量的视频资源,而且每天要同时接受数量巨大的视频访问请求。因此,如何高效的存储视频资源以便为用户更好的提供视频服务是十分重要的。目前很多视频网站的在线视频文件采用MP4文件格式。由于Flash插件可以播放MP4视频文件,浏览器只要支持Flash就可以播放高清的MP4视频,所以MP4视频成为了目前主流的视频格式。同视频码率情况下,MP4文件清晰度比较高,压缩质量很好。标准的MP4文件一般包括索引区以及数据内容区两部分。
[0003]鉴于对MP4视频文件数据需求一般比较大,视频提供网站一般会对其缓存,目前一般作法是对整个视频文件同等对待,所以缓存效果不十分理想,当用户请求视频文件时,都基于文件系统进行操作,首先打开文件头,把文件的一部分读到磁盘由服务器进行解析并将解析结果,如视频文件的MD5,视频段的开始位置和结束位置返回用户。由于解析操作在磁盘上完成,解析速度较慢,对用户使用体验不友好。另一方面,由于用户客户端很多,根据用户使用请求,一般会对MP4文件进行相应的转码,即将MP4文件转换成flV,ts等格式视频文件,转码时非常消耗CHJ资源,一般CPU消耗都在99%以上,造成转码耗时较长,用户等待时间较长。
[0004]另外,对于缓存的使用,一般直接用户为系统用户主要是系统编程人员。系统用户已经习惯于传统的文件访问方式,当系统用户需要访问缓存中的数据时,首先要了解其缓存内部的业务逻辑,相对于存储在磁盘上的文件的读写要相对麻烦,且处理时往往容易出现字节对齐错误之类的问题,使用起来不太方便友好。

【发明内容】

[0005]针对上述现有技术中存在的系统编程人员对缓存中文件使得不太方便友好的问题,本发明实施例提供一种视频缓存文件的封装方法和系统。
[0006]本发明实施例一方面提供一种视频缓存文件的封装方法,所述方法包括:
[0007]根据原视频文件的元数据和与所述原视频文件相应的辅助转码数据形成索引区,其中,所述辅助转码数据位于所述元数据之后;
[0008]根据原视频文件的部分帧数据形成数据区,其中,所述数据区位于所述索引区之后;
[0009]通过封装文件访问函数将所述索引区和所述数据区封装为视频缓存文件。
[0010]本发明实施例另一方面提供一种封装的视频缓存文件系统,所述系统包括:
[0011]索引区,所述索引区由原视频文件的元数据和与所述原视频文件相应的辅助转码数据形成,其中,所述辅助转码数据位于所述元数据之后;和
[0012]数据区,所述数据区由原视频文件的部分帧数据形成,其中,所述数据区位于所述索引区之后。
[0013]本发明实施例提供的一种视频缓存文件的封装方法和系统,为系统用户尤其是编程人员提供完全相同于常用文件系统操作的方式,使其不必关心文件具体实现逻辑,减少文件调用的出错概率,降低开发难度并提高代码的可维护性,极大地方便了编程人员的使用,有效提高了开发效率。
【附图说明】
[0014]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0015]图1为本发明视频缓存文件封装方法实施例流程图;
[0016]图2为本发明封装的视频缓存文件系统实施例结构示意图;
【具体实施方式】
[0017]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0018]如图1所示,在本发明的一实施例中,提供的视频缓存文件的封装方法包括:
[0019]SlOl,形成索引区,根据原视频文件的元数据和与所述原视频文件相应的辅助转码数据形成索引区,其中,所述辅助转码数据位于所述元数据之后;
[0020]传统对视频文件一般都会分段处理,这样会使得文件数量很多,很难管理,由于某种原因容易造成部分数据丢失,所以本实施例中所指的视频文件是指整个完整的视频文件,不进行分段处理。一般视频文件都包括索引区和数据区,其中索引区主要视频文件的元数据,数据区为视频文件的实际内容。这里,我们通过修改视频文件的索引区,即建立我们的索引区,通过在原视频文件的元数据后追加原视频文件进行转码时所需的辅助文件,与原视频文件元数据一起作为视频文件的索引区。将辅助文件追加在原视频文件的元数据之后,是为了更符合用户的使用习惯,优先读取原视频的相关头信息;
[0021]S102,形成数据区,根据原视频文件的部分帧数据形成数据区,其中,所述数据区位于所述索引区之后;
[0022]这里建立的数据区包括原视频文件的部分帧数据,所述部分帧数据为视频文件首位置的至少一个关键帧,一般为视频文件播放前三分钟的视频内容。遵循原有视频文件的基本结构,将数据区位于索引区之后,也是为了更符合用户的使用习惯,即用户先读取视频文件的索引区。
[0023]S103,通过封装文件访问函数将所述索引区和所述数据区封装为视频缓存文件。
[0024]这样,经过封装,形成一个轻量级的视频缓存文件,其更适合于进行缓存。当系统用户尤其是编程人员需要访问视频文件时,不必关心其内容是存储在磁盘上还是内存中,忽略了其内部的存储逻辑,直接与调用通用文件系统一样访问,简化了操作,减少了操作的复杂度,极大地提高了使用的便利性。
[0025]其中,所述部分帧数据都不会太大,一般部分帧数据的大小至多为原视频文件大小的1/2,优选地,部分帧数据的大小为原视频文件大小的1/5或1/10。这样封装的视频文件系统不会太大,更适于进行缓存。
[0026]进一步地,原视频文件为mp4格式视频文件,辅助转码数据包括将mp4文件转换为ts流文件、flv等格式视频文件时生成的辅助文件,如mp4文件转码成ts流文件时所需的m3u8索引文件。
[0027]在实施例中,视频服务器只存储封装的mp4文件格式的视频文件,这样大大降低了存储,有利于其加载和传输,尤其对P2P十分有利。由于,视频服务器只存储封装的MP4格式的视频文件,鉴于客户端的多样性,所以在使用时要根据用户的请求进行实时转码操作,即将封装的mp4文件转换标准的f IV、t s以及标准的mp4视频文件格式,其它请求会根据用户特征做一些改变通过适配器适配,这就需要一些预处理信息支持,而这些信息作为辅助转码使用被封装到封装的mp4视频文件中。如通常使用时会事先将mp4文件转换成m3u8文件,其大小一般几十K,不超过1MB,将其存放在视频文件索引区,这样使用时不用再转换,虽然消耗掉了一部分存储空间,但却加快了转码时间,虽然以空间换时间,但是有效提升了用户使用体验。据统计,经过事先将转码需要的文件适当缓存后,CPU消耗不超过30%,大部分情况下都在10%上下,相比不进行缓存时实时转码CPU消耗一般在90%以上。
[0028]更进一步地,步骤S103中所述封装的文件访问函数,基于LINUX操作系统。即基于Iinux操作系统文件访问常用函数,如打开文件(open)、关闭文件(close)、写文件(write)、读文件(read)、文件偏移(I seek)等,对函数的标准接口声明不变,重新定义函数的实现。
[0029]这样封装而成的视频缓存文件对用户来说跟普通文件一样,即可以使用通用的文件访问函数对文件进行读写操作,极大便利了用户的使用。
[0030]如图2所示,根据本发明提供的视频文件的封装方法的得到的系统,所述系统包括:
[0031 ]索引区,所述索引区由原视频文件的元数据和与所述原视频文件相应的辅助转码数据形成,其中,所述辅助转码数据位于所述元数据之后;和
[0032]数据区,所述数据区由原视频文件的部分帧数据形成,其中,所述数据区位于所述索引区之后。
[0033]其中,系统中部分帧数据都不会太大,一般部分帧数据的大小至多为原视频文件大小的1/2,优选地,部分帧数据的大小为原视频文件大小的1/5或1/10。这样封装的视频文件系统不会太大,更适于进行缓存。
[0034]进一步地,系统中原视频文件为mp4格式视频文件,辅助转码数据包括将mp4文件转换为ts流文件、flv等格式视频文件时生成的辅助文件,如mp4文件转码成ts流文件时所需的m3u8索引文件。
[0035]进一步地,所述系统通过封装文件访问函数建立,基于LINUX操作系统。即基于Iinux操作系统文件访问常用函数,如打开文件(open)、关闭文件(close)、写文件(write)、读文件(read)、文件偏移(I seek)等,对函数的标准接口声明不变,重新定义函数的实现。
[0036]以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0037]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如R0M/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0038]最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
【主权项】
1.一种视频缓存文件封装方法,所述方法包括: 根据原视频文件的元数据和与所述原视频文件相应的辅助转码数据形成索引区,其中,所述辅助转码数据位于所述元数据之后; 根据原视频文件的部分帧数据形成数据区,其中,所述数据区位于所述索引区之后; 通过封装文件访问函数将所述索引区和所述数据区封装为视频缓存文件。2.根据权利要求1所述的方法,其特征在于,所述部分帧数据的大小至多为原视频文件大小的I/2。3.根据权利要求1所述的方法,其特征在于,所述原视频文件为mp4格式视频文件,所述辅助转码数据至少包括将所述原视频文件转码成TS流文件时所需的m3u8文件。4.根据权利要求1所述的系统,其特征在于,所述封装文件访问函数为基于Iinux操作系统的文件访问函数。5.一种封装的视频缓存文件系统,所述系统包括: 索引区,所述索引区由原视频文件的元数据和与所述原视频文件相应的辅助转码数据形成,其中,所述辅助转码数据位于所述元数据之后;和 数据区,所述数据区由原视频文件的部分帧数据形成,其中,所述数据区位于所述索引区之后。6.根据权利要求5所述的系统,其特征在于,所述部分帧数据的大小至多为原视频文件大小的I/2。7.根据权利要求5所述的系统,其特征在于,所述原视频文件为mp4格式视频文件,所述辅助转码数据至少包括将所述原视频文件转码成TS流文件时所需的m3u8文件。8.根据权利要求5所述的系统,其特征在于,所述系统通过基于Iinux操作系统的文件访问函数封装。
【文档编号】H04N21/4335GK105898531SQ201510888117
【公开日】2016年8月24日
【申请日】2015年12月7日
【发明人】李洪福
【申请人】乐视云计算有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1