在视频监控的检索结果显示方式中,大部分方式采用了文件列表的方式。但是这种方式对于用户来说非常不直观,因为文件名称是DVR的内部文件名,该信息对于用户来说没有任何意义,如下图所示:

搜索历史java 搜索历史视频播放_服务器

图 1 文件列表的方式显示检索结果

在用户回放的时候,需要一个一个的选择文件,然后进行回放,这种方式对于用户来说太专业,根本无法顺利快速找到要回放的位置。

     本文介绍一种基于时间轴的视频文件检索方式,如下图所示:

搜索历史java 搜索历史视频播放_服务器_02

图2 基于时间轴的文件检索结果显示

在一个以时间为基础的界面上直观显示出该事件段内是否有录像录像,用户可以直接在该录像标识上单击,回放控件就会根据点击位置从该时间点进行回放。

该回放功能由三部分组成,文件检索组件、回放控件和时间轴显示组件。

搜索历史java 搜索历史视频播放_服务器_03

图 3 组件关系图

首先文件检索组件根据时间段等条件进行文件检索,并将检索结果提交给时间轴组件,然后,时间轴组件根据检索结果(主要是文件的开始时间、结束时间)在时间轴下面进行录像条显示,如果有录像则标记成蓝色,最后,用户可以在时间轴的录像条上进行鼠标点击,时间轴根据鼠标位置计算出开始播放的时间或者百分比,并将文件名、服务器等信息提交给视频回放控件,回放控件根据这些信息就可以进行回放了。

此外如果有报警等消息,也可以在录像条上进行标记,让用户可以更加明确的进行回放时间点选择。

检索组件和回放控件由ATL编写完成。

时间轴由c#编写完成,其内部类之间的简单关系如下:

搜索历史java 搜索历史视频播放_c#_04

图4 时间轴类对象关系

Timeline标识一个时间轴类,它可以对应多个时间条目(比如一个通道的录像记录),一个时间条目对应多个SourceInfo比如一个录像文件,一个sourceInfo对应多个ObjectEvent比如该录像文件内发上的移动侦测事件。