成洪豪, 石 芮, 孙立民
(烟台大学 计算机与控制工程学院, 山东 烟台 264005)
当前,在应对和处理各类突发事件的过程中,现场指挥调度系统发挥了越来越重要的作用。特别是部门与机构众多的时候,有效的指挥调度显得尤为重要,如公安、税务、海关、消防等现场执法指挥,有效的指挥调度有利于对突发事件的及时控制与解决。实现有效调度指挥的根本在于通过音视频传输,对一线实况有充分的了解,对现有资源有程度较高的掌握,从而使调度指挥决策具有针对性,更加高效。技术层面,现场指挥调度系统应该具备轻便简捷开机即用、操作简便直观、音频质量稳定,并快速组织多方通话的特点。同时,随着计算机技术,网络技术的快速发展,使得开发一个实时高效的现场指挥调度系统已成为可能。
传统的应急通信方式主要有背负式应急通讯设备[1]、海事卫星电话[2]、应急通讯车[3]等,其中背负式应急通讯设备功率小,信号覆盖面积小,携带不够轻便简洁,操作要求较高;海事卫星电话频段有限,在大范围应用中,缺乏稳定性;应急通讯车容易受到环境的限制,可能无法应用于前线,并且只具备接收指挥信息的功能,无法实时向指挥中心发送现场实况,不利于指挥工作的迅捷展开[4]。目前一些指挥调度系统还存在着一定的不足。如文献[5]结合Android应用开发的一款应急调度软件,没有将一线视频传回指挥中心,仅对调度方面进行了优化和创新。文献[6]将各种信号采集到云平台中,将一线视频进行了汇总,并传回指挥中心,实现了一个可视化综合指挥调度系统在民防应急指挥中的运用,但该系统并未对指挥调度进行研究和开发。文献[7]构建了一个实战型公安警务一体化指挥调度平台,对一线情况的传回和指挥调度方面均做了进一步优化,但缺乏对事件处理灵活性,也并未提供对信息的整合和存储。
本项目设计开发了一个配备实时视频功能的指挥调度系统。采用WebRTC技术[8],利用WebRTC的跨平台特性,仅使用HTML、无插件便实现视频的连接和传输。搭配Kurento流媒体服务器,使得视频流传输给Kurento服务器,再由Kurento服务器进行转发和存储等,便于对视频流进行操作。借用Kurento中的拥塞控制机制,适应当前设备的网络状况,降低或提高视频分辨率,优化传输过程的稳定性。利用WebRTC实现移动设备与指挥中心的视频通信,结合任务驱动将事件整合为任务的形式进行分配和调度,使指挥中心可实时掌握现场状况,应急指挥调度更为科学合理,将事件的处理过程以任务的形式保存下来,方便以后的读取。
拟开发的实时指挥系统,指挥中心通过对一线实时视频信息的了解,实现对一线执行人员的精准指挥,并将所有信息进行整合与保存。通过现场调研与系统分析,得到系统的功能需求,详见表1。
为实现上述功能,将采用WebRTC与Kurento[9]媒体服务器相结合的方法,进行视频的连接、传输和保存。WebRTC最大的优点在于能够很好地完成这种对于实时性要求很高的工作,再加上Kurento中的拥塞控制机制,可以根据网络情况自动地调节和适应视频的分辨率,对于紧急事件类实时性要求较高的任务都能够满足设计需要。而且WebRTC通过HTML直接进行视频交流,不需要其它第三方插件,可降低维护成本,利于后期的维护工作。
表1 实时指挥系统的功能需求分析
针对紧急事件的突发性和随机性,将实时指挥系统与任务驱动相结合。将任务分解为任务、任务节点、节点信息,任务中包含多个任务节点,任务节点包含多个节点信息。所有的信息都围绕任务进行保存和读取。任务中包括任务的增加、删除、接受、审核等。通过对任务、任务节点的分配,明确各项任务的执行顺序,使任务能被更加有序地完成,有利于提高工作效率。
1.3.1 网络架构
系统采用有线网络、移动网络、WiFi等网络通信方式实现执行现场单位、执行人员的各类数据消息的传输,构成一个B/S架构的异构网络[10]系统。各个执行单位、指挥人员、现场执行人员在权限范围内都可以访问和操作系统各项功能,实现实时指挥与调度。系统的网络架构设计,如图1所示。
1.3.2 系统整体架构设计
根据上述系统需求,设计了实时指挥系统的整体架构图,如图2所示。由图2可知,最上层为实时指挥系统需要实现的业务功能,包括登录验证模块、任务管理模块、实时通信模块、视频存储和回放模块。最下层分别是信令服务器、流媒体服务器和应用服务器。其中,信令服务器主要用于交换对等连接双方的信息,建立视频流信息的传输通道。流媒体服务器主要用于视频流信息的保存、读取和视频流传输过程中的优化。应用服务器主要用于提供Web服务和数据库服务、以及任务的相关操作与保存。
图1 系统的网络架构设计
图2 系统整体架构图
出于安全与管理考虑,每个用户都需要向管理员申请账号,管理员添加账号与权限后方可进入系统。 在登录时,用户需要填写用户名、密码与验证码。后台读取用户名、密码将会与缓存中的用户名和密码进行匹配,若之前登录过该用户,且本次用户名、密码输入正确,则通过;若之前未登录过该用户,则将本次登录的用户名、密码与数据库中信息进行匹配,如果数据库中存在对应信息,则通过登录,并将本次登录的用户名、密码存入缓存中,方便下次进行验证。
任务的管理主要包括任务的查看、创建、删除、修改、审核、分配。全系统依靠任务驱动运行,将应急突发事件作为一个任务进行分配,而任务中又包括多个任务节点、即子任务,通过将任务划分为子任务进行分配,提高了任务的执行效率,而将所有信息依靠任务节点保存起来,使得记录变得更加有序。任务流程如图3所示。
图3 任务管理流程图
本模块主要实现了一对一指挥和一对多现场展示的功能。采用WebRTC与流媒体服务器Kurento相结合的方法,前台通过WebSocket访问信令服务器,注册自己的相关信息,交换对等连接的相关信息,建立Kurento通道,将连接双方的视频流传入Kurento中,再通过Kurento所建立的通道,实现双方视频信息的交互。一对一建立连接时序,如图4所示。一对多现场展示时序,如图5所示。
图4 一对一指挥视频时序图
图4中,A、B分别为2个浏览器端,前台界面首先向信令服务器发送自己的注册信息,得到注册的反馈。然后A向信令服务器发送对B呼叫的请求,信令服务器向B发送A要对其进行呼叫的信息。B收到信息,反馈信息给信令服务器,信令服务器将反馈信息发送给A。
A、B收集候选网络并发送到信令服务器,信令服务器建立A和B的Kurento通道,A、B通过通道向Kurento发送自己的视频流,并接收对方的视频流。最后A发送停止信息给信令服务器,信令服务器发送A要停止视频的信息给B,双方断开连接。
图5中,A、B分别为2个浏览器端,前台界面首先向信令服务器发送自己的注册信息,得到注册的反馈。然后A向信令服务器发送执行命令的请求,信令服务器发送反馈信息给A。A收集候选网络并发送到信令服务器,信令服务器建立A的Kurento单向通道,A通过通道向Kurento发送自己的视频流。此时B发送查看A执行任务的请求给信令服务器,信令服务器接到请求并发送反馈信息给B,B收集候选网络并发送到信令服务器,信令服务器将A的Kurento通道的另一端连接B,B接收A的视频流。
图5 一对多现场展示视频时序图
本模块主要在视频流信息流经Kurento的时候,将视频流进行拷贝,并按照任务的信息存储在视频流服务器Kurento中,方便根据任务取得所有的视频信息。回放功能主要是通过应用服务器,读取数据库存储的信息,访问Kurento服务器的相关文件,得到相对应的视频。
网页端在Java EE开源框架Jeecg的基础上进行开发,后台以Spring-Boot为核心框架,使用Java语言编写代码,使用MyBatis实现对于Oracle数据库的数据访问,ApacheShiro实现对权限的控制,Ehcahe和Redis 对数据进行缓存,Thymeleaf作为模板引擎。前台使用Vue框编写HTML/js页面,并引入Kurento提供的第三方js库进行视频相关的开发。
系统中视频传送链路主要包括一对一指挥链路和一对多现场展示链路。链路建立流程详见如下。
流程1 一对一
算法: O2OCall
输入:E表示任务执行者,T表示指挥中心,N表示当前摄像头状态,S表示执行状态
输出:连接建立,互相发送视频信息
if (S==1){//当任务正在被执行时
if(N==1){ //如果当前摄像头正在使用
Set(N=0)//更改摄像头状态
Stop(N)//关闭当前任务执行所占用的摄像头
Register(T)//后台注册指挥中心信息
Traversal(E)//遍历获取任务执行者信息
Connect(E,T) //执行Connect算法,建立双方对等连接,互相发送视频信息
Set(N=1)//更改摄像头状态
}else{
Register(T)//后台注册指挥中心信息
Traversal(E)//遍历获取任务执行者信息
Connect(E,T) //执行Connect算法,建立双方对等连接,互相发送视频信息
}
}else{
Init()//执行初始化算法,刷新网页,更新状态
}
流程2 一对多
算法: O2M
输入:E表示任务执行者,T表示指挥中心,N表示当前摄像头状态,S表示执行状态
输出: 连接建立,接收执行者发送的视频信息
if (S==1){//当任务正在被执行时
Register(T)//后台注册指挥中心信息
Traversal(E)//遍历获取任务执行者信息
Connect(E,T) //执行Connect算法,建立双方对等连接,只接收任务执行者发送的信息
}
else{
Init()//执行初始化算法,弹窗提示,当前任务未在执行
}
本模块对所开发的面向音视频流的实时指挥系统的各项功能进行验证。对此可做阐释分述如下。
通过用户名、密码进行登录,信息传入后台,打包成token,由shiro安全框架进行验证,提高安全性。功能界面如图6所示。
图6 登录验证
任务管理主要提供了对任务的增删改查、呼叫和观看等功能。其中,增删改查属于对任务本身的操作, 同时还包括子任务的划分、分配等。呼叫主要对目前任务的执行者进行一对一的呼叫指挥。观看则是对目前任务执行者的执行过程进行实时的查看。任务管理界面,如图7所示。
实时通信主要包括一对一和一对多,其中一对一为指挥中心对执行人员进行呼叫指挥,一对多为执行人员将执行过程实时传回指挥中心。
4.3.1 一对多通信
外出执行人员携带外出执行记录仪前往执行地点,到达指定地点后使用执行记录仪,登录系统,选择相对应的任务来执行操作。系统会将执行过程的视频传回指挥中心。指挥中心可以选择相对应的任务对正在执行的过程进行实时查看,同时也可以查看已完成的子任务的相关信息。指挥中心接收的图像,如图8所示,执行记录仪的画面,如图9所示。
图8 指挥中心接收的图像 图9 执行记录仪画面
Fig. 8Image received by the command center Fig. 9Shows the recorder screen
4.3.2 一对一通信
指挥中心对执行者发起指挥呼叫请求,执行者接受请求,双方建立通信连接。指挥中心指挥截图,如图10所示。执行者接受指挥截图,如图11所示。
图10 指挥中心指挥截图
图11 执行者接受指挥截图
将执行过程以及指挥过程进行存储,存储在Kurento服务器上,通过访问Kurento服务器对视频进行回放。存储形式为Webm文件,名字定义规则为任务名-类型-节点ID。视频存储如图12所示。
图12 视频存储
本文基于WebRTC和Kurento实现了实时指挥系统,相对于目前已有的实时指挥系统,本系统仅需要设备支持浏览器、摄像头、上网功能即可使用,降低了使用成本,而且由于不需要第三方插件,维护成本也大大降低。在网络较差的环境下,系统会通过调节分辨率的方法,降低所需带宽,使得本系统在较恶劣的环境下也能完成作业。等到5G开始全面商业化之后,本系统不需要更改即可投入使用,由于5G的网络更加快捷,稳定,本系统所达到的效果会更好。