录像文件生成方法、装置及电子设备与流程

专利2022-06-29  61


本申请涉及视频监控技术,尤其涉及一种录像文件生成方法、装置及电子设备。



背景技术:

随着视频监控技术的高速发展,视频监控技术的应用越来越广泛,视频监控技术所支持的功能也越来越丰富。

基于实时预览的录像文件生成属于部分视频监控产品的热门功能,其主要实现原理为:当实时预览开启时,录像设备(支持实时预览,且具有录像功能的监控设备)获取视频采集设备(如ipc(internetprotocolcamera,网络摄像机))的视频数据,并将视频数据传输至播放库进行解码和播放,以实现视频数据的实时预览。当开启录像时,录像设备将获取到的视频数据传输至转封装库进行录像文件生成。

然而实践发现,在目前的基于实时预览的录像文件生成方案中,录像设备传输至播放库的视频数据会先被缓存值播放库缓冲区,并由播放库从播放库缓冲区中获取视频数据进行解码播放,当播放库缓冲区中存在未解码的视频数据时,用户通过实时预览看到的视频画面与录像设备传输至播放库的视频数据之间会存在一定的时间偏差。

例如,录像设备播放的实时预览画面中显示的时间为10:00:00,录像设备传输至播放库的视频数据可能已经包括了10:00:00~10:00:10的视频数据(该部分视频数据被缓存在播放库缓冲区中,尚未解码播放)。

若此时,用户选择开启录像,则录像设备仅会将从10:00:10开始的视频数据传输至转封装库进行录像文件生成,从而,录像文件中缺少播放库缓冲区中的视频数据,导致录像文件的实际起始时间与预期的起始时间(即实时预览画面中显示的时间)之间存在时间偏差。



技术实现要素:

有鉴于此,本申请提供一种录像文件生成方法、装置及电子设备。

具体地,本申请是通过如下技术方案实现的:

根据本申请实施例的第一方面,提供一种录像文件生成方法,包括:

在视频实时预览状态下,将获取到的视频数据保存至播放库缓冲区,并将成功保存至所述播放库缓冲区的视频数据保存至预设缓冲区;

获取所述播放库解码的视频数据的目标长度;

当处于录像状态时,通过转封装库将所述预设缓冲区前部所述目标长度的视频数据生成录像文件。

根据本申请实施例的第二方面,提供一种录像文件生成装置,包括:

获取单元,用于在视频实时预览状态下,获取视频数据;

保存单元,用于将所述获取单元获取到的视频数据保存至播放库缓冲区;

所述保存单元,还用于将成功保存至所述播放库缓冲区的视频数据保存至预设缓冲区;

所述获取单元,还用于获取所述播放库解码的视频数据的目标长度;

生成单元,用于当处于录像状态时,通过转封装库将所述预设缓冲区前部所述目标长度的视频数据生成录像文件。

根据本申请实施例的第三方面,提供一种电子设备,包括处理器和存储器,其中:

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的程序时,实现上述录像文件生成方法。

本申请实施例的录像回放方法,通过设置预设缓冲区,并保持预设缓冲区与播放库缓冲区中视频数据的同步,当需要生成录像文件时,不再直接根据从视频采集设备中获取视频数据生成录像文件,而是根据从预设缓冲区前部获取到的与播放库已解码的视频数据的目标长度一致的视频数据生成录像文件,避免录像文件的实际起始时间与实时预览画面中显示的时间之间存在时间偏差,提高了录像文件生成的准确性。

附图说明

图1是本申请一示例性实施例示出的一种录像文件生成方法的流程图;

图2是本申请一示例性实施例示出的一种取流回调的处理过程的流程示意图;

图3是本申请一示例性实施例示出的一种解码回调的处理过程的流程示意图;

图4是本申请一示例性实施例示出的一种录像文件生成装置的结构示意图;

图5是本申请又一示例性实施例示出的一种录像文件生成装置的结构示意图;

图6是本申请又一示例性实施例示出的一种录像文件生成装置的结构示意图;

图7是本申请一示例性实施例示出的一种电子设备的硬件结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。

为了使本领域技术人员更好地理解本申请实施例提供的技术方案,并使本申请实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请实施例中技术方案作进一步详细的说明。

请参见图1,为本申请实施例提供的一种录像文件生成方法的流程示意图,其中,该录像文件生成方法可以应用于视频监控系统中具有实时预览和录像功能的监控设备,如pc(personalcomputer,个人计算机),如图1所示,该录像文件生成方法可以包括以下步骤:

为便于理解和描述,下文中以步骤s100~s120的执行主体为pc为例进行说明。

