位置:51电子网 » 技术资料 » 其它综合

数字硬盘录像系统录像功能模块的设计与实现

发布时间:2008/5/28 0:00:00 访问次数:550

  数字监控技术在经过几年的快速发展后已深入应用到各行各业,并发挥着越来越重要的作用。但是,以往数字监控系统的录像功能在时间的精确度、稳定性等方面的指标离人们所期望的标准还有一定的距离。录像过程如图1所示,摄像机将采集到的模拟音视频信号送到音视频编码卡,编码卡完成对信号的编码、压缩,计算机将经过编码压缩后的数据进行存储管理。可以看出,录像的过程实时性较强,数据量较大,对硬盘操作很密集。由于计算机系统是一种多任务的系统,对硬盘的操作时间较长,所以录像时间精度一般都不是很高。比如,录像文件分割,从第一个通道开始到最后一个通道结束,在时间上会出现较大的误差,误差因计算机性能的差别一般在几秒至几十秒之间,这在一般的应用中是可以容忍的,但是在某些特定的应用场合下对时间精度则有更高的要求,例如要求各通道同步回放,那么各通道录像时间必须实现精确同步,这时候这个误差就不能容忍。针对应用中的各种需求,本文介绍了一种数字硬盘录像系统录像功能模块的设计和实现方案。

1设计目标

为了满足各种不同的应用需求,录像功能模块应达到以下要求:

(1)录像时间精确控制,主要包括2个方面:一是从启动录像到开始录像时间的误差,特别是当多个通道在同一时刻同时启动录像的情况下的误差控制;二是各通道录像文件分割时间的误差,即从第一通道开始分割到最后一个通道分割完毕的时间差控制。

(2)录像分割无重复、无丢失,即前一个录像文件和后一个录像文件之间内容没有任何的重复或丢失。

(3)录像控制稳定性高,录像文件管理完整性好,具有较强的容错功能。监控系统要求能够长期地稳定地工作,录像功能模块作为监控系统的核心部分,其稳定性要求更高,在各种情况下应都能稳定工作,录像文件管理要完整,不能因停电、死机等异常情况而出现一些无效文件或是空的数据库记录,在计算机出现故障时应尽量减小损失,比如正录像时出现硬盘故障,这时应该将新的数据转录到另一可用的硬盘。

(4)预录功能,在出现警报时能够将警报前一段时间的音视频数据记录下来。

(5)功能模块具有透明性和通用性。对外只提供调用的接口,在使用时不必考虑内部结构,具有相对的独立性。

2几个主要问题及解决思路

2.1 启动录像

  为了保证在录像过程中数据不丢失,录像文件的存储一般采用多线程技术,并开辟内存缓冲区,如图2所示,线程1负责将经过编码的音视频数据放入缓冲区,线程2负责将缓冲区中的数据写入存储器。

  在启动录像时,不仅要创建录像文件,还要写数据库记录,然后才能将录像数据写入存储器。由于外存储器的操作速度较慢,并且是一种共享设备,所以在创建文件和写数据库操作时都会有一定的时延,特别在是系统比较繁忙的时候时延会较大。比如,有多路录像同时启动,时延会更长,若是顺序启动,最后一路通道启动录像的时间则和第一路通道相差很大。

  产生误差的根本原因在于录像启动时创建文件的时间过长,这可以通过启动后先暂时将数据写到内存、最后再创建文件的办法加以解决。可以为每个录像通道分配一段内存缓冲区,启动录像后将数据先写入缓冲区,并不直接创建文件,更改录像状态的标识位后,继续启动下个通道的录像,直至所有通道启动完毕。创建文件的任务则由一个后台等待的线程来完成,当文件创建完成之后再将数据写入文件,只要缓冲区足够,则能够保证数据不会丢失。因为对内存的操作速度非常快,所以即使同时启动多个通道的录像,也能在极短的时间之内启动录像,保证录像启动时间的精确度,同时也保证了同时启动的多个通道录像启动时间的精确同步,为实现录像的同步回放提供了保证。

