一种高帧率视频录制方法、装置、计算机设备及存储介质制造方法及图纸

技术编号:34775041 阅读:56 留言:0更新日期:2022-08-31 19:45
本申请公开了一种高帧率视频录制方法、装置、计算机设备及存储介质。所述方法包括:获取高帧率视频录制过程中产生的帧数据,采用二进制流的形式将所述帧数据保存为文件数据;按照设定的命名规则对所述文件数据进行命名,并采用循环链表记录所有文件数据的文件名,每一个文件名分别对应所述循环链表中的一个结点;利用一个独立线程按照所述文件数据的保存顺序逐个读取文件数据并写入视频文件中,生成完整的高帧率视频;将所述写入视频文件的文件数据在所述循环链表中对应的文件名标记为可用。本申请在实现高帧率视频实时录制的同时,避免了因处理缓慢导致的丢帧、掉帧现象,且不会造成内存耗尽,同时避免对存储系统造成过多的碎片。片。片。

【技术实现步骤摘要】
一种高帧率视频录制方法、装置、计算机设备及存储介质


[0001]本申请涉及视频处理
,特别是涉及一种高帧率视频录制方法、装置、计算机设备及存储介质。

技术介绍

[0002]随着手机行业的快速发展,现在许多手机都能够拍摄高帧率视频。在拍摄高帧率视频时,为了能够控制拍摄的曝光、帧率等参数,无法使用系统高度封装的拍摄功能,而必须使用基础的API(Application Programming Interface,应用程序接口)来实现。使用基础API则需要开发者自行处理每一帧的保存,在处理过程中,如果吐帧的线程繁忙或阻塞,系统会自动丢弃后面的帧。另外,写入一帧到某种特定格式的视频文件时会有中间处理,并不是单纯的将数据追加。
[0003]目前,高帧率视频拍摄通常采用在内存中边拍边存的方式,即系统相机吐一帧就保存一帧。对于常规帧率(比如30帧/秒),由于帧间隔较大(通常在33毫秒左右),可以做到系统相机吐一帧就保存一帧。但在高帧率(240帧/秒)情况下,由于帧间隔较小以及设备性能等因素,写入一帧所需的时间可能会超过相机的吐帧间隔,从而导致掉帧。另外,由于系统吐帧和保存帧所使用的是同一片内存,当吐帧线程遭遇繁忙或阻塞时,无法将保存帧放到独立线程执行;如果先将帧数据拷贝到另一片内存后再到独立线程执行保存,可能会导致帧堆积而引起内存耗尽,最终使得程序崩溃。因此,采用在内存中边拍边存的方式进行高帧率视频拍摄并不可取。

技术实现思路

