CN117834979A - 可实现断电保护的mp4视频的录制方法及系统 - Google Patents

可实现断电保护的mp4视频的录制方法及系统 Download PDF

Info

Publication number
CN117834979A
CN117834979A CN202410002087.XA CN202410002087A CN117834979A CN 117834979 A CN117834979 A CN 117834979A CN 202410002087 A CN202410002087 A CN 202410002087A CN 117834979 A CN117834979 A CN 117834979A
Authority
CN
China
Prior art keywords
video
audio
writing
recording
memory
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.)
Pending
Application number
CN202410002087.XA
Other languages
English (en)
Inventor
李伯选
邓振林
张瑞涛
刘玉娇
刘文博
刘海洋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Global Safety Technology Co Ltd
Original Assignee
Beijing Global Safety Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Global Safety Technology Co Ltd filed Critical Beijing Global Safety Technology Co Ltd
Priority to CN202410002087.XA priority Critical patent/CN117834979A/zh
Publication of CN117834979A publication Critical patent/CN117834979A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

本申请提出了一种可实现断电保护的MP4视频的录制方法及系统,该方法包括:通过终端设备持续采集音视频信号;基于MP4格式支持的编码方式,对当前采集的音视频信号进行编码,生成音视频编码帧和相应的视频播放所需的帧信息;遵循MP4格式将音视频编码帧和帧信息进行封装;将封装后的音视频编码帧和帧信息写入内存中的相应box中,并在实时检测出内存中缓存的音视频编码帧的长度达到预设阈值时,将缓存的音视频编码帧和帧信息对应的box写入存储介质中,直至MP4视频录制完成。该方法在视频录制过程中将视频播放所需的相关box实时写入存储介质中,能够实现MP4文件录制过程中的断电保护。

Description