2.2 录像文件分割

  录像文件分割的目的在于避免一个录像文件过大。录像文件分割首先要关闭当前正在写入的文件,并操作数据库,记录下录像文件的结束时间,然后再创建一个新文件,在数据库中记录下创建的新录像文件的信息,并将新的数据写入新创建的文件。

  录像文件的分割主要有两个问题要解决,一是保证分割前后的录像文件要连续;二是保证各个通道分割时间要基本相同。第一个问题通过设置缓冲区则可以很好地解决,在分割文件过程中可以将录像数据暂存在内存缓冲区中,等分割完毕后再将缓冲区的数据写到新的文件中去;第二个问题可用类似于解决启动录像时延的方法来解决,在开始启动分割的时刻记下当前缓冲区的位置(这个位置之前存放的是分割前的数据,这个

  数字监控技术在经过几年的快速发展后已深入应用到各行各业,并发挥着越来越重要的作用。但是,以往数字监控系统的录像功能在时间的精确度、稳定性等方面的指标离人们所期望的标准还有一定的距离。录像过程如图1所示,摄像机将采集到的模拟音视频信号送到音视频编码卡,编码卡完成对信号的编码、压缩,计算机将经过编码压缩后的数据进行存储管理。可以看出,录像的过程实时性较强,数据量较大,对硬盘操作很密集。由于计算机系统是一种多任务的系统,对硬盘的操作时间较长,所以录像时间精度一般都不是很高。比如,录像文件分割,从第一个通道开始到最后一个通道结束,在时间上会出现较大的误差,误差因计算机性能的差别一般在几秒至几十秒之间,这在一般的应用中是可以容忍的,但是在某些特定的应用场合下对时间精度则有更高的要求,例如要求各通道同步回放,那么各通道录像时间必须实现精确同步,这时候这个误差就不能容忍。针对应用中的各种需求,本文介绍了一种数字硬盘录像系统录像功能模块的设计和实现方案。

1设计目标

为了满足各种不同的应用需求,录像功能模块应达到以下要求:

(1)录像时间精确控制,主要包括2个方面:一是从启动录像到开始录像时间的误差,特别是当多个通道在同一时刻同时启动录像的情况下的误差控制;二是各通道录像文件分割时间的误差,即从第一通道开始分割到最后一个通道分割完毕的时间差控制。

(2)录像分割无重复、无丢失,即前一个录像文件和后一个录像文件之间内容没有任何的重复或丢失。

(3)录像控制稳定性高,录像文件管理完整性好,具有较强的容错功能。监控系统要求能够长期地稳定地工作,录像功能模块作为监控系统的核心部分,其稳定性要求更高,在各种情况下应都能稳定工作,录像文件管理要完整,不能因停电、死机等异常情况而出现一些无效文件或是空的数据库记录,在计算机出现故障时应尽量减小损失,比如正录像时出现硬盘故障,这时应该将新的数据转录到另一可用的硬盘。

(4)预录功能,在出现警报时能够将警报前一段时间的音视频数据记录下来。

(5)功能模块具有透明性和通用性。对外只提供调用的接口,在使用时不必考虑内部结构,具有相对的独立性。

2几个主要问题及解决思路

2.1 启动录像

  为了保证在录像过程中数据不丢失,录像文件的存储一般采用多线程技术,并开辟内存缓冲区,如图2所示,线程1负责将经过编码的音视频数据放入缓冲区,线程2负责将缓冲区中的数据写入存储器。

  在启动录像时,不仅要创建录像文件,还要写数据库记录,然后才能将录像数据写入存储器。由于外存储器的操作速度较慢,并且是一种共享设备,所以在创建文件和写数据库操作时都会有一定的时延,特别在是系统比较繁忙的时候时延会较大。比如,有多路录像同时启动,时延会更长,若是顺序启动,最后一路通道启动录像的时间则和第一路通道相差很大。

  产生误差的根本原因在于录像启动时创建文件的时间过长,这可以通过启动后先暂时将数据写到内存、最后再创建文件的办法加以解决。可以为每个录像通道分配一段内存缓冲区,启动录像后将数据先写入缓冲区,并不直接创建文件,更改录像状态的标识位后,继续启动下个通道的录像,直至所有通道启动完毕。创建文件的任务则由一个后台等待的线程来完成,当文件创建完成之后再将数据写入文件,只要缓冲区足够,则能够保证数据不会丢失。因为对内存的操作速度非常快,所以即使同时启动多个通道的录像,也能在极短的时间之内启动录像,保证录像启动时间的精确度,同时也保证了同时启动的多个通道录像启动时间的精确同步,为实现录像的同步回放提供了保证。

2.2 录像文件分割

  录像文件分割的目的在于避免一个录像文件过大。录像文件分割首先要关闭当前正在写入的文件,并操作数据库,记录下录像文件的结束时间,然后再创建一个新文件,在数据库中记录下创建的新录像文件的信息,并将新的数据写入新创建的文件。

  录像文件的分割主要有两个问题要解决,一是保证分割前后的录像文件要连续;二是保证各个通道分割时间要基本相同。第一个问题通过设置缓冲区则可以很好地解决,在分割文件过程中可以将录像数据暂存在内存缓冲区中,等分割完毕后再将缓冲区的数据写到新的文件中去;第二个问题可用类似于解决启动录像时延的方法来解决,在开始启动分割的时刻记下当前缓冲区的位置(这个位置之前存放的是分割前的数据,这个

相关IC型号
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!