步骤s100、在视频实时预览状态下,将获取到的视频数据保存至播放库缓冲区,并将成功保存至播放库缓冲区的视频数据保存至预设缓冲区。

本申请实施例中,为了避免录像文件的实际起始时间与实时预览画面中显示的时间之间存在时间偏差,pc中可以新增一个缓冲区(本文中称为预设缓冲区),并保持该预设缓冲区中的视频数据与播放库缓冲区中的视频数据的同步;当在实时预览过程中开启录像时,不再将从视频采集设备获取视频数据传输至转封装库(用于对视频数据进行格式转换,将实时码流转换成指定录像文件的格式(如mp4(movingpictureexpertsgroup4,动态图像专家组4)格式),并保存到本地,以形成录像文件),而是从该预设缓冲区中获取视频数据传输至转封装库,以生成录像文件。

本申请实施例中,当pc接收到实时预览开启指令时,即pc在视频实时预览状态下时,pc可以从指定视频采集设备中获取视频数据,并当取流成功时,将获取到的视频数据保存至播放库(用于对视频数据进行解码和播放)缓冲区,由播放库对播放库缓冲区中的视频数据进行解码和播放。

当pc成功将获取到的视频数据保存至播放库缓冲区时,pc可以将成功保存至播放库缓冲区的视频数据保存至预设缓冲区。

步骤s110、获取播放库解码的视频数据的目标长度。

步骤s120、当处于录像状态时,通过转封装库将预设缓冲区前部目标长度的视频数据生成录像文件。

本申请实施例中,pc可以获取播放库解码的视频数据的长度(本文中称为目标长度)。

例如,pc可以预先设置播放库解码回调函数(简称为解码回调函数),播放库每一次对播放库缓冲区中缓存的视频数据进行解码后,该解码回调函数会被调用,返回解码的视频数据和解码的视频数据的长度,从而,pc可以获取播放库解码的视频数据的目标长度。

本申请实施例中,pc获取到播放库解码的视频数据的目标长度时,可以判断当前是否处于录像状态,即判断是否开启录像。

当pc处于录像状态时,即录像已开启时,pc可以通过转封装库将预设缓冲区前部目标长度的视频数据生成录像文件。

其中,由于预设缓冲区中的视频数据与播放库缓冲区中的视频数据同步,且播放库从播放库缓冲区中获取视频数据进行解码通常也是按照从前往后的顺序获取视频数据,因此,预设缓冲区中前部目标长度的视频数据即为播放库已解码的视频数据,根据预设缓冲区中前部目标长度的视频数据生成录像文件可以避免录像文件的实际起始时间与实时预览画面中显示的时间之间存在时间偏差,提高了录像文件生成的准确性。

在本申请其中一个实施例中,考虑到播放库已解码的视频数据不会再被保存在播放库缓冲区中,因此,为了保证播放库缓冲区中的视频数据与预设缓冲区中视频数据的同步,pc通过转封装库将预设缓冲区中前部的目标长度的视频数据生成录像文件后,可以将该部分视频数据(即预设缓冲区中前部的目标长度的视频数据)从预设缓冲区中删除。

需要说明的是,在本申请实施例中,当pc获取到播放库解码的视频数据的目标长度之后,若pc未处于录像状态,则pc可以删除该预设缓冲区前部目标长度的视频数据(不需要通过转封装库将该部分视频数据生成录像文件),以保证播放库缓冲区中的视频数据与预设缓冲区中的视频数据的同步。

可见,在图1所示方法流程中,通过设置预设缓冲区,并保持预设缓冲区与播放库缓冲区中视频数据的同步,当需要生成录像文件时,不再直接根据从视频采集设备中获取视频数据生成录像文件,而是根据预设缓冲区前部与播放库已解码的视频数据的目标长度一致的视频数据生成录像文件,避免录像文件的实际起始时间与实时预览画面中显示的时间之间存在时间偏差,提高了录像文件生成的准确性。

本申请实施例中,上述预设缓冲区可以通过静态配置的方式配置在pc中,也可以由pc通过动态创建。

在本申请其中一个实施例中,在视频实时预览状态下,将成功保存至所述播放库缓冲区的视频数据保存至预设缓冲区之前,还包括:

根据播放库缓冲区的大小初始化预设缓冲区;其中,预设缓冲区的大小大于播放库缓冲区的大小。

在该实施例中,当pc接收到实时预览开启指令时,即pc在视频实时预览状态下时,pc可以根据播放库缓冲区的大小初始化预设缓冲区。