可实现断电保护的MP4视频的录制方法及系统
技术领域
本申请涉及音视频存储技术领域,尤其涉及一种可实现断电保护的MP4视频的录制方法及系统。
背景技术
随着终端技术和多媒体技术的发展,越来越多的终端设备会进行视频录制,其中,MP4格式是最常见的音视频容器格式之一,因其良好的兼容性和跨平台性而被广泛应用于各种终端和平台当中。
其中,MP4视频文件是一种典型的嵌套格式文件,其内部是由多种box构成的树状结构组成,比如,各类box包括:ftyp、mdat和moov等。
相关技术中,在录制MP4视频文件时,一般是使用相关的录像设备,经历采集、编码、封装、存储直至结束录制这一完整的录制流程,并且在视频录制过程中,会将生成的信息,即某些box存入内容中。然而,由于内存数据存在易失性,在实际应用中,一旦录制过程因为断电等特殊情况中断,则已经录制的视频会因数据丢失导致无法播放,且不易恢复。
发明内容
本申请旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本申请的第一个目的在于提出一种可实现断电保护的MP4视频的录制方法,该方法在视频录制过程中将视频播放所需的相关box实时写入存储介质中,能够实现MP4文件录制过程中的断电保护,提高了MP4视频文件录制的可靠性。
本申请的第二个目的在于提出一种可实现断电保护的MP4视频的录制系统;
本申请的第三个目的在于提出一种非临时性计算机可读存储介质。
为达上述目的,本申请的第一方面在于提出一种可实现断电保护的MP4视频的录制方法,该方法包括以下步骤:
通过终端设备持续采集音视频信号;
基于MP4格式支持的编码方式,对当前采集的所述音视频信号进行编码,生成音视频编码帧和相应的视频播放所需的帧信息;
遵循MP4格式将所述音视频编码帧和所述帧信息进行封装;
将封装后的音视频编码帧和帧信息写入内存中的相应box中,并在实时检测出内存中缓存的音视频编码帧的长度达到预设阈值时,将缓存的音视频编码帧和所述帧信息对应的box写入存储介质中,直至MP4视频录制完成。
本申请的可实现断电保护的MP4视频的录制方法,还具有如下附加技术特征:
可选地,在本申请的一个实施例中,在所述将封装后的音视频编码帧和帧信息写入内存中的对应box中之前,还包括:在所述存储介质中创建MP4视频文件;将视频播放所需的box的标头写入所述存储介质中;按照MP4标准在所述内存中构建MP4视频播放所需的box对象树,并在所述存储介质中为所述box对象树中的每个box分配对应的存储空间且指定每个box的起始写入位置。
可选地,在本申请的一个实施例中,所述将封装后的音视频编码帧和帧信息写入内存中的对应box中,包括:将实时的音视频编码帧写入所述内存中预设的mdat box中;在每次实时写入音视频编码帧时,将所述实时的音视频编码帧对应的帧信息写入所述内存中预设的moov box对象树中。
可选地,在本申请的一个实施例中,所述预设阈值包括:为音频编码帧预设的音频阈值,以及为视频编码帧预设的视频阈值,所述在实时检测出内存中缓存的音视频编码帧的长度达到预设阈值时,将缓存的音视频编码帧和所述帧信息对应的box写入存储介质中,包括:在检测出所述音频编码帧的长度达到所述音频阈值,或者所述视频编码帧的长度达到所述视频阈值时,将所述内存中缓存的全部音视频编码帧和所述moov box对象树,按照每个box的所述起始写入位置写入对应的所述存储空间中;更新本轮写入后的数据写入位置,并清空所述内存中的缓存内容;循环执行将所述封装后的音视频编码帧和帧信息写入所述内存和所述存储介质的过程。
可选地,在本申请的一个实施例中,确定所述预设阈值,包括:获取视频录制过程中音频流的码率和视频流的码率,并确定断电状况下允许的录像缺损时长;根据所述音频流的码率、所述视频流的码率和所述录像缺损时长,分别计算音频阈值和视频阈值。
可选地,在本申请的一个实施例中,通过以下公式计算所述音频阈值:
音频阈值=音频流码率×录像缺损时长/8;
通过以下公式计算所述视频阈值:
视频阈值=视频流码率×录像缺损时长/8;
其中,录像缺损时长的单位与计算码率的单位时间一致。
可选地,在本申请的一个实施例中,所述获取视频录制过程中音频流的码率和视频流的码率,包括:在媒体流的码率是可变的情况下,计算预设的固定时间内接收的音视频编码帧的数据字节数的加权平均值;将所述加权平均值作为当前时段内的码率估值,以便根据所述码率估值调整所述预设阈值。
为达上述目的,本申请的第二方面还提出了一种可实现断电保护的MP4视频的录制系统,包括以下模块:
采集模块,用于通过终端设备持续采集音视频信号;
编码模块,用于基于MP4格式支持的编码方式,对当前采集的所述音视频信号进行编码,生成音视频编码帧和相应的视频播放所需的帧信息;
封装模块,用于遵循MP4格式将所述音视频编码帧和所述帧信息进行封装;
写入模块,用于将封装后的音视频编码帧和帧信息写入内存中的相应box中,并在实时检测出内存中缓存的音视频编码帧的长度达到预设阈值时,将缓存的音视频编码帧和所述帧信息对应的box写入存储介质中,直至MP4视频录制完成。
可选地,在本申请的一个实施例中,写入模块,具体用于:在所述存储介质中创建MP4视频文件;将视频播放所需的box的标头写入所述存储介质中;按照MP4标准在所述内存中构建MP4视频播放所需的box对象树,并在所述存储介质中为所述box对象树中的每个box分配对应的存储空间且指定每个box的起始写入位置。
为了实现上述实施例,本申请第三方面还提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述第一方面中的可实现断电保护的MP4视频的录制方法。
本申请的实施例提供的技术方案至少带来以下有益效果:本申请在遵循MP4标准格式的要求进行视频录制的前提下,通过一种不同于传统录制的简易方式,在视频录制过程中将视频播放所需的相关box实时、高效的写入存储介质中。其中,具体考虑了内存数据的易失性,将MP4播放需要的moovbox及其子box的内容写入存储介质的时机由结束录制时写入改为录制过程中实时写入。从而能够实现MP4文件录制过程中的断电保护,改进后的录制方式即便是在录制过程中发生断电等中断事件,已经录制到存储介质中的视频部分依然可以正常播放,提高了MP4视频文件录制的可靠性。并且,本申请还综合考虑了存储介质的读写速度和数据处理效率,通过阈值限定的方式确定实时写入存储介质的具体时间点,在能够避免发生断电时,MP4录像丢失过多的内容的基础上,提升存储介质的IO性能,保证录像写入磁盘的速度,兼顾了处理效率和设备性能。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本申请实施例提出的一种可实现断电保护的MP4视频的录制方法的流程图;
图2为本申请实施例提出的一种音视频编码数据的写入方法的流程示意图;
图3为本申请实施例提出的一种具体的MP4标准格式数据写入存储介质的方法的流程图;
图4为本申请实施例提出的一种将数据写入存储介质的原理示意图;
图5为本申请实施例提出的一种阈值设置方法的流程图;
图6为本申请实施例提出的一种可实现断电保护的MP4视频的录制系统的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
需要说明的是,对于MP4视频文件的box对象树,最外层为ftyp、mdat及moov等box,其中,ftyp主要存放与MP4兼容性相关的版本号等信息,mdat中存放的是音视频编码帧数据,moov及其子box存放MP4得以解码播放的所有编码信息以及每个音视频编码帧长度、时间戳、文件起始写入位置等帧信息。
在实际的视频录制过程中,目前常使用的支持录像的设备,比如,网络摄像机、NVR、甚至手机、平板以及其他硬件平台,往往采用传统的MP4录制方式,即该种方式经历采集、编码、封装、存储、结束录制等过程。在录制结束时,才会将视频播放时所需要的数据写入到存储设备中,在此之前,这些信息存放于内存中,这会导致录制的视频中只存有mdatbox,而没有moov box。而一旦录制因断电等特殊情况中断,而moov box中的数据未能及时写入存储设备,导致录制的视频无法播放。
为此,本申请提出了一种可实现断电保护的MP4视频的录制方法及系统,将MP4录像数据高效地存入一个存储介质中,并且在断电后,已经录制到存储介质中的视频部分依然可以正常播放,实现了MP4录制的断电保护。
下面参考附图描述本发明实施例所提出的一种可实现断电保护的MP4视频的录制方法及系统。
图1为本申请实施例提出的一种可实现断电保护的MP4视频的录制方法的流程图,如图1所示,该方法包括以下步骤:
步骤S101,通过终端设备持续采集音视频信号。
需要说明的是,本申请实施的可实现断电保护的MP4视频的录制方法可以被配置于本申请提出的可实现断电保护的MP4视频的录制系统中来举例说明,该录制系统可以应用于任一终端设备中,以使该终端设备可以执行MP4视频的录制功能。
其中,该终端设备可以摄像机、NVR以及其他移动终端等具体音视频录制的电子设备,终端设备中需要配备存储卡等存储介质,本申请对终端设备的具体类型不做限定。
具体的,本申请通过调用预先配置在终端设备中的应用程序,控制终端设备采集当前待录制的音视频信号。其中,可以由终端设备的采集模块采集媒体源,即由终端设备的采集模块采集物理信号源或网络信号源等媒体源,采集到信号中包括音频信号和/或视频信号,具体根据实际的录制场景确定。在采集音视频信号过程中,确保采集模块本身是稳定可靠的。
可以理解的是,由于用户可能需要持续对某个场景录制视频,因此由终端设备根据用户的意图持续采集音视频信号,并持续对实时采集到的音视频信号进行后续的处理操作。
步骤S102,基于MP4格式支持的编码方式,对当前采集的音视频信号进行编码,生成音视频编码帧和相应的视频播放所需的帧信息。
具体的,通过音视频编码装置将上一步骤中采集到的音视频信号进行编码,其中,视频编码和音频编码可以使用相关技术中的MP4标准格式支持的编码方式,本申请对具体采用的编码方式不做限制。进而,将当前采集到的音频信号编码为音频编码帧,将当前采集到的视频信号编码为视频编码帧,在生成编码帧的同时,还生成每个音视频编码帧的帧信息。
其中,帧信息包括每个帧的帧长度、时间戳和写入位置等播放音视频所需的信息。
具体实施时,作为一种可能的实现方式,由于编码过程会因编码方式的不同而受到终端设备的处理器性能的影响,因此,可以根据终端设备的性能选择相应的编码方式,比如,在支持硬件编码的设备上,可以采用硬件编码,否则可尝试软件编码,以便于在终端设备的最佳性能状态下进行编码,提高编码效率。
需要说明的是,本申请采集的音视频信号和编码后的音视频编码数据,根据用户实际录制的内容确定,可以包括音频数据和视频数据,也可以仅包括其中一种数据,本申请对此不做限制。
步骤S103,遵循MP4格式将音视频编码帧和帧信息进行封装。
具体的,将步骤S102中编码得到的数据进行封装,即,将生成的视频编码帧和音频编码帧,以及相应的帧信息进行封装。其中,在封装过程中遵循MP4标准格式对封装的要求,以便于封装后的数据为MP4标准格式,能够进行MP4视频数据的写入操作。
步骤S104,将封装后的音视频编码帧和帧信息写入内存中的相应box中,并在实时检测出内存中缓存的音视频编码帧的长度达到预设阈值时,将缓存的音视频编码帧和帧信息对应的box写入存储介质中,直至MP4视频录制完成。
具体的,本步骤将上一步骤中封装后的MP4标准格式数据进行存储,存储时先写入终端设备的内存中再写入存储介质中。其中,本申请改进了MP4视频文字中的moov box的写入存储介质的时机和写入方式。
需要说明的是,moov box是Mp4视频文件得以正常播放的关键内容,一个MP4视频文件如果丢掉moov box,即便mdat box的数据完整,也无法正常播放。在录制中写入存储介质的过程是个循环往复的过程,此过程中涉及的内容存入内存会导致视频内容丢失的风险性增大,当断电后,内存中的数据容易丢失,此过程不可恢复。因此,本申请在不改变MP4标准格式的前提下,在录制过程中将moov box中的值实时写入存储介质中以达到保护编码信息的目的。
具体实施时,作为一种可能的实现方式,在视频录制过程中,每得到一个音视频编码帧的帧信息,就将这些信息存入到moov box对应的子box中,再将整个moov box对象树按一定的间隔写入存储介质中,每个box在存储介质中的起始位置已经提前指定好,同时记录当前的写入位置,以便于下次写入后续的录制数据时可快速定位。
其中,对于moov box及其多个子box的写入内容,可以将音视频帧的编码信息写入stsdbox中,将每一帧数据的播放时长写入sttsbox中,将视频帧的关键帧标识写入到stssbox中,将每一帧的长度及起始位置写入stsc、stsz以及stco/co64等box中。
下面以一些具体的实施例对音视频编码数据的写入过程进行详细描述。
在本申请一个实施例中,在将封装后的音视频编码帧和帧信息写入内存中的对应box中之前,先进行相关的写入准备工作,具体包括:在存储介质中创建MP4视频文件;将视频播放所需的box的标头写入存储介质中;按照MP4标准在内存中构建MP4视频播放所需的box对象树,并在存储介质中为box对象树中的每个box分配对应的存储空间且指定每个box的起始写入位置。
具体而言,在本实施例中,首先在开始存储录制的数据,即启动采集、编码和封装的视频录制流程之后,即在存储介质上创建MP4视频文件,该MP4视频文件在初始创建时刻为空文件,在后续向该空文件写入内容。再将MP4视频文件的box树中各个box的标头(Header)写入存储介质,该过程写入一些播放MP4视频文件必要的box标头。其中,每个box由Header和Data两部分组成,Header包含当前box的长度和类型等信息,Data包含box的实际数据。然后,按照MP4标准所规定的格式,在内存中构建MP4播放所必需的box对象树,即box的层级依赖和嵌套关系,同时在存储介质上为每个box分配足够大的空间以容纳后续要写入的数据,并且指定每个box的起始写入位置。
进一步的,在执行完准备工作后,进行音视频编码数据的写入操作。为了更加清楚的说明本申请写入音视频编码数据的具体实现过程,下面以本申请一个实施例中提出的一种写入方法进行示例性说明。
图2为本申请实施例提出的一种音视频编码数据的写入方法的流程示意图;
步骤S201,将实时的音视频编码帧写入内存中预设的mdat box中。
具体的,将音视频编码数据先写入到内存中。本步骤主要是将编码得到的音频编码帧音和视频编码帧写入MP4视频文件的mdat box中。
步骤S202,在每次实时写入音视频编码帧时,将实时的音视频编码帧对应的帧信息写入内存中预设的moov box对象树中。
具体的,在每向内容中写入一次音频编码帧或者视频编码帧时,也需要将该帧所携带的编码信息,比如时间戳、帧长度和关键帧标识等上述帧信息写入内存中。写入的这部分内容主要是写入了MP4视频文件的moov box中。
步骤S203,在检测出音频编码帧的长度达到音频阈值,或者视频编码帧的长度达到视频阈值时,将内存中缓存的全部音视频编码帧和moov box对象树,按照每个box的起始写入位置写入对应的存储空间中。
具体的,本申请在不断向内存中写入当前编码、封装后的数据时,实时检测内存中缓存的音视频编码帧的长度,当该长度达到预设阈值时,将内存中缓存的音视频编码数据,即音视频编码帧和对应的帧信息写入存储介质中。
其中,本申请实施例分别为音频编码帧预设了音频阈值MA,以及为视频编码帧预设了视频阈值MV。
具体实施时,当内存中缓存的音频帧长度达到MA或者缓存的视频帧达到MV时,将内存中缓存的音视频编码帧以及box对象写入存储介质,写入位置即为前面分配好的起始写入位置。
步骤S204,更新本轮写入后的数据写入位置,并清空内存中的缓存内容。
具体的,在将当前缓存的全部音视频编码数据写入存储介质后,清空缓存,删除目前内存中的缓存内容,为下一轮的缓存和数据写入判断做准备。并且,记录存储介质中为每个box分配对应的存储空间的当前写入位置,由此下次写入数据时能够快速定位。
步骤S205,循环执行将封装后的音视频编码帧和帧信息写入内存和存储介质的过程。
具体的,循环执行上述各个步骤,即对于当前时刻新录制的音视频编码数据,均按上述方式,实现将封装后的音视频编码帧和帧信息写入内存和存储介质。
由此,基于上述录制方法将录制的数据实时写入至存储介质中,最终生成的录制内容在进行MP4视频回放时,除了正常播放,也可通过时间戳信息进行正常的暂停、继续和跳转,同时保证音画同步。
综上所述,本申请实施例的可实现断电保护的MP4视频的录制方法,在遵循MP4标准格式的要求进行视频录制的前提下,通过一种不同于传统录制的简易方式,在视频录制过程中将视频播放所需的相关box实时、高效的写入存储介质中。其中,具体考虑了内存数据的易失性,将MP4播放需要的moovbox及其子box的内容写入存储介质的时机由结束录制时写入改为录制过程中实时写入。从而能够实现MP4文件录制过程中的断电保护,改进后的录制方式即便是在录制过程中发生断电等中断事件,已经录制到存储介质中的视频部分依然可以正常播放,提高了MP4视频文件录制的可靠性。并且,该方法还综合考虑了存储介质的读写速度和数据处理效率,通过阈值限定的方式确定实时写入存储介质的具体时间点,在能够避免发生断电时,MP4录像丢失过多的内容的基础上,提升存储介质的IO性能,保证录像写入磁盘的速度,兼顾了处理效率和设备性能。
基于上述实施例,为了更加清楚地说明本申请实施例的可实现断电保护的MP4视频的录制方法将数据写入存储介质的完整实现过程,下面以一个具体的视频数据写入方法实施例进行详细说明。图3为本申请实施例提出的一种具体的MP4标准格式数据写入存储介质的方法的流程图,图4为本申请实施例提出的一种将数据写入存储介质的原理示意图,结合图3和图4可以得到将MP4标准格式数据写入存储介质的整个存储过程中的细分步骤。
如图3所示,该方法包括以下步骤:
步骤S301,开始存储后在存储介质上创建MP4视频文件。
步骤S302,将MP4文件的标头写入存储介质。
步骤S303,按照MP4标准规定,在内存中构建MP4播放所必需的box对象树,并且在存储介质上为每个box分配存储空间。
步骤S304,写入音视频编码数据到内存中。
步骤S305,在每写入一次音频帧或者视频帧时,将该帧所携带的编码信息写入内存中。
步骤S306,当内存中缓存的音频帧长度达到预设阈值时,将内存中缓存的音视频编码帧以及box对象写入存储介质。
步骤S307,重复执行步骤S304至步骤S306。
步骤S308,结束录制并存储存储介质中写入的数据。
需要说明的是,本方法中各个步骤的具体实现方式可以参照上述实施例中的相关描述,实现原理相同,本实施例对此不做赘述。
基于上述实施例,为了更加清楚的说明本申请确定各个预设阈值的具体实现过程,下面以本申请实施例中提出的一种阈值计算方法进行示例性说明。图5为本申请实施例提出的一种阈值设置方法的流程图,如图5所示,该方法包括以下步骤:
步骤S501,获取视频录制过程中音频流的码率和视频流的码率,并确定断电状况下允许的录像缺损时长。
需要说明的是,本申请实施例采用阈值限定算法确定写入moov box和音视频编码帧数据至存储介质的时机。在实际应用中,向存储介质写入moov box对象树和音视频编码帧数据时,需考虑存储介质的IO性能,高频率地并发写入以上数据,会导致存储介质写入性能低下,同时终端设备的处理器使用率提升。因此,本申请通过阈值限定算法来解决该问题。本实施例中的阈值,即缓存音视频编码帧数据在内存中的上限值,一旦达到该值,就将内存中的数据同步到存储介质中。
具体实施时,作为一种可能的实现方式,假设当前采集的媒体流既包含音频又包含视频,则阈值限定算法的计算过程中,先确定媒体流的码率=音频流的码率+视频流的码率。从而写入数据到存储介质中的判断阈值,由视频流阈值和音频流阈值两部分组成。在计算阈值时,先根据终端设备的音视频信息采集参数和编码参数等设备参数,确定音频流的码率和视频流的码率。然后,根据用户的要求,确定断电状况下允许的录像缺损时长,比如如果用户希望断电的情况下将缺损录像内容的时长控制在1秒以内,则录像缺损时长为1秒。
其中,码率是数据传输时,单位时间传送的数据位数。在本实施例中可以采用媒体流的编码码率或者传输码率,二者可以相同。
步骤S502,根据音频流的码率、视频流的码率和录像缺损时长,分别计算音频阈值和视频阈值。
在本实施例中,可以通过以下公式计算音频阈值:
音频阈值=音频流码率×录像缺损时长/8;
通过以下公式计算视频阈值:
视频阈值=视频流码率×录像缺损时长/8;
其中,录像缺损时长的单位与计算码率的单位时间一致。
举例而言,假定确定的视频流编码/传输码率为8Mbps,音频流编码/传输码率为128kbps,并且希望断电的情况下将缺损录像时长控制在1秒以内,就需要每隔1秒调用一次存储介质的IO端口,将大小为阈值的缓存内容由内存写入到存储介质。基于该条件限制,视频流阈值大约需要设置为:
视频存储介质码率=视频流编码/传输码率/8=8Mbps/8=1MB;
音频流阈值大约需要设置为:
音频存储介质码率=音频流编码/传输码率/8=128kb/8=16kB。
其中,由于一个字节为8位,因此要除以8。并且,允许的录像缺损时长为1秒,与计算码率的单位时间为每秒相一致。
由此,若录制过程中发生断电,录制的视频至多只会丢失1MB左右即1s的内容。还可以根据实际情况以及对丢失内容长短的容忍度适当调整阈值的大小,以达到最佳效果。
需要说明的是,上述计算过程中是将媒体流的编码/传输码率视为固定值,该种情况一般由编码装置编码媒体数据时,可以指定编码的码率大小为某个固定值。然而,码率在很多场景下往往是动态变化的,比如,为适应网络波动,编码装置通过网络监测装置检测到网络性能较好的时候,会把码率调高,而网络差的时候,编码装置会把码率就调低。又比如,编码器对于画面内容复杂的视频,在编码的时候也可能会把码率调高,而画面内容单一的时候码率就调的低一些,以此来节省媒体流传输所占用的带宽。
因此,在本申请一个实施例中,如果码率为可变的,则需要实时监测计算媒体源码率的大小,进而计算阈值的大小,以便可以更为准确的控制断电后文件损耗的大小。
具体而言,在本实施例中,获取视频录制过程中音频流的码率和视频流的码率,包括:在媒体流的码率是可变的情况下,计算预设的固定时间内接收的音视频编码帧的数据字节数的加权平均值;将加权平均值作为当前时段内的码率估值,以便根据码率估值调整所述预设阈值。
作为一种示例,码率的计算由软件部分实现,计算方法为求固定时间内收到的音视频编码帧数据字节数的加权平均值。可以通过以下公式进行计算:
码率估值=(frame1_length+frame2_length+…framen_length)/duration
其中,framen_length表示任一媒体帧的长度,duration为预设的估算码率的固定时间段,可以将从当前时刻至之前的某个时刻之间的数据作为测试数据进行计算。
由此,本实施例的方法,在得到实时的码率后,通过模块间的消息机制传输当前计算出的实时码率,再根据实时码率实时调整设置的多个阈值的大小,然后再根据上面的方式求出更为准确的阈值大小。
为了实现上述实施例,本申请还提出了一种可实现断电保护的MP4视频的录制系统,图6为本申请实施例提出的一种可实现断电保护的MP4视频的录制系统的结构示意图,如图6所示,该系统包括采集模块100、编码模块200、封装模块300和写入模块400。
其中,采集模块100,用于通过终端设备持续采集音视频信号。
编码模块200,用于基于MP4格式支持的编码方式,对当前采集的音视频信号进行编码,生成音视频编码帧和相应的视频播放所需的帧信息。
封装模块,用于遵循MP4格式将音视频编码帧和帧信息进行封装。
写入模块400,用于将封装后的音视频编码帧和帧信息写入内存中的相应box中,并在实时检测出内存中缓存的音视频编码帧的长度达到预设阈值时,将缓存的音视频编码帧和帧信息对应的box写入存储介质中,直至MP4视频录制完成。
可选地,在本申请的一个实施例中,写入模块400,具体用于:在存储介质中创建MP4视频文件;将视频播放所需的box的标头写入存储介质中;按照MP4标准在内存中构建MP4视频播放所需的box对象树,并在存储介质中为box对象树中的每个box分配对应的存储空间且指定每个box的起始写入位置。
可选地,在本申请的一个实施例中,写入模块400还用于:将实时的音视频编码帧写入内存中预设的mdat box中;在每次实时写入音视频编码帧时,将实时的音视频编码帧对应的帧信息写入内存中预设的moov box对象树中。
可选地,在本申请的一个实施例中,写入模块400还用于:在检测出音频编码帧的长度达到音频阈值,或者视频编码帧的长度达到视频阈值时,将内存中缓存的全部音视频编码帧和moov box对象树,按照每个box的起始写入位置写入对应的存储空间中;更新本轮写入后的数据写入位置,并清空内存中的缓存内容;循环执行将封装后的音视频编码帧和帧信息写入内存和所述存储介质的过程。
可选地,在本申请的一个实施例中,该系统还包括确定模块,该确定模块具体用于:获取视频录制过程中音频流的码率和视频流的码率,并确定断电状况下允许的录像缺损时长;根据音频流的码率、视频流的码率和录像缺损时长,分别计算音频阈值和视频阈值
可选地,在本申请的一个实施例中,确定模块具体用于:通过以下公式计算音频阈值:
音频阈值=音频流码率×录像缺损时长/8;
通过以下公式计算视频阈值:
视频阈值=视频流码率×录像缺损时长/8;
其中,录像缺损时长的单位与计算码率的单位时间一致。
可选地,在本申请的一个实施例中,确定模块,还用于:
在媒体流的码率是可变的情况下,计算预设的固定时间内接收的音视频编码帧的数据字节数的加权平均值;
将加权平均值作为当前时段内的码率估值,以便根据码率估值调整所述预设阈值。
需要说明的是,前述对可实现断电保护的MP4视频的录制方法的实施例的解释说明也适用于该实施例的系统,此处不再赘述
综上所述,本申请实施例的可实现断电保护的MP4视频的录制系统,在遵循MP4标准格式的要求进行视频录制的前提下,通过一种不同于传统录制的简易方式,在视频录制过程中将视频播放所需的相关box实时、高效的写入存储介质中。其中,具体考虑了内存数据的易失性,将MP4播放需要的moovbox及其子box的内容写入存储介质的时机由结束录制时写入改为录制过程中实时写入。从而能够实现MP4文件录制过程中的断电保护,改进后的录制方式即便是在录制过程中发生断电等中断事件,已经录制到存储介质中的视频部分依然可以正常播放,提高了MP4视频文件录制的可靠性。并且,该系统还综合考虑了存储介质的读写速度和数据处理效率,通过阈值限定的方式确定实时写入存储介质的具体时间点,在能够避免发生断电时,MP4录像丢失过多的内容的基础上,提升存储介质的IO性能,保证录像写入磁盘的速度,兼顾了处理效率和设备性能。
为了实现上述实施例,本申请还提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如上述实施例中任一所述的可实现断电保护的MP4视频的录制方法。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (10)

