CN105898350A - 一种易于p2p传输识别的大容量影视文件缓存方法 - Google Patents
一种易于p2p传输识别的大容量影视文件缓存方法 Download PDFInfo
- Publication number
- CN105898350A CN105898350A CN201510021321.4A CN201510021321A CN105898350A CN 105898350 A CN105898350 A CN 105898350A CN 201510021321 A CN201510021321 A CN 201510021321A CN 105898350 A CN105898350 A CN 105898350A
- Authority
- CN
- China
- Prior art keywords
- block
- file
- size
- pos
- logic
- 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.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种易于P2P传输识别的大容量影视文件缓存方法。本方法通过构建缓存文件,对缓存文件的写入与读取操作来实现点播过程中减少分配大空间所需的时间运算,增强点播的实时性,减少点播时分配到的空间被浪费的功能。
Description
技术领域
本发明涉及互联网多媒体传输存贮技术领域,尤其涉及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中,将一个影视文件的原始数据和缓存方法相关附加信息存储于同一个缓存文件中,不同的影视文件存储于不同的缓存文件中,缓存方法相关的附加信息存储于缓存文件前部,此缓存文件前部称之为“文件头”;影视文件原始数据存储于缓存文件的后面,即为存储影视数据实体;
缓存文件=文件头+影视数据实体=文件头+数据块1+数据块2+...+数据块N;
具中“数据块1+数据块2+...+数据块N”同属于一个影视文件。
如图2中,文件头包括标志串、字节序、版本号、文件头大小、影视文件大小、影视数据已经写入缓存文件的大小、已写入缓存的块数、数据块长度、索引表、索引号、偏移量和数据块等信息。
本发明所采取的方法为:
A)创建缓存文件,生成文件头(HEAD_SIZE),所述文件头包括标志串、字节序、版本号、文件头大小、影视文件大小、影视数据已经写入缓存文件的大小、已写入缓存的块数、数据块长度、索引表、索引号、偏移量和数据块,设定标志串为40B,为缓存文件唯一标识,用于判断此文件头是否为缓存文件;设定字节序设置为4B,标志为一个32位整数值0xccccffff写入,如果系统读出此标志的32位整数值仍然是0xccccffff,则后续读取数据无须转换,否则后续数据必须转换字节序;设定版本号为4B,设定数据块长度为BLOCK_SIZE为1MB,把影视文件按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)。
本发明的技术方案,可以使得在点播过程中,减少分配大空间所需的时间运算,增强点播的实时性,减少点播时分配到的空间被浪费。
Claims (6)
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)。
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中的所述文件头,所述索引号与所述数据块序号一一对应。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510021321.4A CN105898350A (zh) | 2015-01-16 | 2015-01-16 | 一种易于p2p传输识别的大容量影视文件缓存方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510021321.4A CN105898350A (zh) | 2015-01-16 | 2015-01-16 | 一种易于p2p传输识别的大容量影视文件缓存方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105898350A true CN105898350A (zh) | 2016-08-24 |
Family
ID=56999060
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510021321.4A Pending CN105898350A (zh) | 2015-01-16 | 2015-01-16 | 一种易于p2p传输识别的大容量影视文件缓存方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105898350A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107193947A (zh) * | 2017-05-22 | 2017-09-22 | 郑州云海信息技术有限公司 | 一种文件系统缓存增量刷新方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1702633A (zh) * | 2005-07-08 | 2005-11-30 | 北京北大方正电子有限公司 | 一种媒体文件系统的建立方法 |
CN101277211A (zh) * | 2008-05-16 | 2008-10-01 | 腾讯科技(深圳)有限公司 | 数据缓存方法及装置 |
CN102722555A (zh) * | 2012-05-28 | 2012-10-10 | 北京网尚数字电影院线有限公司 | 一种多媒体文件的缓存方法及系统 |
CN102841860A (zh) * | 2012-08-17 | 2012-12-26 | 珠海世纪鼎利通信科技股份有限公司 | 一种大数据量信息存储与访问方法 |
CN103051977A (zh) * | 2013-01-11 | 2013-04-17 | 乐视网信息技术(北京)股份有限公司 | 一种处理p2p缓存数据的方法 |
-
2015
- 2015-01-16 CN CN201510021321.4A patent/CN105898350A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1702633A (zh) * | 2005-07-08 | 2005-11-30 | 北京北大方正电子有限公司 | 一种媒体文件系统的建立方法 |
CN101277211A (zh) * | 2008-05-16 | 2008-10-01 | 腾讯科技(深圳)有限公司 | 数据缓存方法及装置 |
CN102722555A (zh) * | 2012-05-28 | 2012-10-10 | 北京网尚数字电影院线有限公司 | 一种多媒体文件的缓存方法及系统 |
CN102841860A (zh) * | 2012-08-17 | 2012-12-26 | 珠海世纪鼎利通信科技股份有限公司 | 一种大数据量信息存储与访问方法 |
CN103051977A (zh) * | 2013-01-11 | 2013-04-17 | 乐视网信息技术(北京)股份有限公司 | 一种处理p2p缓存数据的方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107193947A (zh) * | 2017-05-22 | 2017-09-22 | 郑州云海信息技术有限公司 | 一种文件系统缓存增量刷新方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9576609B2 (en) | Subtitle processing device and associated method and subtitle parsing method | |
CN104426770A (zh) | 路由查找方法及装置、B-Tree树结构的构建方法 | |
CN102722555A (zh) | 一种多媒体文件的缓存方法及系统 | |
JP2016528800A5 (zh) | ||
JP2009522939A5 (zh) | ||
CN108184170B (zh) | 一种数据处理方法及装置 | |
CN105245759B (zh) | 一种实现图像同步显示的方法及装置 | |
US20100153645A1 (en) | Cache control apparatus and method | |
US20230048715A1 (en) | Point cloud data encapsulation method and point cloud data transmission method | |
CN110209714A (zh) | 报表生成方法、装置、计算机设备及计算机可读存储介质 | |
TW202103498A (zh) | 具有基於技術特性的選擇特徵的內容修改系統 | |
CN104093084A (zh) | 一种播放视频的方法及装置 | |
CN105898350A (zh) | 一种易于p2p传输识别的大容量影视文件缓存方法 | |
US11960444B2 (en) | Methods and systems for providing file data for a media file | |
CN114374875A (zh) | 一种mp4文件的录制方法、装置及可读存储介质 | |
CN104980817B (zh) | 一种视频流抽帧方法及装置 | |
US9836465B2 (en) | Methods and systems for providing file data for a media file | |
CN109756780A (zh) | 一种视频处理的方法及装置 | |
TWI781460B (zh) | 用於廣告插入決策之方法、計算系統及非暫時性電腦可讀介質 | |
CN101557407B (zh) | 高清媒体p2p点播数据传输存储方法 | |
CN108984572A (zh) | 网站信息推送方法及装置 | |
TWI513282B (zh) | 快取記憶體管理裝置及應用該快取記憶體管理裝置之動態影像系統及方法 | |
CN104239224B (zh) | 一种基于渲染应用数据访问特点的数据管理方法 | |
KR102659489B1 (ko) | 정보 처리 장치, 정보 처리 장치 및 프로그램 | |
CN117098293A (zh) | 用于控制灯带颜色的方法及装置、智能灯带和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160824 |
|
WD01 | Invention patent application deemed withdrawn after publication |