在该实施例中,考虑到播放库对播放库缓冲区中的视频数据进行解码时,该解码的部分(如目标长度的视频数据)会从播放库缓冲区中移除,在该过程中,播放库缓冲区中可能会有新的视频数据存入;而由于预设缓冲区中的视频数据需要在pc获取到播放库解码的视频数据的长度之后再从预设缓冲区中删除,在播放库对视频数据进行解码,但是pc根据获取到的解码的视频数据的长度(如目标长度)从预设缓冲区中删除相应长度的视频数据之前,预设缓冲区中的视频数据的数据量可能会超过播放库缓冲区中的视频数据的数据量,因此,预设缓冲区的大小可以大于播放库缓冲区的大小,以避免pc尚未获取到播放库缓冲区中已解码的视频数据的长度,且播放库缓冲区中成功存入新的视频数据时,预设缓冲区可能由于空间不足而无法存入新的视频数据,导致播放库缓冲区和预设缓冲区中视频数据不同步。

进一步地,在本发明其中一个实施例中,上述根据播放库缓冲区的大小初始化预设缓冲区之后,还可以包括:

在实时预览关闭状态下,销毁所述预设缓冲区。

在该实施例中,当pc接收到实时预览关闭指令时,pc可以销毁预设缓冲区,以释放对应的存储空间。

进一步地,在本申请实施例中,为了保证录像文件能够正常被正常播放,需要保证视频头数据与保存的视频数据相匹配。

相应地,在本申请其中一个实施例中,上述录像文件生成方法还可以包括:

当获取到的视频数据中包括视频头数据,且视频头数据与当前保存的视频头数据不同时,更新所保存的视频头数据。

在该实施例中,当pc获取到视频数据时,可以检测获取到的视频数据中是否存在视频头数据。若pc检测到获取到的视频数据中存在视频头数据,则pc可以进一步比较当前保存的视频头数据与所获取到的视频头数据,以确定视频头数据是否发生了变化。

当pc确定所保存的视频头数据发生了变化(即所获取到的视频头数据与当前保存的视频头数据不一致)时,pc可以更新保存的视频头数据(将当前保存的视频头数据更新为所获取到的视频头数据)。

当pc保存的视频头数据发生更新,且pc开启了录像时,pc可以根据更新后的视频头数据生成录像文件。

为了使本领域技术人员更好地理解本申请实施例提供的技术方案,下面结合具体实例对本申请实施例提供的技术方案进行说明。

在该实施例中,pc中运行有一个用于预览、回放、参数导入导出及升级功能的插件。

一、取流回调的处理过程

在该实施例中,当pc开启预览时,插件可以根据播放库缓冲区的大小初始化一个插件缓冲区(即上述预设缓冲区),该插件缓冲区的大小大于播放库缓冲区的大小。

例如,插件缓冲区的大小可以为播放库缓冲区的大小的两倍,防止当插件缓冲区存满,而播放库缓冲区已解码部分数据还未回调,并再次成功塞入视频数据时插件缓冲区无法正常保存数据,导致插件缓冲区与播放库缓冲区中数据不一致。

在该实施例中,插件初始化插件缓冲区之后,可以从视频采集设备中获取视频数据,并当成功获取到视频数据时,调用取流回调函数,通过取流回调函数将获取到的视频数据保存至播放库缓冲区,由播放库从播放库缓冲区中获取视频数据进行解码和播放。

当成功将视频数据保存至播放库缓冲区时,播放库可以向插件返回成功响应消息;当插件接收到该成功响应消息时,还可以将该部分视频数据保存至插件缓冲区。

其中,当视频数据未成功保存至播放库缓冲区时,pc不将该视频数据保存至插件缓冲区,保证播放库缓冲区与插件缓冲区中视频数据一致。

在该实施例中,当插件检测到获取到的视频数据是数据头类型的数据(即为视频头数据),且与当前保存的视频头数据不相同时,插件可以更新当前保存的视频头数据,以保证在视频头数据发生变化后进行录像时,可以根据更新后的视频头数据生成录像文件,以避免出现视频头数据与视频数据不相符,录像文件无法正常播放的情况。

此外,当实时预览关闭时,插件可以销毁插件缓冲区。

其中,插件进行取流回调的处理过程可以参见图2所示。

二、解码回调的处理过程

在该实施例中,插件还可以设置解码回调函数,该解码回调函数会在播放库对播放库缓冲区中的视频数据进行解码时被调用,返回解码的视频数据和视频数据的长度。

插件获取到播放库解码的视频数据的长度之后,可以判断当前是否处于录像状态。

