发明内容
本发明提供了一种流媒体存储方法和设备,以提高流媒体存储的效率。
本发明提供一种流媒体资源存储方法,应用于包括存储设备和至少一个编码设备的系统中,包括:
所述存储设备接收编码设备发送的流媒体资源的写请求,所述写请求中携带所述流媒体资源请求写入所述存储设备的逻辑地址;
所述存储设备为所述写请求分配存储所述流媒体资源的物理地址,并存储所述写请求中携带的逻辑地址与所述物理地址的对应关系,所述物理地址与上一次流媒体资源在所述存储设备内实际写入的物理地址连续;
所述存储设备将所述流媒体资源写入为所述写请求分配的存储所述流媒体资源的物理地址。
所述存储设备为所述写请求分配存储所述流媒体资源的物理地址之前,还包括:
所述存储设备将存储空间划分为不同的地址区域;所述不同的地址区域分别具有不同连续范围的物理地址。
所述写请求中还携带流媒体资源的大小;
所述存储设备为所述写请求分配存储所述流媒体资源的物理地址包括:
所述存储设备根据所述写请求中携带的逻辑地址和所述流媒体资源的大小获取流媒体资源请求写入的逻辑地址的范围;
所述存储设备根据所述逻辑地址的范围选择流媒体资源存储的地址区域;
当所述逻辑地址的范围在一个地址区域内时,所述存储设备在所述地址区域内为所述写请求分配物理地址,所述物理地址与上一次流媒体资源在所述地址区域内实际写入的物理地址连续;
当所述逻辑地址的范围在N个地址区域内时,所述存储设备将所述写请求划分N个写请求,其中每一写请求的逻辑地址的范围存在于所述N个地址区域中的一个地址区域;所述存储设备还在所述N个地址区域的每一个地址区域内分别为该地址区域内的写请求分配物理地址,所述物理地址与上一次流媒体资源在该地址区域内实际写入的物理地址连续。
本发明提供的方法,还包括:
所述存储设备在每一地址区域内配置报警物理地址;
当流媒体资源在地址区域内实际写入的物理地址大于或等于所述报警物理地址时,所述存储设备删除所述地址区域的下一个地址区域内存储的流媒体资源。
所述存储所述写请求中携带的逻辑地址与所述物理地址的对应关系包括:
所述存储设备内配置映射表,所述映射表初始为空;
当所述存储设备接收写请求时,所述存储设备在所述映射表内增加表项,所述表项记录所述写请求中携带的逻辑地址与所述存储设备为所述写请求分配的物理地址的对应关系;
所述映射表以逻辑地址为索引,并按照逻辑地址排序。
本发明提供的方法,还包括:
所述存储设备配置所述映射表内表项的合并条件,所述合并条件具体为:当前写请求中携带的逻辑地址等于上一次写请求中携带的逻辑地址与所述上一次写请求中携带的流媒体资源的大小的和;并且,当前物理地址等于为所述上一次写请求分配的物理地址与所述上一次写请求中携带的流媒体资源的大小的和;
当所述映射表内的表项满足所述合并条件时,所述存储设备合并所述表项。
本发明提供一种流媒体资源存储设备,包括:
写请求接收单元,用于接收编码设备发送的流媒体资源的写请求,所述写请求中携带所述流媒体资源请求写入所述存储设备的逻辑地址;
地址分配单元,用于为所述写请求分配存储所述流媒体资源的物理地址,所述物理地址与上一次流媒体资源在所述存储设备内实际写入的物理地址连续;
对应关系存储单元,用于存储所述写请求中携带的逻辑地址与所述物理地址的对应关系;
媒体写入单元,用于将所述流媒体资源写入为所述写请求分配的存储所述流媒体资源的物理地址。
本发明提供的流媒体资源存储设备,还包括:
物理地址配置单元,用于配置存储所述流媒体资源的物理地址;将存储空间划分为不同的地址区域;所述不同的地址区域分别具有不同连续范围的物理地址。
所述地址分配单元包括:
逻辑地址范围获取子单元,用于根据所述写请求中携带的逻辑地址和所述流媒体资源的大小获取流媒体资源请求写入的逻辑地址的范围;
地址区域选择子单元,用于根据所述逻辑地址范围获取子单元获取的逻辑地址的范围选择流媒体资源存储的地址区域;
物理地址分配子单元,用于当所述逻辑地址的范围在一个地址区域内时,在所述一个地址区域内为所述写请求分配物理地址,所述物理地址与上一次流媒体资源在所述一个地址区域内实际写入的物理地址连续;当所述逻辑地址的范围在N个地址区域内时,将所述写请求划分N个写请求,其中每一写请求的逻辑地址的范围存在于所述N个地址区域中的一个地址区域;在所述N个地址区域的每一个地址区域内分别为该地址区域内的写请求分配物理地址,所述物理地址与上一次流媒体资源在该地址区域内实际写入的物理地址连续。
本发明提供的流媒体资源存储设备,还包括:
报警删除单元,用于在每一地址区域内配置报警物理地址;当流媒体资源在地址区域内实际写入的物理地址大于或等于所述报警物理地址时,删除所述地址区域的下一个地址区域内存储的流媒体资源。
所述对应关系存储单元包括:
映射表建立子单元,用于为所述存储设备配置映射表,所述映射表初始为空;
表项添加子单元,用于当所述存储设备接收写请求时,在所述映射表内增加表项,所述表项记录所述写请求中携带的逻辑地址与所述存储设备为所述写请求分配的物理地址的对应关系。
本发明提供的流媒体资源存储设备,还包括:
表项合并单元,用于配置所述映射表内表项的合并条件,并在所述映射表内的表项满足所述合并条件时,合并所述表项;所述合并条件具体为:当前写请求中携带的逻辑地址等于上一次写请求中携带的逻辑地址与所述上一次写请求中携带的流媒体资源的大小的和;并且,当前物理地址等于为所述上一次写请求分配的物理地址与所述上一次写请求中携带的流媒体资源的大小的和。
与现有技术相比,本发明至少具有以下优点:
存储设备接收编码设备发送的流媒体资源的写请求后,为该写请求分配物理地址,该物理地址与上一次流媒体资源在存储设备内实际写入的物理地址连续,从而实现存储设备中流媒体资源的顺序存储,提高流媒体资源的存储效率。
具体实施方式
本发明的核心思想在于:将存储设备中流媒体资源的随机读写转换为顺序读写,利用存储设备顺序读写的性能远大于随机读写的性能的特点,提高流媒体资源在存储设备中读写的效率。
本发明提供一种流媒体资源存储方法,应用于包括存储设备和至少一个编码设备的系统中,如图1所示,包括以下步骤:
步骤s101,所述存储设备接收编码设备发送的流媒体资源的写请求,所述写请求中携带所述流媒体资源请求写入所述存储设备的逻辑地址;
步骤s102,所述存储设备为所述写请求分配存储所述流媒体资源的物理地址,并存储所述写请求中携带的逻辑地址与所述物理地址的对应关系,所述物理地址与上一次流媒体资源在所述存储设备内实际写入的物理地址连续;
步骤s103,所述存储设备将所述流媒体资源写入为所述写请求分配的存储所述流媒体资源的物理地址。
通过采用本发明提供的方法,存储设备接收编码设备发送的流媒体资源的写请求后,为该写请求分配物理地址,该物理地址与上一次流媒体资源在存储设备内实际写入的物理地址连续,从而实现存储设备中流媒体资源的顺序存储,提高流媒体资源的存储效率。
存储设备可以同时连接多个编码装置或者单个编码装置,进行流媒体资源的存储。下面首先以存储设备接收单个编码装置发送的流媒体资源为例,对本发明提供的流媒体资源的存储方法进行介绍。
其中,存储设备将存储空间划分为多个地址区域,并在每一地址区域内设置报警物理地址,当地址区域内流媒体资源实际写入的物理地址达到或超过报警物理地址时,存储设备清空该地址区域的下一地址区域内原来存储的流媒体资源,并在该地址区域内流媒体资源存满时,到下一地址区域内继续存储流媒体资源,以实现流媒体资源在存储设备内的循环存储。具体的,如图2所示,该存储方法包括以下步骤:
步骤s201,存储设备将存储空间划分为X个地址区域,建立逻辑地址到物理地址的映射表。
具体的,以存储设备将存储空间划分为三个大小相等的地址区域为例进行介绍。其中,每个地址区域的大小为2000,区域1的地址空间为0~1999,区域2的地址空间为2000~3999,区域3的地址空间为4000~5999。为了便于对上述三个地址区域的管理,存储设备为每一地址区域建立映射表,如表1所示。
表1
所述映射表内包括:
逻辑地址,当有流媒体资源请求写入该存储设备时,该请求中携带的写入地址,该写入地址为流媒体资源请求写入存储设备的地址的首地址;
物理地址,存储设备为请求写入的流媒体资源分配的实际写入首地址;
大小,即请求写入的流媒体资源的大小。
地址区域1的映射表中存储逻辑地址0~1999与物理地址0~1999的对应关系;地址区域2负责逻辑地址2000~3999与物理地址2000~3999的对应关系;地址区域3负责逻辑地址4000~5999与物理地址4000~5999的对应关系。
步骤s202,存储设备接收到编码设备的写请求时,根据该写请求中携带的逻辑地址和流媒体资源的大小信息获取流媒体资源请求写入的逻辑地址的范围,进而选择相应的存储区域存储该流媒体资源,并在映射表中添加相应的表项。
具体的,写请求中携带的逻辑地址为流媒体资源在存储设备内请求写入的首地址,该写请求中还携带请求写入的流媒体资源的大小信息。存储设备接收到写请求后,首先根据写请求中携带的逻辑地址和流媒体资源的大小计算流媒体资源请求写入的逻辑地址的范围。其次,存储设备根据计算获得的逻辑地址的范围与上一步骤中划分的各地址区域的逻辑地址范围选择相应的地址区域存储该流媒体资源。然后,存储设备在选定的地址区域内为该流媒体资源分配与上一次流媒体资源实际写入的物理地址连续的物理地址,该分配的物理地址是存储设备为上一流媒体资源分配的物理地址与上一次流媒体资源的大小的和,该物理地址是存储设备为请求写入的流媒体资源分配的实际写入首地址。存储设备还在映射表中增加相应的表项,表项中的逻辑地址为写请求中携带的逻辑地址;表项中的物理地址为存储设备为请求写入的流媒体资源分配的实际写入首地址。
例如,当流媒体资源的写请求中携带的逻辑地址为100,数据大小为500时,存储设备在接收该写请求后,计算流媒体资源请求写入的逻辑地址范围为100~599,该地址范围在步骤s201划分的地址区域1内,因此,存储设备为该流媒体资源在地址区域1内分配物理地址,该物理地址与地址区域1内上一次流媒体资源实际写入的物理地址连续。
但是,当流媒体资源的写请求中携带的逻辑地址在地址区域1,存储设备计算得到该流媒体资源请求写入的逻辑地址范围在地址区域1和地址区域2内时,即该写请求中携带的逻辑地址与流媒体资源的大小的和大于地址区域1内最大逻辑地址,此时,存储设备首先将该写请求拆分为两个写请求,拆分后的两个写请求中的流媒体资源分别请求写入地址区域1和地址区域2内。例如:当写请求中携带的逻辑地址为1900,流媒体资源的大小为200时,该流媒体资源请求写入的逻辑地址范围应为1900~2099,此时,存储设备需要首先将该写请求拆分为两个写请求,该两个写请求中携带的逻辑地址分别为1900和2000,流媒体资源的大小分别为100,然后存储设备为第一个写请求在地址区域1内分配物理地址,该分配的物理地址与上一次流媒体资源在地址区域1内实际写入的物理地址连续;存储设备为第二个写请求在地址区域2内分配物理地址,该分配的物理地址与上一次流媒体资源在地址区域2内实际写入的物理地址连续。
存储设备根据写请求中的逻辑地址选择存储区域并分配物理地址后,在该存储区域的映射表中添加相应的表项。其中,存储设备在映射表中添加的表项中的逻辑地址为写请求中携带的逻辑地址,存储设备在映射表中添加的表项中的物理地址是存储设备为该流媒体资源分配的物理地址,该物理地址为流媒体资源实际写入存储设备的首地址,与上一次流媒体资源实际写入的物理地址连续,以保证存储设备中每一地址区域内的流媒体资源按照物理地址顺序写入。存储设备在映射表中存储该写请求中的逻辑地址与物理地址的对应关系。
下面以一个具体的例子介绍存储设备在映射表中添加表项的过程。其中,映射表以逻辑地址为索引,并按逻辑地址排序。存储设备中的地址区域仍以步骤s201中划分的三个地址区域为例,每一地址区域的大小为2000,编码设备顺序发送三个写请求,该三个写请求为:
(起始地址,大小)=(100,100),(500,100),(300,100);
具体的,该过程如图3所示,包括以下步骤:
步骤s2021,存储设备接收编码设备的第一个写请求,在映射表中为该写请求添加表项。
具体的,该第一个写请求中携带的逻辑地址为100,数据大小为100。存储设备接收该写请求后,获知该写请求的逻辑地址范围应为100~199,在地址区域1内。存储设备在地址区域1内为该写请求分配物理地址,若此时该地址区域1内的表项为空,则如表2所示,为该请求分配的物理地址为0,大小为100,此次流媒体资源实际写入的物理地址范围为0~99。
表2
步骤s2022,存储设备接收编码设备的第二个写请求,在映射表中为该写请求添加表项。
具体的,存储设备接收该第二个写请求的逻辑地址为500,数据大小为100。存储设备接收该第二个写请求后,获知该写请求的逻辑地址范围应为500~599,在地址区域1内为该写请求分配物理地址。由于第一个写请求中流媒体资源实际写入的物理地址范围为0~99,所以本次存储设备分配的物理地址为100,由于本次请求写入的资源大小为100,所以本次流媒体资源实际写入的物理地址范围为100~199。
表3
逻辑地址物理地址大小100 0 100500 100 100 |
步骤s2023,存储设备接收编码设备的第三个写请求,在映射表中为该写请求添加表项。
具体的,存储设备接收该第三个写请求的逻辑地址为300,数据大小为100。存储设备接收该第三个写请求后,为该写请求中的流媒体资源分配物理地址200,并从该地址开始在存储设备中写入流媒体资源,如表4所示:
表4
逻辑地址 物理地址 大小100 0 100300 200 100500 100 100 |
本应用场景中,存储设备中可以设置映射表中的表项合并条件,当映射表中的两个表项符合合并条件时,合并该两个表项;具体的,两个表项合并的条件为:
物理地址表项Y=物理地址表项X+大小表项X,
逻辑地址表项Y=逻辑地址表项X+大小表项X,其中,Y>X
也就是说,存储设备当前接收的写请求中的逻辑地址等于上一次写请求中的逻辑地址与上一写入的流媒体资源的大小的和,并且,存储设备为当前接收的写请求中的流媒体资源分配的物理地址等于上一次为流媒体资源分配的物理地址与上一次流媒体资源的大小的和。当满足合并条件时,存储设备可以将表项Y删除,将表项X的大小修改为两个表项大小之和。例如,如表5所示:
表5
逻辑地址物理地址 大小100 0 100200 100 100500 200 100 |
表项1的逻辑地址为100、数据大小为100,和为200,等于表项2的逻辑地址;同时表项2的物理地址为100,等于表项1的物理地址与流媒体资源大小的和,因此,表项1与表项2满足合并条件,可以合并。将表5中的表项1与表项2合并后如表6所示:
表6
逻辑地址 物理地址 大小100 0 200500 200 100 |
将表5中的表项1与表项2合并后,减少表项数,有利于节约网络资源。
步骤s203,存储设备在每一地址区域中预设报警物理地址,当流媒体资源在地址区域内实际写入的物理地址大于或等于报警物理地址时,存储设备删除下一地址区域内存储的流媒体资源。
具体的,存储设备在每一地址区域内配置报警物理地址,当流媒体资源在地址区域内实际写入的物理地址大于或等于报警物理地址时,存储设备删除该地址区域的下一个地址区域内存储的流媒体资源,该下一个地址区域可以与当前的地址区域在物理地址上连续,或者不连续;并且,存储设备清空该下一地址区域的映射表。
报警物理地址的值可以灵活设置,例如可以设置为该地址区域物理地址范围的百分比,或者具体的物理地址。以上述地址区域1为例,该报警物理地址可以为1599,当流媒体资源在地址区域内实际写入的物理地址大于或等于1599时,存储设备删除地址区域2内原来存储的流媒体资源,并清空地址区域2的映射表。
本应用场景中,存储设备还可以根据其他原因删除存储的流媒体资源,其中,其他原因包括存储设备接收用户向存储设备下发的媒体资源删除命令。
步骤s204,存储设备接收终端设备的读请求,向终端设备发送流媒体资源。
具体的,终端设备的读请求中携带流媒体资源的逻辑地址,存储设备根据该读请求中携带的逻辑地址在映射表查询,找到相应的逻辑地址后,根据逻辑地址与物理地址的对应关系确定相应的物理地址,根据该物理地址读取相应的数据向终端设备发送;或者存储设备也可以将物理地址向终端设备发送,由终端设备根据该物理地址直接读取存储设备内存储的流媒体资源。
下面以存储设备接收多个编码装置发送的流媒体资源为例,对本发明提供的流媒体资源的存储方法进行介绍,其中多个编码装置以编码器1、编码器2和编码器3为例。
与单个编码装置不同的是,存储设备需要预先与该三个编码器约定逻辑地址区域,使各编码器具有不同的逻辑地址区域,进一步的,使各编码器向存储设备发送的写请求中携带不同的逻辑地址。相应的,存储设备中划分与逻辑地址区域相应的物理地址区域。
具体的,系统为各个编码器划分的逻辑地址区域可以大小相同或者不同,例如系统为上述3个编码器分配的地址区域为:编码器1对应表1中每个地址区域的前三分之一;编码器2对应表1中每个区域的中三分之一;编码器3对应表1中每个区域的后三分之一。进一步的,在编码器的逻辑地址区域内,系统还可以划分若干小的地址区域,例如编码器1的逻辑地址区域划分为3个小的地址区域,存储设备在与该逻辑地址区域相应的物理地址区域内同样划分3个小的地址区域,并可以在每一小的物理地址区域内设置报警物理地址,与上述单个编码装置在存储设备中的数据写入类似,编码器1可以在该3个小的地址区域内循环存储流媒体资源。由于各编码器在各自地址区域内对流媒体资源的存储过程同上述步骤s201~步骤s204相同或相似,此处不再赘述。
本应用场景中,映射表通常存储在存储设备的内存中,当存储设备下电时,该映射表被存储到存储设备的硬盘中;如果存储设备具有write-backcache(回写式高速缓存)功能,映射表可以存储在cache(高速缓存器)。
通过采用本发明提供的方法,存储设备接收编码设备发送的流媒体资源的写请求后,为该写请求分配物理地址,该物理地址与上一次流媒体资源在存储设备中实际写入的物理地址连续,从而实现存储设备中流媒体资源的顺序存储,提高流媒体资源的存储效率。
本发明提供一种流媒体资源存储设备,如图4所示,包括:
写请求接收单元11,用于接收编码设备发送的流媒体资源的写请求,所述写请求中携带所述流媒体资源请求写入所述存储设备的逻辑地址。
地址分配单元12,用于为所述写请求分配存储所述流媒体资源的物理地址,所述物理地址与上一次流媒体资源在所述存储设备内实际写入的物理地址连续。
该所述地址分配单元12包括逻辑地址范围获取子单元121、地址区域选择子单元122和物理地址分配子单元123。其中,逻辑地址范围获取子单元121,用于根据所述写请求中携带的逻辑地址和所述流媒体资源的大小获取流媒体资源请求写入的逻辑地址的范围;地址区域选择子单元122,用于根据所述逻辑地址范围获取子单元获取的逻辑地址的范围选择流媒体资源存储的地址区域;物理地址分配子单元123,用于当所述逻辑地址的范围在一个地址区域内时,在所述一个地址区域内为所述写请求分配物理地址,所述物理地址与上一次流媒体资源在所述一个地址区域内实际写入的物理地址连续;当所述逻辑地址的范围在N个地址区域内时,将所述写请求划分N个写请求,其中每一写请求的逻辑地址的范围存在于所述N个地址区域中的一个地址区域;在所述N个地址区域的每一个地址区域内分别为该地址区域内的写请求分配物理地址,所述物理地址与上一次流媒体资源在该地址区域内实际写入的物理地址连续。
对应关系存储单元13,用于存储逻辑地址与物理地址的对应关系。
该对应关系存储单元13包括映射表建立子单元131和表项添加子单元132。其中,映射表建立子单元131,用于为所述存储设备配置映射表,所述映射表初始为空;表项添加子单元132,用于当所述存储设备接收写请求时,在所述映射表内增加表项,所述表项记录所述写请求携带的逻辑地址与所述存储设备为所述写请求分配的物理地址的对应关系。
媒体写入单元14,用于将所述流媒体资源写入为所述写请求分配的存储所述流媒体资源的物理地址。
优选的,本发明提供的流媒体资源存储设备,还可以包括:
物理地址配置单元15,用于配置存储所述流媒体资源的物理地址,将存储空间划分为不同的地址区域;所述不同的地址区域分别具有不同连续范围的物理地址。
报警删除单元16,用于在每一地址区域内配置报警物理地址;当流媒体资源在地址区域内实际写入的物理地址大于或等于所述报警物理地址时,删除所述地址区域的下一个地址区域内存储的流媒体资源。
优选的,本发明提供的流媒体资源存储设备,还可以包括:
表项合并单元17,用于配置所述映射表内表项的合并条件,并在所述映射表内的表项满足所述合并条件时,合并所述表项;所述合并条件具体为:当前写请求中携带的逻辑地址等于上一次写请求中携带的逻辑地址与所述上一次写请求中携带的流媒体资源的大小的和;并且,当前物理地址等于为所述上一次写请求分配的物理地址与所述上一次写请求中携带的流媒体资源的大小的和。
通过采用本发明提供的流媒体存储设备,流媒体存储设备接收编码设备发送的流媒体资源的写请求后,为该写请求分配物理地址,该物理地址与上一次流媒体资源在存储设备中实际写入的物理地址连续,从而实现存储设备中流媒体资源的顺序存储,提高流媒体资源的存储效率。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。