本发明涉及音视频采集技术领域,特别涉及一种预录的音视频数据的存储方法、存储装置和一种包括前述存储装置的移动终端。
背景技术:
为满足应用需求,很多具有音视频采集功能的移动终端已具有预录功能,可将用户执行录制操作之前的n秒音视频数据临时保存下来,并在用户执行录制操作时将前述n秒音视频数据存储为多媒体文件。因具有预录功能,前述移动终端可避免用户操作延迟造成的关键音视频数据缺失。以具有预录功能的执法记录仪进行违法证据录制为例:在执法人员实际触发录制之前,违法行为可能已经发生;而此时执法记录仪如开启预录功能,执法人员触发录制时,触发录制之前n秒的音视频数据可被保存,作为证明违法行为证据。
但是,一部分预录形成的多媒体文件在播放时,视频图像开始部分为马赛克;由于马赛克对人眼视觉的留滞影响,用户无法清晰地看到到马赛克后一段时间内的视频图像。
技术实现要素:
为解决一部分预录形成的多媒体文件在播放时,视频图像开始部分为马赛克而影响用户视觉的问题,本发明提供一种移动终端中预录的音视频数据的存储方法、存储装置和包括前述存储装置的移动终端。
本发明提供一种移动终端中预录的音视频数据的存储方法,包括以下步骤:
在接收到录制指令之前,将采用预录参数预录的音视频数据写入fifo缓冲器中;所述fifo缓冲器的空间大小由预录时长和预录参数计算确定;所述预录参数包括分辨率和帧率,和/或,码率;
在接收到录制指令时,若所述fifo缓冲器中写入时间最早的音视频数据不是视频关键帧数据,则删除所述音视频数据。
可选的,所述方法应用于android系统中,所述预录的音视频数据由android系统中的mediacodec接口编码形成。
可选的,音频数据为aac格式数据,和/或,视频数据为h264格式数据。
可选的,所述方法应用于android系统中,所述方法还包括:
采用android系统中的mediamuxer接口,将所述fifo缓冲器中的音视频数据封装为多媒体文件。
可选的,所述多媒体文件为mp4格式的文件。
本发明提供一种移动终端中预录的音视频数据的存储装置,包括:写入单元和删除单元;
所述写入单元用于在接收到录制指令之前,将采用预录参数预录的音视频数据写入fifo缓冲器中;所述fifo缓冲器的空间大小由预录时长和预录参数计算确定;所述预录参数包括分辨率和帧率,和/或,码率;
在接收到录制指令时,所述删除单元用于在所述fifo缓冲器中写入时间最早的音视频数据不是视频关键帧数据时,删除所述音视频数据。
本发明提供一种基于android系统的移动终端,包括如前所述的存储装置,所述存储装置中预录的音视频数据由mediacodec接口编码形成。
可选的,所述预录的音视频数据中,音频数据为aac格式数据,和/或,视频数据为h264格式数据。
可选的,所述fifo缓冲器中的音视频数据由mediamuxer接口封装为多媒体文件。
可选的,所述多媒体文件为mp4格式的文件。
本发明提供的移动终端中预录的音视频数据的存储方法,根据用户设定的预录参数和预录时长设定fifo缓冲器的存储空间大小,并将采用预录参数预录的音视频数据存入到fifo缓冲器中;在接收到录制指令时,如果fifo缓冲器中写入时间最早的音视频数据为非关键帧视频数据和/或音频帧数据,则将此非关键帧视频数据和/或音频帧数据删除、直至写入时间最早的数据为关键帧视频数据。此时,因fifo缓冲器中写入时间最早的数据为关键帧视频数据,所以在将fifo缓冲器中的音视频数据封装为多媒体文件后,多媒体文件中的第一帧视频数据一定为关键帧视频数据;在多媒体文件播放时,不会出现马赛克现象,避免了马赛克对人眼视觉的留滞影响。另外,因为fifo缓冲器的容量根据用户设定的预录参数和预估的预录时长设定,所以可更好地满足实际应用需求。
附图说明
为更清楚地说明背景技术或本发明的技术方案,下面对现有技术或具体实施方式中结合使用的附图作简单地介绍;显而易见地,以下结合具体实施方式的附图仅是用于方便理解本发明实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图;
图1是本发明实施例提供的移动终端中预录的音视频数据的存储方法流程图;
图2是本发明实施例提供的移动终端中预录的音视频数据的存储装置流程图;
图3是本发明实施例提供的移动终端结构示意图;
其中:1-移动终端中预录的音视频数据存储装置,11-写入单元,12-fifo缓冲器、13-删除单元,2-拾音器、3-摄像头,4-mediacodec接口,5-mediamuxer接口。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
图1是本发明实施例提供的移动终端中预录的音视频数据的存储方法流程图。请参见图1,本实施例的移动终端中预录的音视频数据的存储方法包括以下步骤。此处应当注意,本发明实施例提供的音视频数据的存储方法可应用在各种具有音视频采集功能的移动终端中;实际应用中,移动终端优选为执法记录仪、行车记录仪、智能手机或摄像机等设备。
s101:采用预录参数预录音视频数据。
移动终端开启并被设置预录功能后,其中的摄像头和拾音器即开始进行数据采集操作,分别获得视频采样数据和音频采样数据;随后,移动终端中的编码模块将视频采样数据和音频采样数据按照预设规则进行编码,形成待存储的预录视频数据和预录音频数据。前述预录参数可以为摄像头的分辨率和帧率、拾音器的分辨率和帧率,也可以直接为音视频数据的码率。
以采用android操作系统的移动终端为例:摄像头采集的视频采样数据被输送至移动终端预览显示屏输出的同时,android系统中的预览回调接口获取视频采样数据并发送给mediacodec接口;mediacodec接口将视频采样数据编码为为相应的视频数据,以用于后续存储。其中,视频编码方法可以为h261、h263、h264、m-jpeg和mpeg等本领域已知编码方法中的任意一种,本发明实施例并不做具体限定;考虑在同等画面质量的前提下,h264编码方法的压缩率高于其他编码方法的压缩率,所以本发明实施例优选采用android系统推荐的h264编码方法。
类似的,拾音器采集的音频采样信号被取样形成音频采样数据,音频采样数据也被发送至mediacodec接口,以通过mediacodec接口形成编码的音频数据。其中,音频编码方法可以为mp3、aac、mpeg-1等本领域已知编码方法中的任意一种,本发明实施例也并不做具体限定;考虑在相同音质条件下,aac编码方法的的压缩率高于其他编码方法的压缩率,所以本发明实施例优选采用android系统推荐的aac编码方法。
s102:将预录的音视频数据写入到fifo缓冲器。
移动终端开启并被设置预录功能后,即在内存中开设一fifo(firstinputfirstoutput)缓冲器,fifo缓冲器用于缓存前述待预录的音视频数据。fifo缓冲器的空间大小根据待预录音视频数据的预录时长和s101中设定的预录参数确定,以保证能够存储用户设定预录时长的音视频数据。
应当注意,在fifo缓冲器中,音频数据和视频数据按照采集时间顺序进行混合存储,以保证二者时间同步。
为便于后续区分音频数据和视频数据,音视频数据写入到fifo缓冲器前先做对象化处理、形成可序列化的数据对象。可序列化的数据对象的表头包括媒体类型、媒体信息,数据部分为前述音频数据或视频数据;其中:媒体类型分为视频和音频两种,分别针对前述的视频数据和音频数据;媒体信息包括时间戳信息、长度信息和属性信息,时间戳信息存储数据对象的录制时间、长度信息存储数据对象的大小,属性信息存储相应的数据是否为关键帧数据。还应注意,此处是否为关键帧数据仅针对视频数据而言。
具体应用时,根据移动终端开启时间的不同,fifo缓冲器处于不同的工作状态:(1)移动终端开启时间小于预录时长时,因为fifo缓冲器的容量大于已存储的音视频数据、仍有可用存储空间,所以后续音视频数据发送至fifo缓冲器时,fifo缓冲器直接存储后续音视频数据。(2)移动终端开启时间大于或等于预录时长时,fifo缓冲器存储空间已全部被占用;为存储最近预设时长的音视频数据,fifo缓冲器会删除最早获得的音视频数据、腾出足够的存储空间,并将最新得到的音视频数据存储至被删除音视频数据对应的地址处。
s103:接收到录制指令时,判断fifo缓冲器中写入时间最早的音视频数据是否为视频关键帧数据;如果是,则执行s105;如果否,则执行s104。
s104:删除写入时间最早的音视频数据,返回s103。
s105:将fifo缓冲器中的音视频数据封装为多媒体文件,并将多媒体文件存储至存储器。
根据接收到录制指令时机的不同,存储在fifo缓冲器中并且写入时间最早的音视频数据可能为视频关键帧数据,可能为视频非关键帧数据,也可能为音频帧数据,具体可根据可序列化对象中表头信息判断得到。
如果fifo缓冲器中写入时间最早的音视频数据不是视频关键帧数据,则将此数据删除,直至写入时间最早的数据为视频关键帧数据。此时,因fifo缓冲器中写入时间最早的数据为视频关键帧数据,所以在将fifo缓冲器中的音视频数据封装为多媒体文件后,多媒体文件中的第一帧视频数据一定为视频关键帧数据;在多媒体文件播放时,不会在播放开端出现马赛克现象,避免了马赛克对人眼视觉的留滞影响。另外,因为fifo缓冲器的容量根据用户设定的预录参数和预估的预录时长设定,所以可更好地满足实际应用需求。
仍以采用android操作系统的移动终端为例,在执行s105中,移动终端可利用android系统中的mediamuxer接口将音视频数据封装为多媒体文件。具体的,多媒体文件可以被存储为已知的各种格式的文件,但优选存储为mp4格式文件。
除提供前述预录的音视频数据的存储方法外,本发明实施例还提供一种实现前述方法的存储装置。
图2是本发明实施例提供的移动终端中预录的音视频数据的存储装置流程图。请参见图2,本实施例提供的移动终端中预录的音视频数据的存储装置1包括写入单元11、fifo缓冲器12、删除单元13。
fifo缓冲器12用于存储预录的音视频数据;fifo缓冲器12的空间大小根据预录时长和预录参数确定,预录参数可以为视频数据的分辨率和帧率、音频数据的分辨率和帧率,也可为视频数据和音频数据编码的码率。
写入单元11用于在接收到录制指令之前,将根据预录参数预录的音视频数据写入到fifo缓冲器12中;删除单元13用于在接收到录制指令时,并且判定fifo缓冲器12中写入时间最早的音视频数据不是视频关键帧数据时,删除前述音视频数据、直至录入时间最早的数据为视频关键帧数据。
本发明实施例还提供一种基于android系统的移动终端。图3是本发明实施例提供的移动终端结构示意图,如图3,此移动终端包括摄像头3、拾音器2和mediacodec接口4。摄像头3用于采集视频数据,拾音器2用于采集音频数据,mediacodec接口4用于将摄像头3采集的视频采样数据编码为视频数据、将拾音器2采集的音频采样数据编码为音频数据。
其中,mediacodec接口4采用的视频编码方法可以为h261、h263、h264、m-jpeg和mpeg等本领域已知编码方法中的任意一种,本发明实施例并不做具体限定,但优选采用android系统推荐的h264编码方法。mediacodec接口4采用的音频编码方法可以为mp3、aac、mpeg-1等本领域已知编码方法中的任意一种,本发明实施例也并不做具体限定,但优选采用android系统推荐的aac编码方法。
进一步的,如图3所示,fifo缓冲器12中的音视频数据可由android系统中的mediamuxer接口5封装形成多媒体文件;此外,被封装形成的多媒体文件优选为mp4格式的文件。
以上对本发明实施例中的音视频数据的存储方法、存储装置和移动终端进行了详细介绍。本部分采用具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的核心思想,在不脱离本发明原理的情况下,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。