一种易于p2p传输识别的大容量影视文件缓存方法

文档序号:10539333阅读:148来源:国知局
一种易于p2p传输识别的大容量影视文件缓存方法
【专利摘要】本发明公开了一种易于P2P传输识别的大容量影视文件缓存方法。本方法通过构建缓存文件,对缓存文件的写入与读取操作来实现点播过程中减少分配大空间所需的时间运算,增强点播的实时性,减少点播时分配到的空间被浪费的功能。
【专利说明】
一种易于P2P传输识别的大容量影视文件缓存方法
技术领域
[0001]本发明涉及互联网多媒体传输存贮技术领域,尤其涉及P2P网络传输高清点播系统的数据实时缓存技术方法。
【背景技术】
[0002]随着互联网多媒体技术的迅速发展及网络带宽环境的改善,随着用户对多媒体使用要求的提高,影视点播高清标准越来越高,影视码率越来越大,影视文件越来越大,高清点播缓存技术要求也更高。由于点播需要满足灵活拖动使得请求影视文件的内容偏移位置变得随机,而不是顺序递增;点播时播放器也有可能先获得影视文件末尾的索引信息然后再请求音视频数据,也使得影视文件的请求位置随机而不是顺序递增。如果使用常规原文件缓存,必然会造成立即需要分配大存贮空间,外部存贮立即分配大存空间有两大问题:1是分配大空间需要比较长的时间运算和分配而影响点播的实时性;2是分配的大空间很多未立即使用,如果随机点播只播放部分内容就退出,分配到的空间会被浪费。为此需要设计一种影视缓存技术来满足高清点播系统的应用要求。

【发明内容】