[0004]本申请提供了一种高帧率视频录制方法、装置、计算机设备及存储介质,旨在解决现有的高帧率视频拍摄方式存在的掉帧以及由于帧堆积而引起内存耗尽等技术问题。
[0005]为解决上述技术问题,本申请采用的技术方案为:
[0006]一种高帧率视频录制方法,包括:
[0007]获取高帧率视频录制过程中产生的帧数据,采用二进制流的形式将所述帧数据保存为文件数据;
[0008]按照设定的命名规则对所述文件数据进行命名,并采用循环链表记录所有文件数据的文件名,每一个文件名分别对应所述循环链表中的一个结点;
[0009]利用一个独立线程按照所述文件数据的保存顺序逐个读取文件数据并写入视频文件中,生成完整的高帧率视频;
[0010]将所述写入视频文件的文件数据在所述循环链表中对应的文件名标记为可用。
[0011]本申请实施例采取的技术方案还包括:所述采用二进制流的形式将所述帧数据保存为文件数据包括:
[0012]采用c++系统库中的ofstream类将所述帧数据以二进制流的形式保存为文件数据。
[0013]本申请实施例采取的技术方案还包括:所述文件数据的命名规则具体为:用户参数+视频录制时间+视频当前累计帧数。
[0014]本申请实施例采取的技术方案还包括:所述利用一个独立线程按照所述文件数据的保存顺序逐个读取文件数据并写入视频文件中具体为:
[0015]采用c++系统库中的ifstream类读入文件数据并写入视频文件中。
[0016]本申请实施例采取的技术方案还包括:所述将所述写入视频文件的文件数据在所述循环链表中对应的文件名标记为可用之后还包括:
[0017]判断当前的高帧率视频录制是否结束,如果录制结束,
[0018]判断是否进行新的高帧率视频录制,如果进行新的高帧率视频录制,
[0019]重新将所述高帧率视频录制过程中产生的帧数据以二进制流的形式保存为文件数据,并按照设定的查询规则从所述循环链表中查询是否存在可用的文件名,如果存在,
[0020]将所述循环链表中的可用文件名作为新保存文件数据的文件名。
[0021]本申请实施例采取的技术方案还包括:如果所述循环链表中不存在可用的文件名,所述重新将所述高帧率视频录制过程中产生的帧数据以二进制流的形式保存为文件数据还包括:
[0022]按照设定的命名规则对所述新保存文件进行命名,将所述文件名作为新的结点插入到循环链表中。
[0023]本申请实施例采取的技术方案还包括:所述对按照设定的查询规则从所述循环链表中查询是否存在可用的文件名具体为:
[0024]设立两个指针,其中一个指针指向所述循环链表中最新插入的结点,另一个指针指向所述循环链表中最后一个被标记为可用的结点,在从所述循环链表中查询是否存在可用的文件名时,从所述最新插入的结点开始,遍历到最后一个被标记为可用的结点结束。
[0025]本申请实施例采取的另一技术方案为:一种高帧率视频录制装置,包括:
[0026]数据存储模块:用于获取高帧率视频录制过程中产生的帧数据,采用二进制流的形式将所述帧数据保存为文件数据;
[0027]第一文件命名模块:用于按照设定的命名规则对所述文件数据进行命名,并采用循环链表记录所有文件数据的文件名,每一个文件名分别对应所述循环链表中的一个结点;
[0028]文件读取模块:用于利用一个独立线程按照所述文件数据的保存顺序逐个读取文件数据并写入视频文件中,生成完整的高帧率视频;
[0029]链表更新模块:用于将所述写入视频文件的文件数据在所述循环链表中对应的文件名标记为可用。
[0030]本申请实施例采取的又一技术方案为:一种计算机设备,所述计算机设备包括:
[0031]存储有可执行程序代码的存储器;
[0032]与所述存储器连接的处理器;
[0033]所述处理器调用所述存储器中存储的所述可执行程序代码,执行如上述高帧率视频录制方法中所述的高帧率视频录制方法。
[0034]本申请实施例采取的又一技术方案为:一种存储介质,存储有处理器可运行的程序指令,所述程序指令用于执行上述的高帧率视频录制方法。
[0035]本申请实施例的高帧率视频录制方法、装置、计算机设备及存储介质利用文件转存的方式将实时拍摄的帧数据以二进制流的形式保存为文件数据,再按照文件保存顺序逐个读取文件数据到视频文件中,形成完整的高帧率视频,在实现高帧率视频实时录制的同时,避免了因处理缓慢导致的丢帧、掉帧现象,且不会造成内存耗尽。同时,本申请利用循环链表管理文件名的重复利用,避免对存储系统造成过多的碎片。
附图说明
[0036]图1是本申请第一实施例的高帧率视频录制方法的流程示意图;
[0037]图2是本申请第二实施例的高帧率视频录制方法的流程示意图;
[0038]图3是本申请实施例高帧率视频录制装置的结构示意图;
[0039]图4是本申请实施例的计算机设备结构示意图;
[0040]图5是本申请实施例的存储介质结构示意图。
具体实施方式
[0041]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0042]本申本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种高帧率视频录制方法,其特征在于,包括:获取高帧率视频录制过程中产生的帧数据,采用二进制流的形式将所述帧数据保存为文件数据;按照设定的命名规则对所述文件数据进行命名,并采用循环链表记录所有文件数据的文件名,每一个文件名分别对应所述循环链表中的一个结点;利用一个独立线程按照所述文件数据的保存顺序逐个读取文件数据并写入视频文件中,生成完整的高帧率视频;将所述写入视频文件的文件数据在所述循环链表中对应的文件名标记为可用。2.根据权利要求1所述的高帧率视频录制方法,其特征在于,所述采用二进制流的形式将所述帧数据保存为文件数据包括:采用c++系统库中的ofstream类将所述帧数据以二进制流的形式保存为文件数据。3.根据权利要求1所述的高帧率视频录制方法,其特征在于,所述文件数据的命名规则具体为:用户参数+视频录制时间+视频当前累计帧数。4.根据权利要求2所述的高帧率视频录制方法,其特征在于,所述利用一个独立线程按照所述文件数据的保存顺序逐个读取文件数据并写入视频文件中具体为:采用c++系统库中的ifstream类读入文件数据并写入视频文件中。5.根据权利要求1至4任一项所述的高帧率视频录制方法,其特征在于,所述将所述写入视频文件的文件数据在所述循环链表中对应的文件名标记为可用之后还包括:判断当前的高帧率视频录制是否结束,如果录制结束,判断是否进行新的高帧率视频录制,如果进行新的高帧率视频录制,重新将所述高帧率视频录制过程中产生的帧数据以二进制流的形式保存为文件数据,并按照设定的查询规则从所述循环链表中查询是否存在可用的文件名,如果存在,将所述循环链表中的可用文件名作为新保存文件数据的文件名。6.根据权利要求5所述的高帧率视频录制方法,其特征...

【专利技术属性】
技术研发人员:曹宝林
申请(专利权)人:平安科技深圳有限公司
类型:发明
国别省市:

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

1