1.一种可实现断电保护的MP4视频的录制方法,其特征在于,包括以下步骤:
通过终端设备持续采集音视频信号;
基于MP4格式支持的编码方式,对当前采集的所述音视频信号进行编码,生成音视频编码帧和相应的视频播放所需的帧信息;
遵循MP4格式将所述音视频编码帧和所述帧信息进行封装;
将封装后的音视频编码帧和帧信息写入内存中的相应box中,并在实时检测出内存中缓存的音视频编码帧的长度达到预设阈值时,将缓存的音视频编码帧和所述帧信息对应的box写入存储介质中,直至MP4视频录制完成。
2.根据权利要求1所述的可实现断电保护的MP4视频的录制方法,其特征在于,在所述将封装后的音视频编码帧和帧信息写入内存中的对应box中之前,还包括:
在所述存储介质中创建MP4视频文件;
将视频播放所需的box的标头写入所述存储介质中;
按照MP4标准在所述内存中构建MP4视频播放所需的box对象树,并在所述存储介质中为所述box对象树中的每个box分配对应的存储空间且指定每个box的起始写入位置。
3.根据权利要求2所述的可实现断电保护的MP4视频的录制方法,其特征在于,所述将封装后的音视频编码帧和帧信息写入内存中的对应box中,包括:
将实时的音视频编码帧写入所述内存中预设的mdat box中;
在每次实时写入音视频编码帧时,将所述实时的音视频编码帧对应的帧信息写入所述内存中预设的moov box对象树中。
4.根据权利要求3所述的可实现断电保护的MP4视频的录制方法,其特征在于,所述预设阈值包括:为音频编码帧预设的音频阈值,以及为视频编码帧预设的视频阈值,所述在实时检测出内存中缓存的音视频编码帧的长度达到预设阈值时,将缓存的音视频编码帧和所述帧信息对应的box写入存储介质中,包括:
在检测出所述音频编码帧的长度达到所述音频阈值,或者所述视频编码帧的长度达到所述视频阈值时,将所述内存中缓存的全部音视频编码帧和所述moov box对象树,按照每个box的所述起始写入位置写入对应的所述存储空间中;
更新本轮写入后的数据写入位置,并清空所述内存中的缓存内容;
循环执行将所述封装后的音视频编码帧和帧信息写入所述内存和所述存储介质的过程。
5.根据权利要求1所述的可实现断电保护的MP4视频的录制方法,其特征在于,确定所述预设阈值,包括:
获取视频录制过程中音频流的码率和视频流的码率,并确定断电状况下允许的录像缺损时长;
根据所述音频流的码率、所述视频流的码率和所述录像缺损时长,分别计算音频阈值和视频阈值。
6.根据权利要求5所述的可实现断电保护的MP4视频的录制方法,其特征在于,通过以下公式计算所述音频阈值:
音频阈值=音频流码率×录像缺损时长/8;
通过以下公式计算所述视频阈值:
视频阈值=视频流码率×录像缺损时长/8;
其中,录像缺损时长的单位与计算码率的单位时间一致。
7.根据权利要求5所述的可实现断电保护的MP4视频的录制方法,其特征在于,所述获取视频录制过程中音频流的码率和视频流的码率,包括:
在媒体流的码率是可变的情况下,计算预设的固定时间内接收的音视频编码帧的数据字节数的加权平均值;
将所述加权平均值作为当前时段内的码率估值,以便根据所述码率估值调整所述预设阈值。
8.一种可实现断电保护的MP4视频的录制系统,其特征在于,包括以下模块:
采集模块,用于通过终端设备持续采集音视频信号;
编码模块,用于基于MP4格式支持的编码方式,对当前采集的所述音视频信号进行编码,生成音视频编码帧和相应的视频播放所需的帧信息;
封装模块,用于遵循MP4格式将所述音视频编码帧和所述帧信息进行封装;
写入模块,用于将封装后的音视频编码帧和帧信息写入内存中的相应box中,并在实时检测出内存中缓存的音视频编码帧的长度达到预设阈值时,将缓存的音视频编码帧和所述帧信息对应的box写入存储介质中,直至MP4视频录制完成。
9.根据权利要求8所述的可实现断电保护的MP4视频的录制系统,其特征在于,所述写入模块,具体用于:
在所述存储介质中创建MP4视频文件;
将视频播放所需的box的标头写入所述存储介质中;
按照MP4标准在所述内存中构建MP4视频播放所需的box对象树,并在所述存储介质中为所述box对象树中的每个box分配对应的存储空间且指定每个box的起始写入位置。
10.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任一所述的可实现断电保护的MP4视频的录制方法。
CN202410002087.XA 2024-01-02 2024-01-02 可实现断电保护的mp4视频的录制方法及系统 Pending CN117834979A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410002087.XA CN117834979A (zh) 2024-01-02 2024-01-02 可实现断电保护的mp4视频的录制方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410002087.XA CN117834979A (zh) 2024-01-02 2024-01-02 可实现断电保护的mp4视频的录制方法及系统