[0003]为了解决上述问题,本发明提出一种易于P2P传输识别的大容量影视文件缓行方法,包括以下步骤:
[0004]A)创建缓存文件,生成文件头(HEAD_SIZE),所述文件头包括标志串、字节序、版本号、文件头大小、影视文件大小、影视数据已经写入缓存文件的大小、已写入缓存的块数、数据块长度、索引表、索引号、偏移量和数据块,设定数据块长度为BL0CK_SIZE,把影视文件按BL0CK_SIZE进行平均切分,获得逻辑块号(L0GIC_BL0CK_INDEX),并给顺序递增的逻辑块号给定编号,从O到n,设定缓存文件数据块为物理块号(PHY_BLOCK_INDEX),并依顺序递增给定编号,从O到n,设定数据块内数据相对于块头偏移为快内偏移(BL0CK_P0S),设定缓存文件已经分配使用了的块数为物理使用块数(PHY_BL0CK_USED),设定影视文件的文件偏移为逻辑偏移(L0GIC_FILE_P0S),缓存文件的文件偏移为物理偏移(PHY_FILE_P0S),设定已经写入到缓存文件的影视文件的最大偏移位置+1的值为逻辑文件大小(L0GIG_FILE_SIZE);
[0005]对文件头进行初始化,设定影视文件大小为0,已写入块数为0,索引表为空,把数据块切分为固定单位;
[0006]B)写入影视数据到缓存文件,
[0007](I)计算 L0GIC_BL0CK_INDEX = LOGIC_FILE_P0S/BL0CK_SIZE BL0CK_P0S =L0GIC_FILE_P0S% BL0CK_SIZE,进入步骤(2);
[0008](2)根据步骤(I)中的L0GIC_BL0CK_INDEX在索引表中查找出物理块号PHY_BL0CK_INDEX,如果查找到则进入步骤(4),如果没有找到则进入步骤(3);
[0009](3)分配一个新物理块:PHY_BLOCK_INDEX = USED_BL0CKS ;同时已分配使用块数增加 1:USED_BLOCKS = USED_BL0CKS+1 ;
[0010](4)计算可写入本块(PHY_BLOCK_INDEX)的数据大小(WS),取N和BL0CK_SIZE-BL0CK_P0S 的最小值,
[0011 ] WS = min (N,BL0CK_SIZE_BL0CK_P0S);
[0012](5)计算写入缓存文件的物理为置:
[0013]PHY_FILE_P0S = HEAD_SIZE+PHY_BL0CK_INDEX*BL0CK_SIZE+BL0CK_P0S ;
[0014](6)将缓存文件的写指针偏移至PHY_FILE_P0S位置,将WS个byte数据写入;
[0015](7)调整原文件偏移 L0GIC_FILE_P0S = L0GIC_FILE_P0S+ffS ;N = N-WS 调速LOGIG_FILE_SIZE:如果 LOGIG_FILE_SIZE < L0GIC_FILE_P0S,则 LOGIG_FILE_SIZE =L0GIC_FILE_P0S ;如果N > 0,则转入步骤(I),否则写入结束;
[0016]C)读取影视数据到缓存文件,
[0017](I)判断如果 L0GIC_FILE_P0S > = LOGIG_FILE_SIZE 或者 N < = 0,则结束读取;
[0018](2)计算 L0GIC_BL0CK_INDEX = LOGIC_FILE_P0S/BL0CK_SIZE, BL0CK_P0S =L0GIC_FILE_P0S% BL0CK_SIZE ;
[0019](3)根据步骤⑵中的L0GIC_BL0CK_INDEX在索引表中查找出物理块号PHY_BL0CK_INDEX,如果查找不到,则结束读取;
[0020](4)计算可读出本块(PHY_BLOCK_INDEX)的数据大小(S),取N和BL0CK_SIZE-BL0CK_P0S 的最小值,
[0021]S = min (N,BL0CK_SIZE_BL0CK_P0S);
[0022](5)计算读取缓存文件的物理为置:
[0023]PHY_FILE_P0S = HEAD_SIZE+PHY_BL0CK_INDEX*BL0CK_SIZE+BL0CK_P0S ;
[0024](6)将缓存文件的读指针偏移至PHY_FILE_P0S位置,将S个byte数据读出;
[0025](7)调整原文件偏移 L0GIC_FILE_P0S = L0GIC_FILE_P0S+S ;N = N-S ;进入步骤⑴。
[0026]所述步骤A中的所述文件头,所述标志串设置为40B,为缓存文件唯一标识,用于判断此文件头是否为缓存文件;
[0027]所述步骤A中的所述文件头,所述字节序设置为4B,标志为一个32位整数值Oxccccffff写入,如果系统读出此标志的32位整数值仍然是Oxccccffff,则后续读取数据无须转换,否则后续数据必须转换字节序;
[0028]所述步骤A中的所述文件头,所述版本号设置为4B,用于判断是否支持解析缓存文件;
[0029]所述步骤A中的所述文件头,所述数据块长度为IMB ;
[0030]所述步骤A中的所述文件头,所述索引号与所述数据块序号一一对应。
[0031]本发明的技术方案避免外部存贮即时分配大空间消耗大多时间而影响网络传输点播的实时性。因此,本发明可以保证无论如何随机请求影视大文件数据时,都确保缓存线性增长。
【附图说明】
[0032]图1是本发明的缓存文件结构图;
[0033]图2是本发明的文件头结构图。
[0034]其中:
[0035]文件头(HEAD_SIZE):缓存文件的文件头;
[0036]数据块长度(BL0CK_SIZE):将影视文件平均切分的尺寸,单位(字节byte);
[0037]逻辑块号(L0GIC_BL0CK_INDEX):影视文件按固定“块大小”平均切分后,顺序递增给每块给定一个编号(0,Ρ..η);
[0038]物理块号(PHY_BLOCK_INDEX):影视文件的逻辑块实际保存到缓冲文件中的编号,缓冲文件的物理块号是指文件头后面的数据块编号(0,Ρ..η),顺序递增;
[0039]块内偏移(BL0CK_P0S):指数据块内数据相对于于块头偏移(逻辑块与物到块的块内偏移是相同的);
[0040]物理使用块数(PHY_BL0CK_USED):指缓存文件已经分配使用了的块数,缓存文件按文件头之后的位置起顺序分配使用块;
[0041]逻辑偏移(L0GIC_FILE_P0S):指原影视文件的文件偏移;
[0042]物理偏移(PHY_FILE_P0S):指缓存文件的文件偏移;
[0043]逻辑文件大小(LOGIG_FILE_SIZE):指已经写入到缓存文件的原影视文件的最大偏移位置+1的值。
【具体实施方式】
[0044]下面结合附图,对本发明的内容做进一步详细描述。
[0045]如图1中,将一个影视文件的原始数据和缓存方法相关附加信息存储于同一个缓存文件中,不同的影视文件存储于不同的缓存文件中,缓存方法相关的附加信息存储于缓存文件前部,此缓存文件前部称之为“文件头”;影视文件原始数据存储于缓存文件的后面,即为存储影视数据实体;
[0046]缓存文件=文件头+影视数据实体=文件头+数据块1+数据块2+...+数据块N ;
[0047]具中“数据块1+数据块2+...+数据块N”同属于一个影视文件。
[0048]如图2中,文件头包括标志串、字节序、版本号、文件头大小、影视文件大小、影视数据已经写入缓存文件的大小、已写入缓存的块数、数据块长度、索引表、索引号、偏移量和数据块等信息。
[0049]本发明所采取的方法为:
[0050]A)创建缓存文件,生成文件头(HEAD_SIZE),所述文件头包括标志串、字节序、版本号、文件头大小、影视文件大小、影视数据已经写入缓存文件的大小、已写入缓存的块数、数据块长度、索引表、索引号、偏移量和数据块,设定标志串为40B,为缓存文件唯一标识,用于判断此文件头是否为缓存文件;设定字节序设置为4B,标志为一个32位整数值Oxccccffff写入,如果系统读出此标志的32位整数值仍然是Oxccccffff,则后续读取数据无须转换,否则后续数据必须转换字节序;设定版本号为4B,设定数据块长度为BL0CK_SIZE为1MB,把影视文件按BL0CK_SIZE进行平均切分,获得逻辑块号(L0GIC_BL0CK_INDEX),并给顺序递增的逻辑块号给定编号,从O到n,设定缓存文件数据块为物理块号(PHY_BLOCK_INDEX),并依顺序递增给定编号,从O到n,设定数据块内数据相对于块头偏移为快内偏移(BL0CK_P0S),设定缓存文件已经分配使用了的块数为物理使用块数(PHY_BLOCK_USED),设定影视文件的文件偏移为逻辑偏移(LOGIC_FILE_POS),缓存文件的文件偏移为物理偏移(PHY_FILE_POS),设定已经写入到缓存文件的影视文件的最大偏移位置+1的值为逻辑文件大小(LOGIG_FILE_SIZE),索引号与数据块序号一一对应;
[0051]对文件头进行初始化,设定影视文件大小为0,已写入块数为0,索引表为空,把数据块切分为固定单位;
[0052]B)写入影视数据到缓存文件,
[0053](I)计算 L0GIC_BL0CK_INDEX = LOGIC_FILE_P0S/BL0CK_SIZE BL0CK_P0S =L0GIC_FILE_P0S% BL0CK_SIZE,进入步骤(2);
[0054](2)根据步骤(I)中的L0GIC_BL0CK_INDEX在索引表中查找出物理块号PHY_BL0CK_INDEX,如果查找到则进入步骤(4),如果没有找到则进入步骤(3);
[0055](3)分配一个新物理块:PHY_BLOCK_INDEX = USED_BL0CKS ;同时已分配使用块数增加 1:USED_BL0CKS = USED_BL0CKS+1 ;
[0056](4)计算可写入本块(PHY_BLOCK_INDEX)的数据大小(WS),取N和BL0CK_SIZE-BL0CK_P0S 的最小值,
[0057]WS = min (N,BL0CK_SIZE_BL0CK_P0S);
[0058](5)计算写入缓存文件的物理为置:
[0059]PHY_FILE_P0S = HEAD_SIZE+PHY_BL0CK_INDEX*BL0CK_SIZE+BL0CK_P0S ;
[0060](6)将缓存文件的写指针偏移至PHY_FILE_P0S位置,将WS个byte数据写入;
[0061](7)调整原文件偏移 L0GIC_FILE_P0S = L0GIC_FILE_P0S+ffS ;N = N-WS 调速LOGIG_FILE_SIZE:如果 LOGIG_FILE_SIZE < L0GIC_FILE_P0S,则 LOGIG_FILE_SIZE =L0GIC_FILE_P0S ;如果N > 0,则转入步骤(I),否则写入结束;
[0062]C)读取影视数据到缓存文件,
[0063](I)判断如果 L0GIC_FILE_P0S > = LOGIG_FILE_SIZE 或者 N < = 0,则结束读取;
[0064](2)计算 L0GIC_BL0CK_INDEX = LOGIC_FILE_P0S/BL0CK_SIZE, BL0CK_P0S =L0GIC_FILE_P0S% BL0CK_SIZE ;
[0065](3)根据步骤⑵中的L0GIC_BL0CK_INDEX在索引表中查找出物理块号PHY_BL0CK_INDEX,如果查找不到,则结束读取;
[0066](4)计算可读出本块(PHY_BLOCK_INDEX)的数据大小(S),取N和BL0CK_SIZE-BL0CK_P0S 的最小值,
[0067]S = min (N,BL0CK_SIZE_BL0CK_P0S);
[0068](5)计算读取缓存文件的物理为置:
[0069]PHY_FILE_P0S = HEAD_SIZE+PHY_BL0CK_INDEX*BL0CK_SIZE+BL0CK_P0S ;
[0070](6)将缓存文件的读指针偏移至PHY_FILE_P0S位置,将S个byte数据读出;
[0071](7)调整原文件偏移 L0GIC_FILE_P0S = L0GIC_FILE_P0S+S ;N = N-S ;进入步骤⑴。
[0072]本发明的技术方案,可以使得在点播过程中,减少分配大空间所需的时间运算,增强点播的实时性,减少点播时分配到的空间被浪费。
【主权项】
1.一种易于P2P传输识别的大容量影视文件缓存方法,其特征在于:包括以下步骤: A)创建缓存文件,生成文件头(HEAD_SIZE),所述文件头包括标志串、字节序、版本号、文件头大小、影视文件大小、影视数据已经写入缓存文件的大小、已写入缓存的块数、数据块长度、索引表、索引号、偏移量和数据块,设定数据块长度为BLOCK_SIZE,把影视文件按BLOCK_SIZE进行平均切分,获得逻辑块号(LOGIC_BLOCK_INDEX),并给顺序递增的逻辑块号给定编号,从O到n,设定缓存文件数据块为物理块号(PHY_BLOCK_INDEX),并依顺序递增给定编号,从O到n,设定数据块内数据相对于块头偏移为快内偏移(BLOCK_POS),设定缓存文件已经分配使用了的块数为物理使用块数(PHY_BLOCK_USED),设定影视文件的文件偏移为逻辑偏移(LOGIC_FILE_POS),缓存文件的文件偏移为物理偏移(PHY_FILE_POS),设定已经写入到缓存文件的影视文件的最大偏移位置+1的值为逻辑文件大小(LOGIG_FILE_SIZE); 对文件头进行初始化,设定影视文件大小为O,已写入块数为O,索引表为空,把数据块切分为固定单位; B)写入影视数据到缓存文件,(1)计算LOGIC_BLOCK_INDEX = LOGIC_FILE_P0S/BL0CK_SIZEBL0CK_P0S = L0GIC_FILE_P0S% BLOCK_SIZE,进入步骤(2); (2)根据步骤(I)中的LOGIC_BLOCK_INDEX在索引表中查找出物理块号PHY_BL0CK_INDEX,如果查找到则进入步骤(4),如果没有找到则进入步骤(3); (3)分配一个新物理块:PHY_BLOCK_INDEX= USED_BLOCKS ;同时已分配使用块数增加1:USED_BLOCKS = USED_BL0CKS+1 ; (4)计算可写入本块(PHY_BLOCK_INDEX)的数据大小(WS),取N 和 BLOCK_SIZE_BLOCK_POS的最小值,WS = min (N,BL0CK_SIZE_BL0CK_P0S); (5)计算写入缓存文件的物理为置:PHY_FILE_P0S = HEAD_SIZE+PHY_BL0CK_INDEX*BL0CK_SIZE+BL0CK_P0S ; (6)将缓存文件的写指针偏移至PHY_FILE_P0S位置,将WS个byte数据写入; (7)调整原文件偏移L0GIC_FILE_P0S = L0GIC_FILE_P0S+ffS ;N = N-WS 调速 L0GIG_FILE_SIZE:如果 LOGIG_FILE_SIZE < L0GIC_FILE_P0S,则 LOGIG_FILE_SIZE = L0GIC_FILE_P0S ;如果N > 0,则转入步骤(I),否则写入结束; C)读取影视数据到缓存文件, (1)判断如果L0GIC_FILE_P0S >= LOGIG_FILE_SIZE 或者 N < = 0,则结束读取;(2)计算L0GIC_BL0CK_INDEX = LOGIC_FILE_P0S/BL0CK_SIZE, BL0CK_P0S = L0GIC_FILE_P0S% BL0CK_SIZE ; (3)根据步骤(2)中的L0GIC_BL0CK_INDEX在索引表中查找出物理块号PHY_BL0CK_INDEX,如果查找不到,则结束读取; (4)计算可读出本块(PHY_BLOCK_INDEX)的数据大小(S),取N和BL0CK_SIZE_BL0CK_POS的最小值,S = min (N,BL0CK_SIZE_BL0CK_P0S); (5)计算读取缓存文件的物理为置:PHY_FILE_POS = HEAD_SIZE+PHY_BLOCK_INDEX*BLOCK_SIZE+BLOCK_POS ; (6)将缓存文件的读指针偏移至PHY_FILE_POS位置,将S个byte数据读出; (7)调整原文件偏移LOGIC_FILE_POS = LOGIC_FILE_POS+S ;N = N-S ;进入步骤(I)。2.如权利要求1所述的易于P2P传输识别的大容量影视文件缓存方法,其特征在于:所述步骤A中的所述文件头,所述标志串设置为40B,为缓存文件唯一标识,用于判断此文件头是否为缓存文件。3.如权利要求1所述的易于P2P传输识别的大容量影视文件缓存方法,其特征在于:所述步骤A中的所述文件头,所述字节序设置为4B,标志为一个32位整数值Oxccccffff写入,如果系统读出此标志的32位整数值仍然是Oxccccffff,则后续读取数据无须转换,否则后续数据必须转换字节序。4.如权利要求1所述的易于P2P传输识别的大容量影视文件缓存方法,其特征在于:所述步骤A中的所述文件头,所述版本号设置为4B,用于判断是否支持解析缓存文件。5.如权利要求1所述的易于P2P传输识别的大容量影视文件缓存方法,其特征在于:所述步骤A中的所述文件头,所述数据块长度为1MB。6.如权利要求1所述的易于P2P传输识别的大容量影视文件缓存方法,其特征在于:所述步骤A中的所述文件头,所述索引号与所述数据块序号一一对应。
【文档编号】H04N21/433GK105898350SQ201510021321
【公开日】2016年8月24日
【申请日】2015年1月16日
【发明人】何湘
【申请人】何湘
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1