本技术涉及音视频存储,尤其涉及一种可实现断电保护的mp4视频的录制方法及系统。
背景技术:
1、随着终端技术和多媒体技术的发展,越来越多的终端设备会进行视频录制,其中,mp4格式是最常见的音视频容器格式之一,因其良好的兼容性和跨平台性而被广泛应用于各种终端和平台当中。
2、其中,mp4视频文件是一种典型的嵌套格式文件,其内部是由多种box构成的树状结构组成,比如,各类box包括:ftyp、mdat和moov等。
3、相关技术中,在录制mp4视频文件时,一般是使用相关的录像设备,经历采集、编码、封装、存储直至结束录制这一完整的录制流程,并且在视频录制过程中,会将生成的信息,即某些box存入内容中。然而,由于内存数据存在易失性,在实际应用中,一旦录制过程因为断电等特殊情况中断,则已经录制的视频会因数据丢失导致无法播放,且不易恢复。
技术实现思路
1、本技术旨在至少在一定程度上解决相关技术中的技术问题之一。
2、为此,本技术的第一个目的在于提出一种可实现断电保护的mp4视频的录制方法,该方法在视频录制过程中将视频播放所需的相关box实时写入存储介质中,能够实现mp4文件录制过程中的断电保护,提高了mp4视频文件录制的可靠性。
3、本技术的第二个目的在于提出一种可实现断电保护的mp4视频的录制系统;
4、本技术的第三个目的在于提出一种非临时性计算机可读存储介质。
5、为达上述目的,本技术的第一方面在于提出一种可实现断电保护的mp4视频的录制方法,该方法包括以下步骤:
6、通过终端设备持续采集音视频信号;
7、基于mp4格式支持的编码方式,对当前采集的所述音视频信号进行编码,生成音视频编码帧和相应的视频播放所需的帧信息;
8、遵循mp4格式将所述音视频编码帧和所述帧信息进行封装;
9、将封装后的音视频编码帧和帧信息写入内存中的相应box中,并在实时检测出内存中缓存的音视频编码帧的长度达到预设阈值时,将缓存的音视频编码帧和所述帧信息对应的box写入存储介质中,直至mp4视频录制完成。
10、本技术的可实现断电保护的mp4视频的录制方法,还具有如下附加技术特征:
11、可选地,在本技术的一个实施例中,在所述将封装后的音视频编码帧和帧信息写入内存中的对应box中之前,还包括:在所述存储介质中创建mp4视频文件;将视频播放所需的box的标头写入所述存储介质中;按照mp4标准在所述内存中构建mp4视频播放所需的box对象树,并在所述存储介质中为所述box对象树中的每个box分配对应的存储空间且指定每个box的起始写入位置。
12、可选地,在本技术的一个实施例中,所述将封装后的音视频编码帧和帧信息写入内存中的对应box中,包括:将实时的音视频编码帧写入所述内存中预设的mdat box中;在每次实时写入音视频编码帧时,将所述实时的音视频编码帧对应的帧信息写入所述内存中预设的moov box对象树中。
13、可选地,在本技术的一个实施例中,所述预设阈值包括:为音频编码帧预设的音频阈值,以及为视频编码帧预设的视频阈值,所述在实时检测出内存中缓存的音视频编码帧的长度达到预设阈值时,将缓存的音视频编码帧和所述帧信息对应的box写入存储介质中,包括:在检测出所述音频编码帧的长度达到所述音频阈值,或者所述视频编码帧的长度达到所述视频阈值时,将所述内存中缓存的全部音视频编码帧和所述moov box对象树,按照每个box的所述起始写入位置写入对应的所述存储空间中;更新本轮写入后的数据写入位置,并清空所述内存中的缓存内容;循环执行将所述封装后的音视频编码帧和帧信息写入所述内存和所述存储介质的过程。
14、可选地,在本技术的一个实施例中,确定所述预设阈值,包括:获取视频录制过程中音频流的码率和视频流的码率,并确定断电状况下允许的录像缺损时长;根据所述音频流的码率、所述视频流的码率和所述录像缺损时长,分别计算音频阈值和视频阈值。
15、可选地,在本技术的一个实施例中,通过以下公式计算所述音频阈值:
16、音频阈值=音频流码率×录像缺损时长/8;
17、通过以下公式计算所述视频阈值:
18、视频阈值=视频流码率×录像缺损时长/8;
19、其中,录像缺损时长的单位与计算码率的单位时间一致。
20、可选地,在本技术的一个实施例中,所述获取视频录制过程中音频流的码率和视频流的码率,包括:在媒体流的码率是可变的情况下,计算预设的固定时间内接收的音视频编码帧的数据字节数的加权平均值;将所述加权平均值作为当前时段内的码率估值,以便根据所述码率估值调整所述预设阈值。
21、为达上述目的,本技术的第二方面还提出了一种可实现断电保护的mp4视频的录制系统,包括以下模块:
22、采集模块,用于通过终端设备持续采集音视频信号;
23、编码模块,用于基于mp4格式支持的编码方式,对当前采集的所述音视频信号进行编码,生成音视频编码帧和相应的视频播放所需的帧信息;
24、封装模块,用于遵循mp4格式将所述音视频编码帧和所述帧信息进行封装;
25、写入模块,用于将封装后的音视频编码帧和帧信息写入内存中的相应box中,并在实时检测出内存中缓存的音视频编码帧的长度达到预设阈值时,将缓存的音视频编码帧和所述帧信息对应的box写入存储介质中,直至mp4视频录制完成。
26、可选地,在本技术的一个实施例中,写入模块,具体用于:在所述存储介质中创建mp4视频文件;将视频播放所需的box的标头写入所述存储介质中;按照mp4标准在所述内存中构建mp4视频播放所需的box对象树,并在所述存储介质中为所述box对象树中的每个box分配对应的存储空间且指定每个box的起始写入位置。
27、为了实现上述实施例,本技术第三方面还提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述第一方面中的可实现断电保护的mp4视频的录制方法。
28、本技术的实施例提供的技术方案至少带来以下有益效果:本技术在遵循mp4标准格式的要求进行视频录制的前提下,通过一种不同于传统录制的简易方式,在视频录制过程中将视频播放所需的相关box实时、高效的写入存储介质中。其中,具体考虑了内存数据的易失性,将mp4播放需要的moovbox及其子box的内容写入存储介质的时机由结束录制时写入改为录制过程中实时写入。从而能够实现mp4文件录制过程中的断电保护,改进后的录制方式即便是在录制过程中发生断电等中断事件,已经录制到存储介质中的视频部分依然可以正常播放,提高了mp4视频文件录制的可靠性。并且,本技术还综合考虑了存储介质的读写速度和数据处理效率,通过阈值限定的方式确定实时写入存储介质的具体时间点,在能够避免发生断电时,mp4录像丢失过多的内容的基础上,提升存储介质的io性能,保证录像写入磁盘的速度,兼顾了处理效率和设备性能。
29、本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。