一种多路录像实现快速写磁盘文件的方法及装置制造方法及图纸

技术编号:25605400 阅读:21 留言:0更新日期:2020-09-12 00:01
本发明专利技术公开了一种多路录像实现快速写磁盘文件的方法及装置,当通道录像时,各个录像通道分别从空闲缓冲区链表中取出缓冲区,将采集到的音视频数据写入到缓冲区,当缓冲区写满时,将缓冲区挂载到对应通道缓冲区链表中;当写磁盘文件时,从通道缓冲区链表中获取缓冲区,将缓冲区数据写入磁盘文件中,数据写完后,将缓冲区挂载到空闲缓冲区链表上。本发明专利技术提高了缓冲区的利用率,减少了系统资源的浪费,实现了快速保存音视频数据,保证了磁盘有足够的时间写入数据,防止出现音视频数据丢失的现象。

【技术实现步骤摘要】
一种多路录像实现快速写磁盘文件的方法及装置
本专利技术涉及一种多路录像实现快速写磁盘文件的方法及装置,属于音视频数据存储

技术介绍
对于音视频录像,一帧音视频数据采集后,会将数据最终存放到磁盘文件中。假定通道码流设置为4Mbps每秒,如果有8路视频同时录制的话,每秒就需要存储32Mbps的数据量。由于磁盘本身设计和系统内核的写磁盘机制,导致在某一时刻写数据时间过长,而前端的音视频数据采集时间间隔是40ms,采集的音视频数据如果不及时取走,会被后面采集到的音视频数据覆盖,导致音视频数据的丢失。现有的写缓存机制,将采集的数据写到缓冲区,再模拟快速写磁盘文件。但是,系统的缓冲区大小有限,在面对多路同时录制系统时,如果缓冲区分配不够多,在写卡顿时会导致缓冲区不够用,前端的音视频的被覆盖,导致音视频数据丢失。或者设置大量不共享的缓冲区,用于写卡顿时的备份,但是,现有录制通道数量很多,大量备份缓冲区会减小系统中其他程序可用缓冲区,最终影响系统性能。
技术实现思路
目的:为了克服现有技术中存在的音视频数据写入磁盘不及时的问题,本专利技术提供一种多路录像实现快速写磁盘文件的方法及装置。技术方案:为解决上述技术问题,本专利技术采用的技术方案为:一种多路录像实现快速写磁盘文件的方法,包括如下步骤:当通道录像时,各个录像通道分别从空闲缓冲区链表中取出缓冲区,将采集到的音视频数据写入到缓冲区,当缓冲区写满时,将缓冲区挂载到对应通道缓冲区链表中;当写磁盘文件时,从通道缓冲区链表中获取缓冲区,将缓冲区数据写入磁盘文件中,数据写完后,将缓冲区挂载到空闲缓冲区链表上。作为优选方案,还包括:当写入磁盘文件卡顿时,对应的录像通道从空闲缓冲区链表中取出共享缓冲区,将采集到的音视频数据写入到共享缓冲区,当共享缓冲区写满时,将共享缓冲区挂载到对应的通道缓冲区链表中;将共享缓冲区数据写入磁盘文件后,将共享缓冲区挂载到空闲缓冲区链表上。一种多路录像实现快速写磁盘文件的装置,包括录像存储模块、通道缓存处理模块;所述录像存储模块采集到音视频数据后,从空闲缓冲区链表中获取可用的缓冲区,将音视频数据写入缓冲区,写满缓冲区后,通知通道缓存处理模块,并将写满的缓冲区挂载到对应通道缓冲区链表中;所述通道缓存处理模块收到录像存储模块通知后,从通道缓冲区链表中获取写满的缓冲区,将缓冲区的数据写入到磁盘指向的录像文件中,再将缓冲区挂载到空闲缓冲区链表上。作为优选方案,如果缓冲区剩余可用空间小于一帧音视频数据长度,录像存储模块先将部分音视频数据填充缓冲区的剩余空间,将写满的缓冲区挂载到对应的通道缓冲区链表,再从空闲缓冲区链表中获取可用的缓冲区,将音视频数据剩余的部分填充到缓冲区中。作为优选方案,所述空闲缓冲区链表数量为一个,用于挂载空白的缓冲区。作为优选方案,所述通道缓冲区链表与录像通道一一对应,用于挂载每个录像通道写入的缓冲区。有益效果:本专利技术提供的一种多路录像实现快速写磁盘文件的方法及装置,采用缓冲区链表和共享缓冲式的模式可以灵活使用缓冲区对多路录像通道进行写磁盘文件管理,提高了缓冲区的利用率,减少了系统资源的浪费,实现了快速保存音视频数据,保证了磁盘有足够的时间写入数据,防止出现音视频数据丢失的现象。附图说明图1为本专利技术方法中的空闲缓冲区链表、通道缓冲区链表的构架图;图2为本专利技术方法中的共享缓冲区分配示意图;图3为本专利技术装置的录像存储模块处理流程图;图4为本专利技术装置的通道缓存处理模块处理流程图。具体实施方式下面结合附图对本专利技术作更进一步的说明。一种多路录像实现快速写磁盘文件的方法,包括如下步骤:当通道录像时,各个录像通道分别从空闲缓冲区链表中取出缓冲区,将采集到的音视频数据写入到缓冲区,当缓冲区写满时,将缓冲区挂载到对应通道缓冲区链表中;当写磁盘文件时,从通道缓冲区链表中获取缓冲区,将缓冲区数据写入磁盘文件中,数据写完后,将缓冲区挂载到空闲缓冲区链表上。如图1所示,所述空闲缓冲区链表数量为一个,用于挂载空白的缓冲区;所述通道缓冲区链表与录像通道一一对应,用于挂载每个录像通道写入的缓冲区。如图2所示,当遇到写入磁盘文件卡顿时,对应的录像通道从空闲缓冲区链表中取出共享缓冲区,将采集到的音视频数据写入到共享缓冲区,当共享缓冲区写满时,将共享缓冲区挂载到对应通道缓冲区链表中;将共享缓冲区数据写入磁盘文件后,将共享缓冲区挂载到空闲缓冲区链表上。如果不设置共享缓冲区,一个通道需要分配的缓冲区总数是T,分别包含:不卡顿情况时需要的缓冲区数量N,和卡顿情况时需要增加的备用缓冲区数量E。那么,M个通道需要的缓冲区总数是S,S=M*T=M*(N+E),由此可见,这将造成大量缓冲区被闲置,造成系统资源的浪费。本专利技术采用缓冲区共享的方式,通过设置E个共享缓冲区,M个通道需要的缓冲区总数是S:S=M*N+E。降低了缓冲区的闲置,在现在通道个数越来越多的情况下,大大节约了缓冲区的资源。一种多路录像实现快速写磁盘文件的装置,包括:录像存储模块、通道缓存处理模块。如图3所示,所述录像存储模块采集到音视频数据后,从空闲缓冲区链表中获取可用的缓冲区,将音视频数据写入缓冲区,继续采集下一帧数据。如果缓冲区剩余可用空间小于一帧音视频数据长度,先将部分音视频数据填充缓冲区的剩余空间,将写满的缓冲区挂载到对应的通道缓冲区链表,通知通道缓存处理模块,录像存储模块再从空闲缓冲区链表中获取可用的缓冲区,将音视频数据剩余的部分填充到缓冲区中。由于录像存储模块只是将音视频数据写到缓冲区而非写入磁盘文件,不存在音视频数据丢帧的情况。如图4所示,所述通道缓存处理模块收到录像存储模块通知后,从通道缓冲区链表中获取写满的缓冲区,将缓冲区的数据写入到磁盘指向的录像文件中,再将缓冲区挂载到空闲缓冲区链表上。本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中本文档来自技高网...