若当前处于录像状态,则插件可以通过转封装库将插件缓冲区前部同等长度的视频数据进行转码和保存,以生成录像文件。

其中,插件通过转封装库将该部分视频数据生成录像文件之后,可以将该部分视频数据从插件缓冲区中删除,以保持插件缓冲区与播放库缓冲区的视频数据的一致。

若当前未处于录像状态,则插件可以将插件缓冲区前部同等长度的视频数据从插件缓冲区中删除,以保持插件缓冲区与播放库缓冲区的视频数据的一致。

其中,插件进行解码回调的处理过程可以参见图3所示。

本申请实施例中,通过设置预设缓冲区,并保持预设缓冲区与播放库缓冲区中视频数据的同步,当需要生成录像文件时,不再直接根据从视频采集设备中获取视频数据生成录像文件,而是根据从预设缓冲区前部获取到的与播放库已解码的视频数据的目标长度一致的视频数据生成录像文件,避免录像文件的实际起始时间与实时预览画面中显示的时间之间存在时间偏差,提高了录像文件生成的准确性。

以上对本申请提供的方法进行了描述。下面对本申请提供的装置进行描述:

请参见图4,为本申请实施例提供的一种录像文件生成装置的结构示意图,其中,该录像文件生成装置可以应用于上述方法实施例中的监控设备,如图4所示,该录像文件生成装置可以包括:

获取单元410,用于在视频实时预览状态下,获取视频数据;

保存单元420,用于将所述获取单元获取到的视频数据保存至播放库缓冲区;

所述保存单元420,还用于将成功保存至所述播放库缓冲区的视频数据保存至预设缓冲区;

所述获取单元410,还用于获取所述播放库解码的视频数据的目标长度;

生成单元430,用于当处于录像状态时,通过转封装库将所述预设缓冲区前部所述目标长度的视频数据生成录像文件。

在一种可选的实施方式中,所述保存单元420,还用于在所述生成单元430通过转封装库将所述预设缓冲区前部所述目标长度的视频数据生成录像文件之后,删除所述预设缓冲区前部所述目标长度的视频数据。

在一种可选的实施方式中,如图5所示,所述装置还包括:

维护单元440,用于在视频实时预览状态下,根据播放库缓冲区的大小初始化预设缓冲区;其中,所述预设缓冲区的大小大于所述播放库缓冲区的大小。

在一种可选的实施方式中,所述维护单元440,还用于在实时预览关闭状态下,销毁所述预设缓冲区。

在一种可选的实施方式中,所述保存单元420,具体用于调用取流回调函数,将获取到的视频数据保存至播放库缓冲区;

所述保存单元420,还具体用于当获取到的视频数据成功保存至播放库缓冲区时,将获取到的视频数据保存至所述预设缓冲区。

在一种可选的实施方式中,所述获取单元410,具体用于调用解码回调函数,获取所述播放库解码的视频数据的目标长度。

在一种可选的实施方式中,所述保存单元420,还用于在所述获取单元获取到所述播放库解码的视频数据的目标长度之后,当未处于录像状态时,删除所述预设缓冲区前部所述目标长度的视频数据。

在一种可选的实施方式中,如图6所示,所述装置还包括:

更新单元450,用于当所述获取单元410获取到的视频数据中包括视频头数据,且所述视频头数据与当前保存的视频头数据不同时,更新所保存的视频头数据。

请参见图7,为本申请实施例提供的一种电子设备的硬件结构示意图。该电子设备可以包括处理器701和存储器702。其中,存储器702上存放有计算机程序;处理器701可以通过执行存储器702上所存放的程序,执行上文描述的录像文件生成方法。

