录像文件写方法和录制设备技术领域
本发明涉及文件写入方法,特别设计录像文件的写入。
背景技术
随着目前消费类电子产品所带CPU主频以及视频编码器性能的提高,产
品普遍带1080P以上分辨率的录像功能,甚至有多路高清录像的要求。为了
保证产品内部存储的寿命,一般来说这类产品都会要求客户使用外部存储设
备存储,如SD卡,硬盘等。这种情况下,经常会遇到外部存储写性能不够,
从而影响了录像的效果,也间接减少了外部存储的寿命。
发明内容
以下给出对一个或更多个方面的简化概述以力图提供对此类方面的基本
理解。此概述不是所有构想到的方面的详尽综览,并且既非旨在指认出所有
方面的关键性或决定性要素亦非试图界定任何或所有方面的范围。其唯一的
目的是要以简化形式给出一个或更多个方面的一些概念以作为稍后给出的更
加具体的说明之序。
本发明提供一种录像文件写方法和录制设备解决录像文件写入慢的问
题。
为实现上述目的,发明人提供了录像文件写方法,包括步骤:
获取存储器的文件系统的簇的大小,若获取到簇的大小,则将簇的大小
设为基准大小;
分配缓存池的容量为基准大小的整数倍;
接收写入请求,判断缓存池剩余的可写容量是否大于写入请求对应的请
求容量,
若可写容量大于请求容量,则将写入请求对应的数据写入缓存池,并更
新缓存池的可写容量,
若可写容量小于或等于请求容量,则向缓存池中写入可写容量大小的请
求数据,所述请求数据为写入请求对应的数据,然后将缓存池的数据写入存
储器,并将未写入缓存池的请求数据请求写入缓存池。
进一步,在步骤“获取存储器的文件系统的簇的大小,若获取到簇的大小,
则将簇的大小设为基准大小;”之后,在步骤“根据分配缓存池的容量为基
准大小的整数倍”之前还包括步骤:若无法获取簇的大小,则获取文件系统
IO的块大小,将文件系统IO的块大小设置为基准大小;若基准大小未设置,
则将基准大小设置为默认值128K。
进一步,,包括步骤,在收到清空请求时,若缓存池中有数据,则将缓存
池中的数据写入存储器,再进行清空操作。
进一步,,包括步骤,在收到文件操作指针偏移请求时,若当前文件指针
偏移值加上缓存池已有数据量等于此次文件请求指针偏移值时,则直接返回
成功,否则进行如下步骤:若缓存池中有数据,则将缓存池中的数据写入存
储器,再进行文件操作指针移位操作。
进一步,接收数据写入请求之后,判断缓存池剩余的可写容量是否大于写
入的请求之前,还包括步骤,判断文件操作指针是否有效。
发明人还提供一种录制设备,包括初始化模块、写请求判断模块,缓存
池写模块、存储器写模块;
所述初始化模块连接写请求判断模块,所述写请求判断模块连接缓存池
写模块、所述缓存池写模块连接存储器写模块;
所述初始化模块用于获取存储器的文件系统的簇的大小,若获取到簇的
大小,则将簇的大小设为基准大小;分配缓存池的容量为基准大小的整数倍;
所述写请求判断模块用于接收数据写入请求,判断缓存池剩余的可写容
量是否大于写入请求的请求容量;
所述缓存写模块用于在写容量大于请求容量,将写入请求对应的数据写
入缓存池,并更新缓存池的可写容量;在可写容量小于或等于请求容量,则
向缓存池中写入可写容量大小的请求数据,所述请求数据为写入请求对应的
数据,然后通过存储器写模块将缓存池的数据写入存储器,并将未写入缓存
池的请求数据请求写入缓存池;
所述存储器写模块用于在缓存池的可写入容量为0时,将缓存池的数据
写入存储器。
进一步,所述初始化模块用于获取存储器的文件系统的簇的大小,若获
取到簇的大小,则将簇的大小设为基准大小;若无法获取簇的大小,则获取
文件系统IO的块大小,将文件系统IO的块大小设置为基准大小;若基准大
小未设置,则将基准大小设置为默认值128K;
根据分配缓存池的容量为基准大小的整数倍。
进一步,还包括清空请求处理模块;所述清空请求处理模块连接初始化
模块和缓存写模块;
所述清空请求处理模块用于接收清空请求,若缓存池中有数据,则通过
存储器写模块将缓存池中的数据写入存储器,再进行清空操作。
进一步,还包括文件操作指针移位请求处理模块;所述文件操作指针移位
请求处理模块连接初始化模块和缓存写模块;
所述文件操作指针移位请求处理模块用于接收文件操作指针移位请求
时,若当前文件指针偏移值加上缓存池已有数据量等于此次文件请求指针偏
移值时,则直接返回成功,否则进行如下步骤:若缓存池中有数据,则通过
存储器写模块将缓存池中的数据写入存储器,再进行文件操作指针移位操作。
进一步,写请求判断模块还用于判断文件操作指针是否有效。
区别于现有技术,上述技术方案特别是在录制视频时,由于视频图像数
据有极强的相关性,也就是说有大量的冗余信息。其中冗余信息可分为空域
冗余信息和时域冗余信息。在录制视频时,常采用压缩技术(例如H26x系列)
将数据中的冗余信息去掉(去除数据之间的相关性),这样导致单位时间内的
请求写入存储器的数据量不是恒定的;通过上述方法保证写入存储器的视频
数据都是簇对齐的,从而减少操作存储器中的簇的次数,在向存储器写入视
频数据时,具有较快的速度。同时对于同等数量的视频数据,能减少写入次
数,从容提高了存储器的使用寿命。
为能达成前述及相关目的,这一个或更多个方面包括在下文中充分描述
并在所附权利要求中特别指出的特征。以下描述和附图详细阐述了这一个或
更多个方面的某些说明性特征。但是,这些特征仅仅是指示了可采用各种方
面的原理的各种方式中的若干种,并且本描述旨在涵盖所有此类方面及其等
效方面。
附图说明
以下将结合附图来描述所公开的方面,提供附图是为了说明而非限定所
公开的方面,附图中相似的标号标示相似要素,并且在其中:
图1具体实施方式所述的录像文件写入方法;
图2为具体实施方式所述所述的录制设备模块示意图。
附图标记说明:
20、录制设备;
201、初始化模块;
202、写请求判断模块;
203、清空请求处理模块;
204、文件操作指针位移请求处理模块;
205、缓存池写模块;
206、存储器写模块。
具体实施方式
为详细说明技术方案的技术内容、构造特征、所实现目的及效果,以下
结合具体实施例并配合附图详予说明。在以下描述中,出于解释目的阐述了
众多的具体细节以提供对一个或更多个方面的透彻理解。但是显而易见的是,
没有这些具体细节也可实践此类方面。
录像文件写方法,参见图1,其包括步骤:
获取存储器的文件系统的簇的大小,若获取到簇的大小,则将簇的大小
设为基准大小;
分配缓存池的容量为基准大小的整数倍;
接收写入请求,判断缓存池剩余的可写容量是否大于写入请求对应的的
请求容量,
若可写容量大于请求容量,则将写入请求对应的数据写入缓存池,并更
新缓存池的可写容量,
若可写容量小于或等于请求容量,则向缓存池中写入可写容量大小的请
求数据,所述请求数据为写入请求对应的数据,然后将缓存池的数据写入存
储器,并将未写入缓存池的请求数据请求写入缓存池。
磁盘是由一个一个扇区组成的,若干个扇区合为一个簇,文件存取是以
簇(cluster)为单位的。
基准大小优选的为簇的大小,所述缓存池可以是内存中开辟的存储空间,
也可以是对应的硬件缓存池。将缓存池的大小设置为簇大小的整数倍,使请
求数据在写入存储器时尽可能是写入整簇的,从而减少了视频文件写入时操
作簇的次数,从而加快写入速度。
在写入录像文件时,先接收数据写入请求Q1,写入请求Q1中包含请求
写入数据的大小Q1-size(即请求容量)。写入请求即Write操作。
当缓存池的可写容量S-size大于请求容量Q1-size时,即在缓存池空置的
空间足够写入请求数据时,将写入请求Q1对应的请求数据写入缓存池空置的
空间;当缓存池的可写容量S-size小于或等于请求容量Q1-size时,则将缓存
池写满后(即将写入请求Q1中的S-size的数据写入缓存池对应的空置空间),
然后将缓存池中的数据写入存储器,再向缓存池请求写入未写入的数据,即
将Q1-size减去S-size的未写入的数据重新生成写入请求Q2。
特别是在录制视频时,由于视频图像数据有极强的相关性,也就是说有
大量的冗余信息。其中冗余信息可分为空域冗余信息和时域冗余信息。在录
制视频时,常采用压缩技术(例如H26x系列)将数据中的冗余信息去掉(去
除数据之间的相关性),这样视频录制过程中单位时间内的请求写入存储器的
数据量不是恒定的;通过上述方法保证写入存储器的视频数据都是簇对齐的,
从而减少操作存储器中的簇的次数,在向存储器写入视频数据时,具有较快
的速度。同时对于同等数量的视频数据,能减少写入次数,从容提高了存储
器的使用寿命。
在步骤“获取存储器的文件系统的簇的大小,若获取到簇的大小,则将
簇的大小设为基准大小;”之后,在步骤“根据分配缓存池的容量为基准大
小的整数倍”之前还包括步骤:若无法获取簇的大小,则获取IO块大小,将
IO块大小设置为基准大小;若基准大小未设置,则将基准大小设置为默认值
128K。在收到清空请求时,若缓存池中有数据,则将缓存池中的数据写入存
储器,再进行清空操作。
接收到清空请求(Flush)后,将缓存池中的数据写入存储器,调用同模
块中的Flush接口清除当前的缓存数,保证请清空数据,同时缓存池的已写大
小设置为0;在收到文件操作指针偏移请求时,若缓存池中有数据,则将缓存
池中的数据写入存储器,再进行文件操作指针移位操作。
接收到文件操作指针偏移请求(Seek)后,若当前文件指针偏移值(Offset)
加上缓存池已有数据量等于此次文件请求指针偏移值时,则直接返回成功,
否则进行如下步骤:将缓存池中的数据写入存储器,再进行文件操作指针移
位操作。根据文件操作指针偏移请求中的偏移量以及当前文件指针偏移值
(Offset),计算Seek后的文件偏移量与Cluster对其还差多少,以使seek后第
一次写操作进行补偿对齐。补偿对齐为写入数据使得簇对齐。
接收数据写入请求之后,判断缓存池剩余的可写容量是否大于写入的请
求之前,还包括步骤,判断文件操作指针是否有效。
可以理解的是接收清空请求或文件操作指针偏移请求之后,也可判断请
求中的文件操作指针是否有效。若指针无效则不处理请求。
录制设备20包括初始化模块201、写请求判断模块202,缓存池写模块
205、存储器写模块206;
所述初始化模块201连接写请求判断模块202,所述写请求判断模块202
连接缓存池写模块205,所述缓存池写模块205连接存储器写模块206;
所述初始化模块201用于获取存储器的文件系统的簇的大小,若获取到簇
的大小,则将簇的大小设为基准大小;分配缓存池的容量为基准大小的整数
倍;
所述写请求判断模块202用于接收数据写入请求,判断缓存池剩余的可写
容量是否大于写入请求的请求容量;
所述缓存写模块205用于在写容量大于请求容量,将写入请求对应的数据
写入缓存池,并更新缓存池的可写容量;在可写容量小于或等于请求容量,
则向缓存池中写入可写容量大小的请求数据,所述请求数据为写入请求对应
的数据,然后通过存储器写模块将缓存池的数据写入存储器,并将未写入缓
存池的请求数据请求写入缓存池;
所述存储器写模块206用于在缓存池的可写入容量为0时,将缓存池的数
据写入存储器。
所述初始化模块201用于获取存储器的文件系统的簇的大小,若获取到簇
的大小,则将簇的大小设为基准大小;若无法获取簇的大小,则获取文件系
统IO的块大小,将文件系统IO的块大小设置为基准大小;若基准大小未设
置,则将基准大小设置为默认值128K;
根据分配缓存池的容量为基准大小的整数倍。
还包括清空请求处理模块203;所述清空请求处理模块连接初始化模块和
缓存写模块;
所述清空请求处理模块用于接收清空请求,若缓存池中有数据,则通过
存储器写模块将缓存池中的数据写入存储器,再进行清空操作。
还包括文件操作指针移位请求处理模块;所述文件操作指针移位请求处
理模块连接初始化模块和缓存写模块;
所述文件操作指针移位请求处理模块204用于接收文件操作指针移位请
求时,,若当前文件指针偏移值加上缓存池已有数据量等于此次文件请求指针
偏移值时,则直接返回成功,否则进行如下步骤:若缓存池中有数据,则通
过存储器写模块将缓存池中的数据写入存储器,再进行文件操作指针移位操
作。
写请求判断模块还用于判断文件操作指针是否有效。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来
将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示
这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、
“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系
列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没
有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设
备所固有的要素。在没有更多限制的情况下,由语句“包括……”或“包含……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中
还存在另外的要素。此外,在本文中,“大于”、“小于”、“超过”等理解为不
包括本数;“以上”、“以下”、“以内”等理解为包括本数。
本领域内的技术人员应明白,上述各实施例可提供为方法、装置、或计
算机程序产品。这些实施例可采用完全硬件实施例、完全软件实施例、或结
合软件和硬件方面的实施例的形式。上述各实施例涉及的方法中的全部或部
分步骤可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算
机设备可读取的存储介质中,用于执行上述各实施例方法所述的全部或部分
步骤。所述计算机设备,包括但不限于:个人计算机、服务器、通用计算机、
专用计算机、网络设备、嵌入式设备、可编程设备、智能移动终端、智能家
居设备、穿戴式智能设备、车载智能设备等;所述的存储介质,包括但不限
于:RAM、ROM、磁碟、磁带、光盘、闪存、U盘、移动硬盘、存储卡、记
忆棒、网络服务器存储、网络云存储等。
上述各实施例是参照根据实施例所述的方法、设备(系统)、和计算机程序
产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程
图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流
程和/或方框的结合。可提供这些计算机程序指令到计算机设备的处理器以
产生一个机器,使得通过计算机设备的处理器执行的指令产生用于实现在流
程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的
装置。
这些计算机程序指令也可存储在能引导计算机设备以特定方式工作的计
算机设备可读存储器中,使得存储在该计算机设备可读存储器中的指令产生
包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/
或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机设备上,使得在计算机设备上执
行一系列操作步骤以产生计算机实现的处理,从而在计算机设备上执行的指
令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个
方框中指定的功能的步骤。
尽管已经对上述各实施例进行了描述,但本领域内的技术人员一旦得知
了基本创造性概念,则可对这些实施例做出另外的变更和修改,所以以上所
述仅为本发明的实施例,并非因此限制本发明的专利保护范围,凡是利用本
发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用
在其他相关的技术领域,均同理包括在本发明的专利保护范围之内。