【技术保护点】
1.一种多路录像实现快速写磁盘文件的方法,其特征在于:包括如下步骤:/n当通道录像时,各个录像通道分别从空闲缓冲区链表中取出缓冲区,将采集到的音视频数据写入到缓冲区,当缓冲区写满时,将缓冲区挂载到对应通道缓冲区链表中;/n当写磁盘文件时,从通道缓冲区链表中获取缓冲区,将缓冲区数据写入磁盘文件中,数据写完后,将缓冲区挂载到空闲缓冲区链表上。/n

【技术特征摘要】
1.一种多路录像实现快速写磁盘文件的方法,其特征在于:包括如下步骤:
当通道录像时,各个录像通道分别从空闲缓冲区链表中取出缓冲区,将采集到的音视频数据写入到缓冲区,当缓冲区写满时,将缓冲区挂载到对应通道缓冲区链表中;
当写磁盘文件时,从通道缓冲区链表中获取缓冲区,将缓冲区数据写入磁盘文件中,数据写完后,将缓冲区挂载到空闲缓冲区链表上。


2.根据权利要求1所述的一种多路录像实现快速写磁盘文件的方法,其特征在于:还包括:
当写入磁盘文件卡顿时,对应的录像通道从空闲缓冲区链表中取出共享缓冲区,将采集到的音视频数据写入到共享缓冲区,当共享缓冲区写满时,将共享缓冲区挂载到对应的通道缓冲区链表中;将共享缓冲区数据写入磁盘文件后,将共享缓冲区挂载到空闲缓冲区链表上。


3.根据权利要求1或2所述的一种多路录像实现快速写磁盘文件的方法,其特征在于:所述空闲缓冲区链表数量为一个,用于挂载空白的缓冲区。


4.根据权利要求1或2所述的一种多路录像实现快速写磁盘文件的方法,其特征在于:所述通道缓冲区链表与录像通道一一对应,用于挂载每个录像通道写入的缓冲区。


5....

【专利技术属性】
技术研发人员:洪雁张全宝吴晓樵
申请(专利权)人:南京通用电器有限公司
类型:发明
国别省市:江苏;32

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

1