Publications (1)

Publication Number Publication Date
CN117834979A true CN117834979A (zh) 2024-04-05

Family

ID=90509589

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410002087.XA Pending CN117834979A (zh) 2024-01-02 2024-01-02 可实现断电保护的mp4视频的录制方法及系统

Country Status (1)

Country Link
CN (1) CN117834979A (zh)

Similar Documents

Publication Publication Date Title
CN110324643B (zh) 一种视频录制方法及系统
US7599605B2 (en) Data recording method and apparatus, data recording medium, and data reproducing method and apparatus
CN105872484B (zh) 一种监控录像异常的保护方法
RU2005134850A (ru) Устройство воспроизведения мультимедийных данных, способ приема аудиоданных и структура аудиоданных в них
US8438167B2 (en) Method and device for recording media
CN102547444B (zh) 优化播放实时视频监控录像的方法
CN104410807A (zh) 一种多路视频同步回放方法及装置
CN102456376B (zh) 一种用于监控设备的即录即放方法
CN107093436B (zh) 预录的音视频数据的存储方法及装置、移动终端
JP2002529884A (ja) 特徴的ポイント情報シーケンスを得るための情報ファイルに関する信号処理
US6904089B1 (en) Encoding device and decoding device
CN101651795A (zh) 一种接收、存储数字卫星传输媒体文件并播放的方法及装置
CN117834979A (zh) 可实现断电保护的mp4视频的录制方法及系统
CN109600651B (zh) 文档类直播交互数据和音视频数据同步方法和系统
CN111918074A (zh) 直播视频故障预警方法及相关设备
CN106534748B (zh) 媒体文件的录制播放方法及终端
CN103165155B (zh) 记录装置及其控制方法
CN115250266B (zh) 视频处理方法及装置、流媒体设备及存储点播系统
CN102646433B (zh) 数字法庭的流媒体实时录制文件的生成方法、装置和系统
CN112559799A (zh) 一种对象云存储方法和系统
CN111356003B (zh) 一种数据写入的方法、系统及终端设备
JP5154465B2 (ja) ファイル読み取り方法、配信サーバ、プログラムおよび記録媒体
CN114374875B (zh) 一种mp4文件的录制方法、装置及可读存储介质
WO2024109317A1 (zh) 一种传输视频帧及摄像参数信息的方法与设备
CN112839242B (zh) 音视频媒体文件封装实现方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination