CN102243884A - 一种存储流媒体数据的方法及装置 - Google Patents
一种存储流媒体数据的方法及装置 Download PDFInfo
- Publication number
- CN102243884A CN102243884A CN2010101753556A CN201010175355A CN102243884A CN 102243884 A CN102243884 A CN 102243884A CN 2010101753556 A CN2010101753556 A CN 2010101753556A CN 201010175355 A CN201010175355 A CN 201010175355A CN 102243884 A CN102243884 A CN 102243884A
- Authority
- CN
- China
- Prior art keywords
- time
- time tag
- message block
- index information
- tag
- 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.)
- Granted
Links
Images
Landscapes
- Indexing, Searching, Synchronizing, And The Amount Of Synchronization Travel Of Record Carriers (AREA)
Abstract
本发明公开了一种存储流媒体数据的方法及装置。本发明的技术方案通过将索引信息添加到数据块之前,在写入数据时直接将索引信息连同数据块一起写入存储单元,从而避免了在写入数据时每写入一个数据块就将磁头移动到对应的索引区域写入索引信息的操作,减少了磁头寻道时间,提高了写数据性能。
Description
技术领域
本发明涉及数据存储技术,尤指一种存储流媒体数据的方法及装置。
背景技术
磁盘主要包括硬盘盘片、主轴电机、读写磁头、磁头臂和伺服电机,数据存储在磁盘盘片上,通过磁头臂加上磁盘片本身的运动定位数据位置,执行读写操作。磁盘磁头从初始位置移动到所指定的磁道所需的时间叫做磁盘的平均寻道时间,是影响磁盘内部数据传输率的重要参数,一般为7ms左右。顺序读写是指对磁盘的访问对象是地址连续的,这样的读写方式能够大大的减少寻道时间。随机读写是指对磁盘的访问对象是地址不连续的,这样的读写方式就大大增加磁盘的寻道时间。
参见图1,图1是目前比较通用的流媒体存储结构图。在对流媒体数据进行存储时,为了更加高效的对流媒体数据进行查询检索,通常会增加索引信息。即,在磁盘固定的位置上设置索引区域,在对流媒体数据进行存储的同时,根据该媒体数据的特性,在索引区域内填写相应的索引信息。进而在进行数据查询时,能够根据索引信息快速定位到所查询的流媒体数据。
在图1中,超级数据(SUPER DATA)后面为一级索引(MAIN INDEX)区域,一级索引区域的大小为128K。一级索引区域后为数据部分(DATAPARTITION),包括一系列大小为256M的数据单元(DATA UNIT)。这里,一级索引用于检索之后的256M Byte数据单元。在每个256M的数据单元中,又包含二级索引(SECOND INDEX)区域和数据块。这里,二级索引用来定位具体的I帧组数据。
在进行磁盘写入操作时,通常都是顺序写入磁盘控制,只是在写完一个数据块之后,要在当前数据单元对应的二级索引区域进行写索引操作。在当前的数据单元空间不足时,数据块会在下一个数据单元写入,此时除了需要在该数据单元中的索引区域进行写二级索引的操作外,还要以及一级索引区域中执行写索引的操作。
由上述写操作的流程不难看出,为了方便检索,在每顺序写入一个数据块之后,就会将磁头移动到对应的索引区域写入相应的索引信息,使原本的顺序写变成了随机写,增加了磁头寻道时间。基于前面描述的磁盘特征,可知现有这种流媒体数据块的写操作,使磁盘的大量消耗花费在了寻道时间上,严重的影响了写数据的性能。
发明内容
有鉴于此,本发明的主要目的在于提供一种存储流媒体数据的方法及装置,应用本发明所提供的方法及装置能够提高流媒体数据的写性能。
为达到上述目的,本发明的技术方案是这样实现的:
一种存储流媒体数据的方法,该方法包括:
根据待存储的数据块得到该数据块对应的索引信息;其中,所述索引信息包括所述信息块的存储位置和存储长度,以及所述数据块对应流媒体的起始时间;
将所得到的索引信息添加到所述数据块之前,并将该索引信息和所述数据块构成的信息块顺序写入存储单元。
一种存储流媒体数据的装置,该装置包括处理单元和写入单元;
所述处理单元,用于根据待存储的数据块得到该数据块对应的索引信息;其中,所述索引信息包括所述信息块的存储位置和存储长度,以及所述数据块对应流媒体的起始时间
所述写入单元,用于将所述处理单元得到的索引信息添加到所述数据块之前,并将该索引信息和所述数据块构成的信息块顺序写入存储单元。
本发明所提供了一种存储流媒体数据的方法及装置。本发明的技术方案通过将索引信息添加到数据块之前,在写入数据时直接将索引信息连同数据块一起写入存储单元,从而避免了在写入数据时每写入一个数据块就将磁头移动到对应的索引区域写入相应的索引信息的操作,因此减少了磁头寻道时间,提高了写数据性能。
附图说明
图1为现有技术中流媒体存储结构图;
图2为本发明方法的示例性流程图;
图3为本发明实施例中提出的存储结构图;
图4为本发明实施例提供的写操作流程图;
图5为本发明实施例提供的检索流程图;
图6为本发明实施例提供的查找最近时间标签的流程图;
图7为本发明实施例提供的确定停止前位置的流程图;
图8为本发明提供的装置结构图。
具体实施方式
在本部分的详细描述中,仅通过对实施本发明的发明者所预期的最佳方式的示例,示出并描述了本发明的较佳实施例。应意识到,可以在不背离本发明的前提下,就各个显而易见的方面对其进行修改。相应地,附图和说明书应被视为在本质上是示例性的,而不是限制性的。
参见图2,为了实现本发明的发明目的,本发明提供了一种存储流媒体数据的方法,具体包括:在步骤201中,根据待存储的数据块得到该数据块对应的索引信息;其中,所述索引信息包括所述信息块的存储位置和存储长度,以及所述数据块对应流媒体的起始时间;在步骤202中,将所得到的索引信息添加到所述数据块之前,并将该索引信息和所述数据块构成的信息块顺序写入存储单元。通过在写入数据时,将索引信息添加到数据块之前,将索引信息连同数据块一起写入存储单元,避免了在写入数据时每写入一个数据块就将磁头移动到对应的索引区域写入相应的索引信息的操作,减少了磁头寻道时间,提高了写数据性能。
在索引信息中可以进一步包括索引标志,该索引标志用来指示该索引信息对应信息块的起始。参见表一,表一为包括索引标志的索引头结构示意图。
索引标志 | 存储位置 | 数据块起始时间 | 存储长度 |
表一
数据结构可以设计成如下形式:
struct STORDATAINDEX
{
int indexflag;
int indexoffset;
int frmtime;
int frmlen;
}
其中indexflag为索引标志,为一个常量,用来标识是一个索引信息的开头,如0x55aaaa55;Indexoffset代表索引信息和数据块组成的信息块的存储位置,即存储开始的位置;frmtime代表信息块对应数据块起始时间,本发明中的数据块主要对应媒流体数据,因此每个数据块都有一个起始时间;frmlen代表信息块中存储长度,信息块中包括索引信息。
为了快速检索,在存储单元上还可以均匀的设置了多个时间标签区域,即在固定位置上设置时间标签。这样,在磁盘中的数据存储结构如图3所示。在存储单元中,由于时间标签是设置在固定位置的,这样就存在两类信息块。一类信息块中包含了时间标签;另一类信息块中未包含时间标签。在本发明的技术方案中,通过在时间标签中记录所在信息块的数据块起始时间以及所在信息块的存储位置,就能够大致了解到存储单元中固定位置上媒流体的起始时间,进而就能够根据设定的检索时间方便检索对应的数据块。时间标签的结构如表二所示:
所在信息块中数据块起始时间 | 所在信息块的存储位置 |
表二
数据结构可以设计成如下形式:
struct STORTIMEFLAG
{
int frmtime;
int frmoffset;
}
其中frmtime为记录的时间,即所在信息块中数据块起始时间;frmoffset为所在信息块的存储位置。
时间标签可以被均匀的安插在存储单元的固定位置,其中固定位置可以根据存储空间大小,存储的码率来合理的分配。例如,在监控行业中,由于存储数据量较大,时间标签所占的空间比几乎可以忽略不计,可以设置每隔10MB间隔安插时间标签。
在存储单元中设置了时间标签之后,在写入信息块时,就需要进一步考虑写入的信息块是否会包含时间标签,具体的处理可以是:将所得到的索引信息添加到所述数据块之后,将所述信息块写入存储单元之前,该方法进一步包括:判断所述信息块写入存储单元之后,占用的存储区域是否会包含时间标签区域,如果会,则将所述信息块的存储位置和所述数据块对应流媒体的起始时间作为该时间标签区域的内容,在所述信息块中插入该时间标签,使插入时间标签后的信息块写入存储单元后,该时间标签占用自身对应的时间标签区域,再将插入时间标签后的信息块顺序写入存储单元,其中所述索引信息为该信息块加入时间标签后的存储长度;如果不会,则将所述信息块顺序写入存储单元。
参见图4,图4为考虑时间标签时,本发明写入信息块的流程图。
在步骤401中,得到待存储的数据块。
在视频监控领域,本发明中所指的数据块为I帧组。
在步骤402中,根据待存储的数据块,得到该数据块对应的索引信息。
其中,所述索引信息包括所述信息块的存储位置和存储长度,以及所述数据块对应流媒体的起始时间。
在步骤403中,将该索引信息添加到该数据块头部构成信息块。
在步骤404中,判断该信息块写入存储单元之后,占用的存储区域是否会包含时间标签区域,如果是,则执行步骤405;否则,执行步骤406。
在步骤405中,将时间标签插入信息块中,然后写入存储单元。结束当前处理流程。将时间标签插入信息块的操作可以是:
将所述信息块的存储位置和所述数据块对应流媒体的起始时间作为该时间标签区域的时间标签,在所述信息块中插入该时间标签,使插入时间标签后的信息块写入存储单元后,该时间标签占用自身对应的时间标签区域,再将插入时间标签后的信息块顺序写入存储单元。其中,所述索引信息为该信息块加入时间标签后的存储长度。
在步骤406中,直接将信息块顺序写入存储单元。
下面介绍本发明的另一方面,即数据检索。本明提供时间标签的前提下,本发明可以利用时间标签来实现检索。具体参见图5,图5为本发明所提供的检索过程。
在步骤501中,当根据检索时间检索流媒体数据时,根据时间标签中记录的数据块起始时间,查找得到等于检索时间或离检索时间最近的时间标签。
在步骤502中,根据查找得到的时间标签确定检索到的信息块。
在步骤503中,根据信息块中索引信息的记录返回对应数据块的存储位置。
在步骤504中,根据返回的存储位置进行数据读取,并在读取过程中剔除其中包含的时间标签。
其中,步骤501中的根据时间标签中记录的数据块起始时间,查找得到等于检索时间或离检索时间最近的时间标签可以通过如图6所示的流程实现。
在步骤601中,取所述存储单元中头部、中间和尾部三个位置的时间标签,依次记为h,m和t。
在步骤602中,根据时间标签中记录的数据块起始时间,判断当前所取位置的时间标签中是否存在等于检索时间S的时间标签,如果是,则执行步骤603;否则,执行步骤604。
为了方便描述用S代替检索时间。
在步骤603中,等于S的时间标签即为查找得到的时间标签。
在步骤604中,判断当前三个时间标签中记录的数据块起始时间是否都小于S,如果是,执行步骤605;否则,执行步骤606。
在步骤605中,当h>=m时,确定当前查找的存储区域为[h,m],执行步骤607;当m>=t时,确定当前查找的存储区域为[m,t],执行步骤607;当t>=h时,确定当前查找的存储区域为[t,h],执行步骤607。
在步骤606中,根据时间标签中记录的数据块起始时间,在大于S的时间标签中选择最接近S的时间标签x;当x=h时,确定当前查找的存储区域为[t,h],执行步骤607;当x=m,确定当前查找的存储区域为[h,m],执行步骤607;当x=t时,确定当前查找的存储区域为[m,t],执行步骤607。
在步骤607中,判断所述确定的存储区域内是否存在三个或三个以上的时间标签,如果是,执行步骤608;否则,执行609。
在步骤608中,取所述当前查找的存储区域中头部、中间和尾部三个位置的时间标签,依次记为h,m和t,返回执行步骤602。
在步骤609中,取所述当前查找的存储区域中头部尾部两个位置的时间标签,依次记为h和t,执行步骤610。
在存储区域[t,h]、[h,m]或[m,t]中,由于其中已经包含了时间标签t、h,h、m,m、t,因此判断存储区域内是否存在三个或三个以上的时间标签实际就是判断除两个端点外,在存储区域内是否还存在其他的时间标签。
在步骤610中,当S和h或t相等时,则相等的时间标签为查找得到的时间标签,结束当前处理流程;当S大于h、小于t时,则h为查找得到的时间标签,结束当前处理流程;当S大于h和t时,则h和t中较大的时间标签为查找得到的时间标签,结束当前处理流程;当S小于h和t时,执行步骤611。
在步骤611中,选择时间标签h和t中较小的记为P;找到该时间标签P之前的时间标签Q,根据时间记录的数据块起始时间比较时间标签的大小,当Q>=P时,确定P为查找得到的时间标签,结束当前处理流程;当S>=Q,确定Q为查找得到的时间标签,结束当前处理流程;当S<Q,将时间标签Q记录为当前时间标签P,返回执行找到当前时间标签之前的时间标签Q的操作。
这里,需要说明的是,当在中间位置存在两个时间标签时,选择位置靠前的一个作为所选择的时间标签。具体可以参见下面的例子。
例如,在如表三所示的情况,检索过程如下所示。
存储位置 | 0 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 |
时间标签 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 11 | 12 | 13 | 14 |
表三
当检索时间为S=12时,取存储单元中头部、中间和尾部三个位置的时间标签,依次记为h,m和t,即h=15、m=20、t=14。这三个时间标签均与S不等,且都大于S。其中t为最接近S的时间标签。第一轮,在存储区域内[20,14]执行步骤607,在[20,14]存在三个时间标签。再取其中头部、中间和尾部三个位置的时间标签,依次记为h,m和t,h=20、m=11、t=14。在大于S的时间标签中,t=14为最接近S的时间标签。第二轮,在存储区域内[11,14]执行步骤607,在[11,14]存在三个时间标签。再取其中头部、中间和尾部三个位置的时间标签,依次记为h,m和t,h=11、m=12、t=14。则其中m=12为所找到的时间标签。
在本发明的技术方案中,除了可以采用上述较优的处理方法找到最近的时间标签,还以固定位置顺序读取时间标签,找到离检索时间最近的时间标签。
其中,所述根据查找得到的时间标签确定检索到的信息块包括:当查找到的时间标签等于或大于检索时间时,该时间标签所对应的信息块即为检索到的信息块;当查找到的时间标签小于检索时间时,根据该时间标签记录的存储位置,读取到对应信息块的索引信息,根据该索引信息记录的存储长度读取下一个信息块的索引信息,根据当前读取的索引信息中记录的起始时间判断该起始时间是否小于检索时间,如果小于,再根据当前索引信息中记录的存储长度读取下一个信息块的索引信息,直至找到记录的起始时间大于或等于检索时间的索引信息,则该索引信息对应的信息块为检索到的信息块;在始终找不到起始时间大于或等于检索时间的索引信息时,则表明检索失败,返回检索失败指示。
下面再介绍本发明的关于写操作中断的处理。由于断电、重启或其他原因会导致设备的写操作中断。这样,待恢复后需要接着停止前的位置来写数据。
在本发明的技术方案中,可以采用如下方法来得到停止前的位置。具体可参见图7。
在步骤701中,在中断重启后,取所述存储单元中头部、中间和尾部三个位置的时间标签,依次记为h,m和t。
在步骤702中,根据时间标签中记录的数据块起始时间,选择其中最大的标签;当最大的时间标签为h时,确定当前查找的存储区域为[h,m],执行步骤703;当最大的时间标签为m时,确定当前查找的存储区域为[m,t],执行步骤703;当最大的时间标签为t时,确定t为最新的时间标签,执行步骤706。
在步骤703中,判断所述确定的存储区域内是否存在三个或三个以上的时间标签,如果是,执行步骤704;否则,执行步骤705。
在步骤704中,取所述当前查找的存储区域中头部、中间和尾部三个位置的时间标签,依次记为h,m和t,返回执行步骤702。
在步骤705中,确定所述存储区域内两个时间标签中最大的时间标签为最新的时间标签,执行步骤706。
在步骤706中,根据确定的最新时间标签记录的存储位置,读取到对应信息块的索引信息,根据该索引信息记录的存储长度读取下一个信息块的索引信息;根据当前索引信息中记录的起始时间判断该起始时间是否小于时间标签,如果是,则确定当前时间标签对应的信息块为最新记录的信息块,执行步骤707;否则,再读取下一信息块,直到找到后一信息块的起始时间小于前一信息块起始时间,则确定此时在前的信息块为最新记录的信息块,执行步骤707;
在步骤707中,最新记录的信息块即为中断前最后写入的信息块,即为停止前的位置。在需要执行写操作时,就可以在所确定的最新记录的信息块之后写入数据。
除了可以采用如上方法确定中断前的位置,还可以在每次写数据成功后,将写成功的信息块的末尾地址存储到掉电不丢失的介质中,如硬盘或flash等,当恢复写的时候则从该介质中读取该位置的数据,然后接着该位置写入新的数据。
以下介绍本发明的另一方面。本发明还提供了一种存储流媒体数据的装置,具体参见图8。
该装置包括处理单元81和写入单元82。所述处理单元81,用于根据待存储的数据块得到该数据块对应的索引信息;其中,所述索引信息包括所述信息块的存储位置和存储长度,以及所述数据块对应流媒体的起始时间;所述写入单元82,用于将所述处理单元81得到的索引信息添加到所述数据块之前,并将该索引信息和所述数据块构成的信息块顺序写入存储单元。
其中,所述处理单元81,进一步用于在索引信息中设置索引标志,用来指示该索引信息对应信息块的起始。
其中,所述写入单元82,在存储单元上均匀的设置多个时间标签区域时,进一步用于将所得到的索引信息添加到所述数据块之后,将所述信息块写入存储单元之前,判断所述信息块写入存储单元之后,占用的存储区域是否会包含时间标签区域,如果会,则将所述信息块的存储位置和所述数据块对应流媒体的起始时间作为该时间标签区域的内容,在所述信息块中插入该时间标签,使插入时间标签后的信息块写入存储单元后,该时间标签占用自身对应的时间标签区域,再将插入时间标签后的信息块顺序写入存储单元,其中所述索引信息为该信息块加入时间标签后的存储长度;如果不会,则将所述信息块顺序写入存储单元。
其中,该装置进一步包括检索单元83和读取单元84;所述检索单元83,用于当根据检索时间检索流媒体数据时,根据时间标签中记录的数据块起始时间,查找得到等于检索时间或离检索时间最近的时间标签;根据查找得到的时间标签确定检索到的信息块;根据信息块中索引信息的记录返回对应数据块的存储位置;所述读取单元84,用于根据所述检索单元83返回的存储位置进行数据读取,并在读取过程中剔除其中包含的时间标签。
其中,所述检索单元83,在根据时间标签中记录的数据块起始时间,查找得到等于检索时间或离检索时间最近的时间标签时,按照以下操作执行:
A1、取所述存储单元中头部、中间和尾部三个位置的时间标签,依次记为h,m和t;
B1、根据时间标签中记录的数据块起始时间,判断当前所取位置的时间标签中是否存在等于检索时间S的时间标签,如果存在,则等于S的时间标签即为查找得到的时间标签;如果不存在,执行步骤C1;
C1、判断当前三个时间标签中记录的数据块起始时间是否都小于S,如果是,执行步骤D1;否则,执行步骤E1;
D1、当h>=m时,确定当前查找的存储区域为[h,m],执行步骤F1;当m>=t时,确定当前查找的存储区域为[m,t],执行步骤F1;当t>=h时,确定当前查找的存储区域为[t,h],执行步骤F1;
E1、根据时间标签中记录的数据块起始时间,在大于S的时间标签中选择最接近S的时间标签x;当x=h时,确定当前查找的存储区域为[t,h],执行步骤F1;当x=m,确定当前查找的存储区域为[h,m],执行步骤F1;当x=t时,确定当前查找的存储区域为[m,t],执行步骤F1;
F1、判断所述确定的存储区域内是否存在三个或三个以上的时间标签,如果是,取所述当前查找的存储区域中头部、中间和尾部三个位置的时间标签,依次记为h,m和t,返回执行步骤B1;否则,取所述当前查找的存储区域中头部尾部两个位置的时间标签,依次记为h和t,执行步骤G1;
G1、当S和h或t相等时,则相等的时间标签为查找得到的时间标签,结束当前处理流程;当S大于h、小于t时,则h为查找得到的时间标签,结束当前处理流程;当S大于h和t时,则h和t中较大的时间标签为查找得到的时间标签,结束当前处理流程;当S小于h和t时,执行步骤H1;
H1、选择时间标签h和t中较小的记为P;找到该时间标签P之前的时间标签Q,根据时间记录的数据块起始时间比较时间标签的大小,当Q>=P时,确定P为查找得到的时间标签,结束当前处理流程;当S>=Q,确定Q为查找得到的时间标签,结束当前处理流程;当S<Q,将时间标签Q记录为当前时间标签P,返回执行找到当前时间标签之前的时间标签Q的操作。
其中,所述检索单元83在根据查找得到的时间标签确定检索到的信息块时,按照以下操作执行:当查找到的时间标签等于或大于检索时间时,该时间标签所对应的信息块即为检索到的信息块;当查找到的时间标签小于检索时间时,根据该时间标签记录的存储位置,读取到对应信息块的索引信息,根据该索引信息记录的存储长度读取下一个信息块的索引信息,根据当前读取的索引信息中记录的起始时间判断该起始时间是否小于检索时间,如果小于,再根据当前索引信息中记录的存储长度读取下一个信息块的索引信息,直至找到记录的起始时间大于或等于检索时间的索引信息,则该索引信息对应的信息块为检索到的信息块;在始终找不到起始时间大于或等于检索时间的索引信息时,则表明检索失败,返回检索失败指示。
另外,该装置进一步包括在中断控制单元85;所述中断控制单元85,用于按照以下操作找到最新记录的信息块,用于在中断重启后在最新记录的信息块后写入数据;操作如下:
A2、取所述存储单元中头部、中间和尾部三个位置的时间标签,依次记为h,m和t;
B2、根据时间标签中记录的数据块起始时间,选择其中最大的标签;当最大的时间标签为h时,确定当前查找的存储区域为[h,m],执行步骤C2;当最大的时间标签为m时,确定当前查找的存储区域为[m,t],执行步骤C2;当最大的时间标签为t时,确定t为最新的时间标签,执行步骤D2;
C2、判断所述确定的存储区域内是否存在三个或三个以上的时间标签,如果存在,取所述当前查找的存储区域中头部、中间和尾部三个位置的时间标签,依次记为h,m和t,返回执行步骤B2;否则,确定所述存储区域内两个时间标签中最大的时间标签为最新的时间标签,执行步骤D2;
D2、根据确定的最新时间标签记录的存储位置,读取到对应信息块的索引信息,根据该索引信息记录的存储长度读取下一个信息块的索引信息;根据当前索引信息中记录的起始时间判断该起始时间是否小于时间标签,如果是,则确定当前时间标签对应的信息块为最新记录的信息块;否则,再读取下一信息块,直到找到后一信息块的起始时间小于前一信息块起始时间,则确定此时在前的信息块为最新记录的信息块。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种存储流媒体数据的方法,其特征在于,该方法包括:
根据待存储的数据块得到该数据块对应的索引信息;其中,所述索引信息包括所述信息块的存储位置和存储长度,以及所述数据块对应流媒体的起始时间;
将所得到的索引信息添加到所述数据块之前,并将该索引信息和所述数据块构成的信息块顺序写入存储单元。
2.根据权利要求1所述的方法,其特征在于,所述索引信息中进一步包括索引标志,用来指示该索引信息对应信息块的起始。
3.根据权利要求1所述的方法,其特征在于,
该方法进一步包括:在存储单元上均匀的设置多个时间标签区域;
将所得到的索引信息添加到所述数据块之后,将所述信息块写入存储单元之前,该方法进一步包括:判断所述信息块写入存储单元之后,占用的存储区域是否会包含时间标签区域,如果会,则将所述信息块的存储位置和所述数据块对应流媒体的起始时间作为该时间标签区域的内容,在所述信息块中插入该时间标签,使插入时间标签后的信息块写入存储单元后,该时间标签占用自身对应的时间标签区域,再将插入时间标签后的信息块顺序写入存储单元,其中所述索引信息为该信息块加入时间标签后的存储长度;如果不会,则将所述信息块顺序写入存储单元。
4.根据权利要求3所述的方法,其特征在于,该方法进一步包括:当根据检索时间检索流媒体数据时,
根据时间标签中记录的数据块起始时间,查找得到等于检索时间或离检索时间最近的时间标签;
根据查找得到的时间标签确定检索到的信息块;
根据信息块中索引信息的记录返回对应数据块的存储位置;
根据返回的存储位置进行数据读取,并在读取过程中剔除其中包含的时间标签。
5.根据权利要求4所述的方法,其特征在于,所述根据时间标签中记录的数据块起始时间,查找得到等于检索时间或离检索时间最近的时间标签包括:
A1、取所述存储单元中头部、中间和尾部三个位置的时间标签,依次记为h,m和t;
B1、根据时间标签中记录的数据块起始时间,判断当前所取位置的时间标签中是否存在等于检索时间S的时间标签,如果存在,则等于S的时间标签即为查找得到的时间标签;如果不存在,执行步骤C1;
C1、判断当前三个时间标签中记录的数据块起始时间是否都小于S,如果是,执行步骤D1;否则,执行步骤E1;
D1、当h>=m时,确定当前查找的存储区域为[h,m],执行步骤F1;当m>=t时,确定当前查找的存储区域为[m,t],执行步骤F1;当t>=h时,确定当前查找的存储区域为[t,h],执行步骤F1;
E1、根据时间标签中记录的数据块起始时间,在大于S的时间标签中选择最接近S的时间标签x;当x=h时,确定当前查找的存储区域为[t,h],执行步骤F1;当x=m,确定当前查找的存储区域为[h,m],执行步骤F1;当x=t时,确定当前查找的存储区域为[m,t],执行步骤F1;
F1、判断所述确定的存储区域内是否存在三个或三个以上的时间标签,如果是,取所述当前查找的存储区域中头部、中间和尾部三个位置的时间标签,依次记为h,m和t,返回执行步骤B1;否则,取所述当前查找的存储区域中头部尾部两个位置的时间标签,依次记为h和t,执行步骤G1;
G1、当S和h或t相等时,则相等的时间标签为查找得到的时间标签,结束当前处理流程;当S大于h、小于t时,则h为查找得到的时间标签,结束当前处理流程;当S大于h和t时,则h和t中较大的时间标签为查找得到的时间标签,结束当前处理流程;当S小于h和t时,执行步骤H1;
H1、选择时间标签h和t中较小的记为P;找到该时间标签P之前的时间标签Q,根据时间记录的数据块起始时间比较时间标签的大小,当Q>=P时,确定P为查找得到的时间标签,结束当前处理流程;当S>=Q,确定Q为查找得到的时间标签,结束当前处理流程;当S<Q,将时间标签Q记录为当前时间标签P,返回执行找到当前时间标签之前的时间标签Q的操作。
6.根据权利要求4所述的方法,其特征在于,所述根据查找得到的时间标签确定检索到的信息块包括:
当查找到的时间标签等于或大于检索时间时,该时间标签所对应的信息块即为检索到的信息块;
当查找到的时间标签小于检索时间时,根据该时间标签记录的存储位置,读取到对应信息块的索引信息,根据该索引信息记录的存储长度读取下一个信息块的索引信息,根据当前读取的索引信息中记录的起始时间判断该起始时间是否小于检索时间,如果小于,再根据当前索引信息中记录的存储长度读取下一个信息块的索引信息,直至找到记录的起始时间大于或等于检索时间的索引信息,则该索引信息对应的信息块为检索到的信息块;在始终找不到起始时间大于或等于检索时间的索引信息时,则表明检索失败,返回检索失败指示。
7.根据权利要求3所述的方法,其特征在于,该方法进一步包括在中断重启后,
A2、取所述存储单元中头部、中间和尾部三个位置的时间标签,依次记为h,m和t;
B2、根据时间标签中记录的数据块起始时间,选择其中最大的标签;当最大的时间标签为h时,确定当前查找的存储区域为[h,m],执行步骤C2;当最大的时间标签为m时,确定当前查找的存储区域为[m,t],执行步骤C2;当最大的时间标签为t时,确定t为最新的时间标签,执行步骤D2;
C2、判断所述确定的存储区域内是否存在三个或三个以上的时间标签,如果存在,取所述当前查找的存储区域中头部、中间和尾部三个位置的时间标签,依次记为h,m和t,返回执行步骤B2;否则,确定所述存储区域内两个时间标签中最大的时间标签为最新的时间标签,执行步骤D2;
D2、根据确定的最新时间标签记录的存储位置,读取到对应信息块的索引信息,根据该索引信息记录的存储长度读取下一个信息块的索引信息;根据当前索引信息中记录的起始时间判断该起始时间是否小于时间标签,如果是,则确定当前时间标签对应的信息块为最新记录的信息块,执行步骤E2;否则,再读取下一信息块,直到找到后一信息块的起始时间小于前一信息块起始时间,则确定此时在前的信息块为最新记录的信息块,执行步骤E2;
E2、在所确定的最新记录的信息块之后,写入数据。
8.一种存储流媒体数据的装置,其特征在于,该装置包括处理单元和写入单元;
所述处理单元,用于根据待存储的数据块得到该数据块对应的索引信息;其中,所述索引信息包括所述信息块的存储位置和存储长度,以及所述数据块对应流媒体的起始时间
所述写入单元,用于将所述处理单元得到的索引信息添加到所述数据块之前,并将该索引信息和所述数据块构成的信息块顺序写入存储单元。
9.根据权利要求8所述的装置,其特征在于,
所述处理单元,进一步用于在索引信息中设置索引标志,用来指示该索引信息对应信息块的起始。
10.根据权利要求8所述的装置,其特征在于,
所述写入单元,在存储单元上均匀的设置多个时间标签区域时,进一步用于将所得到的索引信息添加到所述数据块之后,将所述信息块写入存储单元之前,判断所述信息块写入存储单元之后,占用的存储区域是否会包含时间标签区域,如果会,则将所述信息块的存储位置和所述数据块对应流媒体的起始时间作为该时间标签区域的内容,在所述信息块中插入该时间标签,使插入时间标签后的信息块写入存储单元后,该时间标签占用自身对应的时间标签区域,再将插入时间标签后的信息块顺序写入存储单元,其中所述索引信息为该信息块加入时间标签后的存储长度;如果不会,则将所述信息块顺序写入存储单元。
11.根据权利要求10所述的装置,其特征在于,该装置进一步包括检索单元和读取单元;
所述检索单元,用于当根据检索时间检索流媒体数据时,根据时间标签中记录的数据块起始时间,查找得到等于检索时间或离检索时间最近的时间标签;根据查找得到的时间标签确定检索到的信息块;根据信息块中索引信息的记录返回对应数据块的存储位置;
所述读取单元,用于根据所述检索单元返回的存储位置进行数据读取,并在读取过程中剔除其中包含的时间标签。
12.根据权利要求11所述的装置,其特征在于,
所述检索单元,在根据时间标签中记录的数据块起始时间,查找得到等于检索时间或离检索时间最近的时间标签时,按照以下操作执行:
A1、取所述存储单元中头部、中间和尾部三个位置的时间标签,依次记为h,m和t;
B1、根据时间标签中记录的数据块起始时间,判断当前所取位置的时间标签中是否存在等于检索时间S的时间标签,如果存在,则等于S的时间标签即为查找得到的时间标签;如果不存在,执行步骤C1;
C1、判断当前三个时间标签中记录的数据块起始时间是否都小于S,如果是,执行步骤D1;否则,执行步骤E1;
D1、当h>=m时,确定当前查找的存储区域为[h,m],执行步骤F1;当m>=t时,确定当前查找的存储区域为[m,t],执行步骤F1;当t>=h时,确定当前查找的存储区域为[t,h],执行步骤F1;
E1、根据时间标签中记录的数据块起始时间,在大于S的时间标签中选择最接近S的时间标签x;当x=h时,确定当前查找的存储区域为[t,h],执行步骤F1;当x=m,确定当前查找的存储区域为[h,m],执行步骤F1;当x=t时,确定当前查找的存储区域为[m,t],执行步骤F1;
F1、判断所述确定的存储区域内是否存在三个或三个以上的时间标签,如果是,取所述当前查找的存储区域中头部、中间和尾部三个位置的时间标签,依次记为h,m和t,返回执行步骤B1;否则,取所述当前查找的存储区域中头部尾部两个位置的时间标签,依次记为h和t,执行步骤G1;
G1、当S和h或t相等时,则相等的时间标签为查找得到的时间标签,结束当前处理流程;当S大于h、小于t时,则h为查找得到的时间标签,结束当前处理流程;当S大于h和t时,则h和t中较大的时间标签为查找得到的时间标签,结束当前处理流程;当S小于h和t时,执行步骤H1;
H1、选择时间标签h和t中较小的记为P;找到该时间标签P之前的时间标签Q,根据时间记录的数据块起始时间比较时间标签的大小,当Q>=P时,确定P为查找得到的时间标签,结束当前处理流程;当S>=Q,确定Q为查找得到的时间标签,结束当前处理流程;当S<Q,将时间标签Q记录为当前时间标签P,返回执行找到当前时间标签之前的时间标签Q的操作。
13.根据权利要求12所述的装置,其特征在于,所述检索单元在根据查找得到的时间标签确定检索到的信息块时,按照以下操作执行:
当查找到的时间标签等于或大于检索时间时,该时间标签所对应的信息块即为检索到的信息块;
当查找到的时间标签小于检索时间时,根据该时间标签记录的存储位置,读取到对应信息块的索引信息,根据该索引信息记录的存储长度读取下一个信息块的索引信息,根据当前读取的索引信息中记录的起始时间判断该起始时间是否小于检索时间,如果小于,再根据当前索引信息中记录的存储长度读取下一个信息块的索引信息,直至找到记录的起始时间大于或等于检索时间的索引信息,则该索引信息对应的信息块为检索到的信息块;在始终找不到起始时间大于或等于检索时间的索引信息时,则表明检索失败,返回检索失败指示。
14.根据权利要求10所述的装置,其特征在于,该装置进一步包括中断控制单元;
所述中断控制单元,用于按照以下操作找到最新记录的信息块,用于在中断重启后在最新记录的信息块后写入数据;操作如下:
A2、取所述存储单元中头部、中间和尾部三个位置的时间标签,依次记为h,m和t;
B2、根据时间标签中记录的数据块起始时间,选择其中最大的标签;当最大的时间标签为h时,确定当前查找的存储区域为[h,m],执行步骤C2;当最大的时间标签为m时,确定当前查找的存储区域为[m,t],执行步骤C2;当最大的时间标签为t时,确定t为最新的时间标签,执行步骤D2;
C2、判断所述确定的存储区域内是否存在三个或三个以上的时间标签,如果存在,取所述当前查找的存储区域中头部、中间和尾部三个位置的时间标签,依次记为h,m和t,返回执行步骤B2;否则,确定所述存储区域内两个时间标签中最大的时间标签为最新的时间标签,执行步骤D2;
D2、根据确定的最新时间标签记录的存储位置,读取到对应信息块的索引信息,根据该索引信息记录的存储长度读取下一个信息块的索引信息;根据当前索引信息中记录的起始时间判断该起始时间是否小于时间标签,如果是,则确定当前时间标签对应的信息块为最新记录的信息块;否则,再读取下一信息块,直到找到后一信息块的起始时间小于前一信息块起始时间,则确定此时在前的信息块为最新记录的信息块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010175355.6A CN102243884B (zh) | 2010-05-12 | 2010-05-12 | 一种存储流媒体数据的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010175355.6A CN102243884B (zh) | 2010-05-12 | 2010-05-12 | 一种存储流媒体数据的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102243884A true CN102243884A (zh) | 2011-11-16 |
CN102243884B CN102243884B (zh) | 2014-04-30 |
Family
ID=44961892
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010175355.6A Active CN102243884B (zh) | 2010-05-12 | 2010-05-12 | 一种存储流媒体数据的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102243884B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103064879A (zh) * | 2012-11-22 | 2013-04-24 | 北京中创信测科技股份有限公司 | 一种大流量音视频数据存取方法 |
CN103970844A (zh) * | 2014-04-28 | 2014-08-06 | 北京创世漫道科技有限公司 | 大数据的写入方法和装置、读取方法和装置及处理系统 |
CN104657089A (zh) * | 2015-03-13 | 2015-05-27 | 浪潮集团有限公司 | 一种对象存储设备上的放置组的统一管理方法 |
CN105100716A (zh) * | 2015-07-23 | 2015-11-25 | 浙江立元通信技术股份有限公司 | 一种用于网络视频监控的安全存储单元及其系统 |
CN108111261A (zh) * | 2017-11-10 | 2018-06-01 | 北京全路通信信号研究设计院集团有限公司 | 搜索矩阵生成方法和报文搜索方法 |
CN111221467A (zh) * | 2018-11-26 | 2020-06-02 | 深圳市茁壮网络股份有限公司 | 数据写入、读取方法及对应的装置 |
CN112860920A (zh) * | 2021-01-19 | 2021-05-28 | 中国联合网络通信集团有限公司 | 媒体流数据存储方法、电子设备和计算机可读介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070097801A1 (en) * | 2003-12-26 | 2007-05-03 | Takuo Ohishi | Information recorder, information recording medium, and information recording method |
CN101169628A (zh) * | 2007-11-14 | 2008-04-30 | 中控科技集团有限公司 | 一种数据保存方法和装置 |
CN101193273A (zh) * | 2006-11-20 | 2008-06-04 | 中兴通讯股份有限公司 | 一种实时多媒体图像信息存储和播放方法 |
-
2010
- 2010-05-12 CN CN201010175355.6A patent/CN102243884B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070097801A1 (en) * | 2003-12-26 | 2007-05-03 | Takuo Ohishi | Information recorder, information recording medium, and information recording method |
CN101193273A (zh) * | 2006-11-20 | 2008-06-04 | 中兴通讯股份有限公司 | 一种实时多媒体图像信息存储和播放方法 |
CN101169628A (zh) * | 2007-11-14 | 2008-04-30 | 中控科技集团有限公司 | 一种数据保存方法和装置 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103064879A (zh) * | 2012-11-22 | 2013-04-24 | 北京中创信测科技股份有限公司 | 一种大流量音视频数据存取方法 |
CN103970844A (zh) * | 2014-04-28 | 2014-08-06 | 北京创世漫道科技有限公司 | 大数据的写入方法和装置、读取方法和装置及处理系统 |
CN103970844B (zh) * | 2014-04-28 | 2017-11-21 | 北京创世漫道科技有限公司 | 大数据的写入方法和装置、读取方法和装置及处理系统 |
CN104657089A (zh) * | 2015-03-13 | 2015-05-27 | 浪潮集团有限公司 | 一种对象存储设备上的放置组的统一管理方法 |
CN104657089B (zh) * | 2015-03-13 | 2017-09-22 | 浪潮集团有限公司 | 一种对象存储设备上的放置组的统一管理方法 |
CN105100716A (zh) * | 2015-07-23 | 2015-11-25 | 浙江立元通信技术股份有限公司 | 一种用于网络视频监控的安全存储单元及其系统 |
CN108111261A (zh) * | 2017-11-10 | 2018-06-01 | 北京全路通信信号研究设计院集团有限公司 | 搜索矩阵生成方法和报文搜索方法 |
CN108111261B (zh) * | 2017-11-10 | 2021-02-02 | 北京全路通信信号研究设计院集团有限公司 | 搜索矩阵生成方法和报文搜索方法 |
CN111221467A (zh) * | 2018-11-26 | 2020-06-02 | 深圳市茁壮网络股份有限公司 | 数据写入、读取方法及对应的装置 |
CN112860920A (zh) * | 2021-01-19 | 2021-05-28 | 中国联合网络通信集团有限公司 | 媒体流数据存储方法、电子设备和计算机可读介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102243884B (zh) | 2014-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102243884B (zh) | 一种存储流媒体数据的方法及装置 | |
CN101458956B (zh) | 存取一快闪存储器的装置、方法及平均地使用该快闪存储器的区块的方法 | |
CN102576333B (zh) | 非易失性存储器中的数据高速缓存 | |
CN101582052B (zh) | 存储器模组及于存储器模组中实现平均磨损的方法 | |
CN104731717B (zh) | 存储器装置及存储器管理方法 | |
CN102541757B (zh) | 写缓存方法、缓存同步方法和装置 | |
US10061704B2 (en) | Systems and methods for managing cache of a data storage device | |
CN107368436B (zh) | 一种联合地址映射表的闪存冷热数据分离存储方法 | |
CN101546282B (zh) | 用于在处理器中执行写拷贝的方法和设备 | |
US6473842B1 (en) | Virtual memory managing system for managing swap-outs by page units and a batch swap-out by task units | |
CN103019971A (zh) | 快速响应trim命令的方法、SSD控制器及系统 | |
CN104346357A (zh) | 一种嵌入式终端的文件存取方法及系统 | |
CN101241472A (zh) | 映射管理方法及系统 | |
CN102959548B (zh) | 数据存储方法、查找方法及装置 | |
CN102298543A (zh) | 一种存储器管理方法和装置 | |
CN105378685A (zh) | 数据存储装置和用于给数据存储装置分配数据的方法 | |
CN102622434A (zh) | 数据存储方法、查找方法及装置 | |
CN103383666A (zh) | 改善缓存预取数据局部性的方法和系统及缓存访问方法 | |
CN102542041A (zh) | 栅格数据处理方法及系统 | |
CN100578650C (zh) | 新型智能磁带机的数据处理方法 | |
US20120137107A1 (en) | Method of decaying hot data | |
CN101354635A (zh) | 信息记录装置及其控制方法 | |
CN102426601B (zh) | 数据删除方法和装置 | |
CN100543748C (zh) | 一种利用文件分配表进行文件寻道的方法及系统 | |
KR101826778B1 (ko) | 플래쉬 라이프 사이클 및 성능 개선을 고려한 eeprom 에뮬레이션 구현 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Patentee after: Xinhua three Technology Co., Ltd. Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base Patentee before: Huasan Communication Technology Co., Ltd. |
|
CP03 | Change of name, title or address |