基于信号量的视频监控API设计与实现

2015-12-07 06:58李贤军
新媒体研究 2015年14期
关键词:线程客户端服务器

李贤军

安徽四创电子股份有限公司,安徽合肥 230088

基于信号量的视频监控API设计与实现

李贤军

安徽四创电子股份有限公司,安徽合肥 230088

随着平安城市不断推进,视频监控成为国家建设的重点。在视频监控中,监控客户端为重要的组成部分,所有视频、录像都要通过客户端进行调阅查看,可见稳定高效的视频监控客户端的接口(API)设计是比较重要的。从目前来看,各视频厂家提供视频API各不相同,或多或少都存在着一些问题,使用不习惯;而且,由于国内专业技术封闭不公开,对于视频监控API的设计也没有太多相关关键的资料可循。本文以信号量技术为核心基础,提供了一套视频监控API设计方案,并予以实现,以促进视频监控客户端稳定性和高效性。

信号量;视频监控;API;多线程

在软件开发中,我们常用到计算机的各种技术,其中一种就是多线程(或进程)互斥与同步。对于不同的操作系统,线程的互斥与同步实现方式各不相同,对于windows和Linux系统都有如下方式:消息队列、信号量和共享内存,其中信号量是在控制多线程同步中使用比较多一种方式。信号量是一个整数:大于或等于0时代表可供并发进程使用的资源实体数;小于0时代表正在等待使用临界区的进程数;用于互斥的信号量初始值应大于0。在视频监控API开发中,我们经常需要同时操作、或者快速操作某一功能(如视频播放、视频控制、云台控制等),此时会在短时间内进行很多次操作,并且所有的操作都需要通过网络与服务器进行交互。将信号量结合到视频API设计实现中,利用信号量特点,控制多线程并发将操作指令按操作顺序发送出去,并异步等待接收操作结果。

1 视频监控API基本组成

通用的视频监控客户端API设计的基本逻辑组成,包括:对外接口、视频管理、视频设备管理服务器和视频服务器。对外接口,是直接面向用户使用的接口,如登陆、退出、实时视频播放与停止、云台控制、录像查阅与点播控制等;视频设备管理服务器,是负责所有设备管理和与客户端交互的服务端,处理一切客户的请求;视频服务器,为流媒体服务器,负责监控摄像头的视频流转发,以供客户端点播;视频管理模块,为视频监控API设计中最为核心部分,负责对外接口、视频设备管理服务器以及视频服务器之间的一切逻辑管理,包括有多线程控制、网络通信、服务连接管理、视频连接管理、事务管理等。

对外接口和视频管理模块为本文视频监控API主要部分,尤其对于视频管理部分设计是非常重要的,该部分设计的优良,关乎整个视频监控API稳定性与高效性。以下内容着重结合使用信号量技术,来设计实现视频管理模块。

2 信号量在API中的应用

图1

信号量为视频管理模块设计中重要应用部分,是同步各个线程的关键。如图1所示,在视频监控API设计中,将所有客户端每一个请求的指令转为标准的事务,再结合信号量的变量,在这里我们将结合信号量的事务为一个任务。在请求时,生成的任何一个任务都有一个唯一的递增的编号ID,同时也是一个操作序列号,表示操作的先后顺序,请求通常在一个线程中,在通过网络向服务器发送信息之前,初始化信号量为无信号状态,此时调用任务发送信息并同时置信号量为定时等待状态。在等待服务器返回过程中,利用信号量特点,控制线程间安全,可以同时并发多个请求,此时各个接口的调

用是线程安全的,客户端可以同时调用当前接口或其他接口,以快速完成其他指令的调用,避免了客户端由于网络原因,或服务器处理慢等原因出现时间上累积等待响应问题,最终导致客户端崩溃。

在客户端发出信息以后,为避免由于各种异常请求无法返回原因,信号量统一采用的是定时等待,在固定的时间内如果服务器对于请求依然没有反馈,信号量会自动产生信号,让等待以超时的形式触发,终止客户端的等待状态,相应的任务也会终止移除;如果,服务器对于客户的请求在指定的时间内返回,此时在返回的线程中,会根据返回信息的编号ID找到对应的任务,赋予反馈信息,并触发等待线程的信号量,让请求返回,终止并移除 任务。

3 详细设计与实现

在视频监控API设计中,为了完善整个API的设计,一般还需要:认证授权、视频协议、视频播放连接管理、加解密、网络通信、以及多线程和日志记录等模块相互协作。

为视频监控API 各个模块相互关系图,在图中虚线部分为信号量的应用组成,连接着所有模块,为关键的枢纽,负责完成了指令传送与接收、保持服务连接、和重建视频连接等重要功能。

4 结束语

本文提供了一种基于信号量的视频监控客户端API设计实现的解决方案,详细讲述了信号量在API中应用的方法,并设计了整个API逻辑框架,实现了视频监控客户端API多线程多并发的稳定 调用。

[1]王杨,朱朝霞.基于信号量的Linux多线程同步研究[J].计算机与数字工程,2004.

[2]刘晓平,等.基于信号量的生产者一消费者问题设计与分析[J].合肥工业大学学报,2008(10).

[3]百度文库.http://wenku.baidu.com.

G2

A

2096-0360(2015)14-0023-01

李贤军,工作单位为安徽四创电子股份有限公司。

猜你喜欢
线程客户端服务器
基于C#线程实验探究
基于国产化环境的线程池模型研究与实现
通信控制服务器(CCS)维护终端的设计与实现
线程池调度对服务器性能影响的研究*
如何看待传统媒体新闻客户端的“断舍离”?
PowerTCP Server Tool
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
得形忘意的服务器标准