当前位置: 首页 > 专利查询>何湘专利>正文

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

技术编号:13589238 阅读:49 留言:0更新日期:2016-08-25 15:57
本发明专利技术公开了一种易于P2P传输识别的大容量影视文件缓存方法。本方法通过构建缓存文件,对缓存文件的写入与读取操作来实现点播过程中减少分配大空间所需的时间运算,增强点播的实时性,减少点播时分配到的空间被浪费的功能。

【技术实现步骤摘要】

本专利技术涉及互联网多媒体传输存贮
,尤其涉及P2P网络传输高清点播系统的数据实时缓存技术方法。
技术介绍
随着互联网多媒体技术的迅速发展及网络带宽环境的改善,随着用户对多媒体使用要求的提高,影视点播高清标准越来越高,影视码率越来越大,影视文件越来越大,高清点播缓存技术要求也更高。由于点播需要满足灵活拖动使得请求影视文件的内容偏移位置变得随机,而不是顺序递增;点播时播放器也有可能先获得影视文件末尾的索引信息然后再请求音视频数据,也使得影视文件的请求位置随机而不是顺序递增。如果使用常规原文件缓存,必然会造成立即需要分配大存贮空间,外部存贮立即分配大存空间有两大问题:1是分配大空间需要比较长的时间运算和分配而影响点播的实时性;2是分配的大空间很多未立即使用,如果随机点播只播放部分内容就退出,分配到的空间会被浪费。为此需要设计一种影视缓存技术来满足高清点播系统的应用要求。
技术实现思路
为了解决上述问题,本专利技术提出一种易于P2P传输识别的大容量影视文件缓行方法,包括以下步骤:A)创建缓存文件,生成文件头(HEAD_SIZE),所述文件头包括标志串、字节序、版本号、文件头大小、影视文件大小、影视数据已经写入缓存文件的大小、已写入缓存的块数、数据块长度、索引表、索引号、偏移量和数据块,设定数据块长度为BLOCK_SIZE,把影视文件按BLOCK_SIZE进行平均切分,获得逻辑块号(LOGIC_BLOCK_INDEX),并给顺序递增的逻辑块号给定编号,从0
到n,设定缓存文件数据块为物理块号(PHY_BLOCK_INDEX),并依顺序递增给定编号,从0到n,设定数据块内数据相对于块头偏移为快内偏移(BLOCK_POS),设定缓存文件已经分配使用了的块数为物理使用块数(PHY_BLOCK_USED),设定影视文件的文件偏移为逻辑偏移(LOGIC_FILE_POS),缓存文件的文件偏移为物理偏移(PHY_FILE_POS),设定已经写入到缓存文件的影视文件的最大偏移位置+1的值为逻辑文件大小(LOGIG_FILE_SIZE);对文件头进行初始化,设定影视文件大小为0,已写入块数为0,索引表为空,把数据块切分为固定单位;B)写入影视数据到缓存文件,(1)计算LOGIC_BLOCK_INDEX=LOGIC_FILE_POS/BLOCK_SIZEBLOCK_POS=LOGIC_FILE_POS%BLOCK_SIZE,进入步骤(2);(2)根据步骤(1)中的LOGIC_BLOCK_INDEX在索引表中查找出物理块号PHY_BLOCK_INDEX,如果查找到则进入步骤(4),如果没有找到则进入步骤(3);(3)分配一个新物理块:PHY_BLOCK_INDEX=USED_BLOCKS;同时已分配使用块数增加1:USED_BLOCKS=USED_BLOCKS+1;(4)计算可写入本块(PHY_BLOCK_INDEX)的数据大小(WS),取N和BLOCK_SIZE-BLOCK_POS的最小值,WS=min(N,BLOCK_SIZE-BLOCK_POS);(5)计算写入缓存文件的物理为置:PHY_FILE_POS=HEAD_SIZE+PHY_BLOCK_INDEX*BLOCK_SIZE+BLOCK_POS;(6)将缓存文件的写指针偏移至PHY_FILE_POS位置,将WS个byte数据写入;(7)调整原文件偏移LOGIC_FILE_POS=LOGIC_FILE_POS+WS;N=N-WS调速LOGIG_FILE_SIZE:如果LOGIG_FILE_SIZE<LOGIC_FILE_POS,则LOGIG_FILE_SIZE=LOGIC_FILE_POS;如果N>0,则转入步骤(1),否则写入结
束;C)读取影视数据到缓存文件,(1)判断如果LOGIC_FILE_POS>=LOGIG_FILE_SIZE或者N<=0,则结束读取;(2)计算LOGIC_BLOCK_INDEX=LOGIC_FILE_POS/BLOCK_SIZE,BLOCK_POS=LOGIC_FILE_POS%BLOCK_SIZE;(3)根据步骤(2)中的LOGIC_BLOCK_INDEX在索引表中查找出物理块号PHY_BLOCK_INDEX,如果查找不到,则结束读取;(4)计算可读出本块(PHY_BLOCK_INDEX)的数据大小(S),取N和BLOCK_SIZE-BLOCK_POS的最小值,S=min(N,BLOCK_SIZE-BLOCK_POS);(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;进入步骤(1)。所述步骤A中的所述文件头,所述标志串设置为40B,为缓存文件唯一标识,用于判断此文件头是否为缓存文件;所述步骤A中的所述文件头,所述字节序设置为4B,标志为一个32位整数值0xccccffff写入,如果系统读出此标志的32位整数值仍然是0xccccffff,则后续读取数据无须转换,否则后续数据必须转换字节序;所述步骤A中的所述文件头,所述版本号设置为4B,用于判断是否支持解析缓存文件;所述步骤A中的所述文件头,所述数据块长度为1MB;所述步骤A中的所述文件头,所述索引号与所述数据块序号一一对应。本专利技术的技术方案避免外部存贮即时分配大空间消耗大多时间而影响网络传输点播的实时性。因此,本专利技术可以保证无论如何随机请求影视大文件数据时,都确保缓存线性增长。附图说明图1是本专利技术的缓存文件结构图;图2是本专利技术的文件头结构图。其中:文件头(HEAD_SIZE):缓存文件的文件头;数据块长度(BLOCK_SIZE):将影视文件平均切分的尺寸,单位(字节byte);逻辑块号(LOGIC_BLOCK_INDEX):影视文件按固定“块大小”平均切分后,顺序递增给每块给定一个编号(0,1…n);物理块号(PHY_BLOCK_INDEX):影视文件的逻辑块实际保存到缓冲文件中的编号,缓冲文件的物理块号是指文件头后面的数据块编号(0,1…n),顺序递增;块内偏移(BLOCK_POS):指数据块内数据相对于于块头偏移(逻辑块与物到块的块内偏移是相同的);物理使用块数(PHY_BLOCK_USED):指缓存文件已经分配使用了的块数,缓存文件按文件头之后的位置起顺序分配使用块;逻辑偏移(LOGIC_FILE_POS):指原影视文件的文件偏移;物理偏移(PHY_FILE_POS):指缓存文件的文件偏移;逻辑文件大小(LOGIG_FILE_SIZE):指已经写入到缓存文件的原影视文件的最大偏移位置+1的值。具体实施方式下面结合附图,对本专利技术的内容做进一步详细描述。如图1中,将一个影视文件的原始数据和缓存方法相关附加信息存储于同一个缓存文件中,不同的影视文件存储于不同的缓存文件中,缓存方法相关的附加信息存储于缓存文件前部,此缓存文件前部称之为“文件头”;影视文件原始数据存储于缓存文件的后本文档来自技高网
...

【技术保护点】
一种易于P2P传输识别的大容量影视文件缓存方法,其特征在于:包括以下步骤:A)创建缓存文件,生成文件头(HEAD_SIZE),所述文件头包括标志串、字节序、版本号、文件头大小、影视文件大小、影视数据已经写入缓存文件的大小、已写入缓存的块数、数据块长度、索引表、索引号、偏移量和数据块,设定数据块长度为BLOCK_SIZE,把影视文件按BLOCK_SIZE进行平均切分,获得逻辑块号(LOGIC_BLOCK_INDEX),并给顺序递增的逻辑块号给定编号,从0到n,设定缓存文件数据块为物理块号(PHY_BLOCK_INDEX),并依顺序递增给定编号,从0到n,设定数据块内数据相对于块头偏移为快内偏移(BLOCK_POS),设定缓存文件已经分配使用了的块数为物理使用块数(PHY_BLOCK_USED),设定影视文件的文件偏移为逻辑偏移(LOGIC_FILE_POS),缓存文件的文件偏移为物理偏移(PHY_FILE_POS),设定已经写入到缓存文件的影视文件的最大偏移位置+1的值为逻辑文件大小(LOGIG_FILE_SIZE);对文件头进行初始化,设定影视文件大小为0,已写入块数为0,索引表为空,把数据块切分为固定单位;B)写入影视数据到缓存文件,(1)计算LOGIC_BLOCK_INDEX=LOGIC_FILE_POS/BLOCK_SIZEBLOCK_POS=LOGIC_FILE_POS%BLOCK_SIZE,进入步骤(2);(2)根据步骤(1)中的LOGIC_BLOCK_INDEX在索引表中查找出物理块号PHY_BLOCK_INDEX,如果查找到则进入步骤(4),如果没有找到则进入步骤(3);(3)分配一个新物理块:PHY_BLOCK_INDEX=USED_BLOCKS;同时已分配使用块数增加1:USED_BLOCKS=USED_BLOCKS+1;(4)计算可写入本块(PHY_BLOCK_INDEX)的数据大小(WS),取N和BLOCK_SIZE‑BLOCK_POS的最小值,WS=min(N,BLOCK_SIZE‑BLOCK_POS);(5)计算写入缓存文件的物理为置:PHY_FILE_POS=HEAD_SIZE+PHY_BLOCK_INDEX*BLOCK_SIZE+BLOCK_POS;(6)将缓存文件的写指针偏移至PHY_FILE_POS位置,将WS个byte数据写入;(7)调整原文件偏移LOGIC_FILE_POS=LOGIC_FILE_POS+WS;N=N‑WS调速LOGIG_FILE_SIZE:如果LOGIG_FILE_SIZE<LOGIC_FILE_POS,则LOGIG_FILE_SIZE=LOGIC_FILE_POS;如果N>0,则转入步骤(1),否则写入结束;C)读取影视数据到缓存文件,(1)判断如果LOGIC_FILE_POS>=LOGIG_FILE_SIZE或者N<=0,则结束读取;(2)计算LOGIC_BLOCK_INDEX=LOGIC_FILE_POS/BLOCK_SIZE,BLOCK_POS=LOGIC_FILE_POS%BLOCK_SIZE;(3)根据步骤(2)中的LOGIC_BLOCK_INDEX在索引表中查找出物理块号PHY_BLOCK_INDEX,如果查找不到,则结束读取;(4)计算可读出本块(PHY_BLOCK_INDEX)的数据大小(S),取N和BLOCK_SIZE‑BLOCK_POS的最小值,S=min(N,BLOCK_SIZE‑BLOCK_POS);(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;进入步骤(1)。...

【技术特征摘要】
1.一种易于P2P传输识别的大容量影视文件缓存方法,其特征在于:包括以下步骤:A)创建缓存文件,生成文件头(HEAD_SIZE),所述文件头包括标志串、字节序、版本号、文件头大小、影视文件大小、影视数据已经写入缓存文件的大小、已写入缓存的块数、数据块长度、索引表、索引号、偏移量和数据块,设定数据块长度为BLOCK_SIZE,把影视文件按BLOCK_SIZE进行平均切分,获得逻辑块号(LOGIC_BLOCK_INDEX),并给顺序递增的逻辑块号给定编号,从0到n,设定缓存文件数据块为物理块号(PHY_BLOCK_INDEX),并依顺序递增给定编号,从0到n,设定数据块内数据相对于块头偏移为快内偏移(BLOCK_POS),设定缓存文件已经分配使用了的块数为物理使用块数(PHY_BLOCK_USED),设定影视文件的文件偏移为逻辑偏移(LOGIC_FILE_POS),缓存文件的文件偏移为物理偏移(PHY_FILE_POS),设定已经写入到缓存文件的影视文件的最大偏移位置+1的值为逻辑文件大小(LOGIG_FILE_SIZE);对文件头进行初始化,设定影视文件大小为0,已写入块数为0,索引表为空,把数据块切分为固定单位;B)写入影视数据到缓存文件,(1)计算LOGIC_BLOCK_INDEX=LOGIC_FILE_POS/BLOCK_SIZEBLOCK_POS=LOGIC_FILE_POS%BLOCK_SIZE,进入步骤(2);(2)根据步骤(1)中的LOGIC_BLOCK_INDEX在索引表中查找出物理块号PHY_BLOCK_INDEX,如果查找到则进入步骤(4),如果没有找到则进入步骤(3);(3)分配一个新物理块:PHY_BLOCK_INDEX=USED_BLOCKS;同时已分配使用块数增加1:USED_BLOCKS=USED_BLOCKS+1;(4)计算可写入本块(PHY_BLOCK_INDEX)的数据大小(WS),取N和BLOCK_SIZE-BLOCK_POS的最小值,WS=min(N,BLOCK_SIZE-BLOCK_POS);(5)计算写入缓存文件的物理为置:PHY_FILE_POS=HEAD_SIZE+PHY_BLOCK_INDEX*BLOCK_SIZE+BLOCK_POS;(6)将缓存文件的写指针偏移至PHY_FILE_POS位置,将WS个byte数据写入;(7)调整原文件偏移LOGIC_FILE_POS=LOGIC_FILE_POS+WS;...

【专利技术属性】
技术研发人员:何湘
申请(专利权)人:何湘
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1