本文中提到的存储器702可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,存储器702可以是:ram(radomaccessmemory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。

需要说明的是,在本申请实施例中,图7所示的电子设备还可以包括通信接口702,且处理器701、存储器703以及通信接口702可以通过通信总线704完成相互的通信。

本申请实施例还提供了一种存储有计算机程序的机器可读存储介质,例如图7中的存储器702,所述计算机程序可由图7所示电子设备中的处理器701执行以实现上文描述的录像文件生成方法。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。


技术特征:

1.一种录像文件生成方法,其特征在于,包括:

在视频实时预览状态下,将获取到的视频数据保存至播放库缓冲区,并将成功保存至所述播放库缓冲区的视频数据保存至预设缓冲区;

获取所述播放库解码的视频数据的目标长度;

当处于录像状态时,通过转封装库将所述预设缓冲区前部所述目标长度的视频数据生成录像文件。

2.根据权利要求1所述的方法,其特征在于,所述通过转封装库将所述预设缓冲区前部所述目标长度的视频数据生成录像文件之后,还包括:

删除所述预设缓冲区前部所述目标长度的视频数据。

3.根据权利要求1所述的方法,其特征在于,在视频实时预览状态下,将成功保存至所述播放库缓冲区的视频数据保存至预设缓冲区之前,还包括:

根据播放库缓冲区的大小初始化预设缓冲区;其中,所述预设缓冲区的大小大于所述播放库缓冲区的大小。

4.根据权利要求3所述的方法,其特征在于,所述根据播放库缓冲区的大小初始化预设缓冲区之后,还包括:

在实时预览关闭状态下,销毁所述预设缓冲区。

5.根据权利要求1所述方法,其特征在于,所述将获取到的视频数据保存至播放库缓冲区,并将成功保存至所述播放库缓冲区的视频数据保存至预设缓冲区,包括:

调用取流回调函数,将获取到的视频数据保存至播放库缓冲区;

当获取到的视频数据成功保存至播放库缓冲区时,将获取到的视频数据保存至所述预设缓冲区。

6.根据权利要求1所述的方法,其特征在于,所述获取所述播放库解码的视频数据的目标长度,包括:

调用解码回调函数,获取所述播放库解码的视频数据的目标长度。

7.根据权利要求1所述的方法,其特征在于,所述获取所述播放库解码的视频数据的目标长度之后,还包括:

当未处于录像状态时,删除所述预设缓冲区前部所述目标长度的视频数据。

8.根据权利要求1所述的方法,其特征在于,所述方法还包括:

当获取到的视频数据中包括视频头数据,且所述视频头数据与当前保存的视频头数据不同时,更新所保存的视频头数据。

9.一种录像文件生成装置,其特征在于,包括:

获取单元,用于在视频实时预览状态下,获取视频数据;

保存单元,用于将所述获取单元获取到的视频数据保存至播放库缓冲区;

所述保存单元,还用于将成功保存至所述播放库缓冲区的视频数据保存至预设缓冲区;

所述获取单元,还用于获取所述播放库解码的视频数据的目标长度;

生成单元,用于当处于录像状态时,通过转封装库将所述预设缓冲区前部所述目标长度的视频数据生成录像文件。

10.根据权利要求9所述的装置,其特征在于,

所述保存单元,还用于在所述生成单元通过转封装库将所述预设缓冲区前部所述目标长度的视频数据生成录像文件之后,删除所述预设缓冲区前部所述目标长度的视频数据。

11.根据权利要求9所述的装置,其特征在于,所述装置还包括:

维护单元,用于在视频实时预览状态下,根据播放库缓冲区的大小初始化预设缓冲区;其中,所述预设缓冲区的大小大于所述播放库缓冲区的大小。

12.根据权利要求11所述的装置,其特征在于,

所述维护单元,还用于在实时预览关闭状态下,销毁所述预设缓冲区。

13.根据权利要求9所述的装置,其特征在于,

所述保存单元,具体用于调用取流回调函数,将获取到的视频数据保存至播放库缓冲区;

所述保存单元,还具体用于当获取到的视频数据成功保存至播放库缓冲区时,将获取到的视频数据保存至所述预设缓冲区。

14.根据权利要求9所述的装置,其特征在于,

所述获取单元,具体用于调用解码回调函数,获取所述播放库解码的视频数据的目标长度。

15.根据权利要求9所述的装置,其特征在于,

所述保存单元,还用于在所述获取单元获取到所述播放库解码的视频数据的目标长度之后,当未处于录像状态时,删除所述预设缓冲区前部所述目标长度的视频数据。

16.根据权利要求9所述的装置,其特征在于,所述装置还包括:

更新单元,用于当所述获取单元获取到的视频数据中包括视频头数据,且所述视频头数据与当前保存的视频头数据不同时,更新所保存的视频头数据。

技术总结
本申请提供一种录像文件生成方法、装置及电子设备,该方法包括:在视频实时预览状态下,将获取到的视频数据保存至播放库缓冲区,并将成功保存至所述播放库缓冲区的视频数据保存至预设缓冲区;获取所述播放库解码的视频数据的目标长度;当处于录像状态时,通过转封装库将所述预设缓冲区前部所述目标长度的视频数据生成录像文件。该方法可以避免录像文件的实际起始时间与实时预览画面中显示的时间之间存在时间偏差,提高录像文件生成的准确性。

技术研发人员:陈珊珊
受保护的技术使用者:杭州海康威视数字技术股份有限公司
技术研发日:2018.11.29
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-54250.html

最新回复(0)