APP下载

流媒体中间件在Linux下的设计与实现

2014-11-20高誉菊

电视技术 2014年5期
关键词:中间件摄像头客户端

吕 鹍,高誉菊,张 刚

(太原理工大学信息工程学院,太原山西030024)

中间件[1]是一种独立的系统软件或服务程序,一般作用于服务端与客户端之间,起到信息管理、传递等作用。而针对多媒体流的流媒体中间件可以极大地降低多媒体网络通信的复杂性,很好地管理和规范数据流在系统网络中的传输。但是当今市面上针对视频流媒体的中间件却很难见到,大多数视频监控系统都是采取编码服务器与客户端直接进行点对点连接的网络通信模式,作为一种大数据流媒体,对于视频流数据在网络中进行管理、调度、传输都有很高的要求,传统的视频通信原理已经渐渐无法满足这些需求。所以必须引入流媒体中间件技术来进行管理。为此本设计在编码服务器与客户端之间加入视频流媒体中间件来作为一个第三方软件控制、集中管理、调配解码客户端对视频数据的要求,实现多点对多点的通信模式,并且可以减少数据通道,最大化地利用网络资源。

1 技术比较

“点—点”数据传输[2]:这种传输模式是直接对话,客户端直接向编码服务端呼叫,建立连接,然后编码服务端向客户端传输数据。在“一路对一路”的数据传输应用中因其实现较为简单、方便,所以使用较为广泛,但随着市场及客户的需求,“多路对多路”的视频数据传输模式在实际应用中显得越来越迫切,如果继续基于“点—点”数据传输模式来实现“多路对多路”的传输模式(如图1所示),有N路客户端要与M路编码端建立连接通信,那么就需要N×M路通道来实现,如果M与N很大,则N×M更大,这样网络传输是很占用网络资源并且相当复杂,很容易产生网络拥塞现象,几乎不可能实现。

图1 “点—点”数据传输模式

流媒体中间件[3]:流媒体中间件在两个独立应用层之间起到管理、调度、交换信息、信息传递等作用。本设计中,流媒体中间件用来处理视频监控系统中视频流数据在网络上的传递和管理,如图2所示,N路客户端与M路编码端连接通信,只需M+N路通道来实现,占用网络资源较少,而且规范了网络传输的标准,克服了网络拥塞现象,使系统由原始的编码端与客户端之间的“点—点”数据传输升级到了“点—块—点”传输,而且避免了客户端与编码端的直接对话,在数据通路数量比较大的时候,可以很大限度地减轻编码端的资源占用,优势更加明显。

图2 “点—块—点”数据传输模式

2 设计方案

2.1 流媒体中间件工作原理

本设计中间件在Linux平台中用QT4[4]设计实现,以SIP协议[5]作为控制协议来建立会话,利用RTP协议来传输视频码流。

视频流中间件的工作过程与数据的传输过程是相反的,如图3所示,中间件在网络上进行SIP注册以后,首先等待客户端对中间件进行呼叫,呼叫信息中包含了客户端用户名、用户权限等级、用户IP地址、申请的通道端口、想要呼叫哪路摄像头的视频信息等。中间件将这些信息进行鉴别以后,根据客户端不同用户的权限,向相应的编码摄像头发送呼叫,通过这些呼叫与对应的编码端建立SIP会话通道,然后通过RTP协议建立RTP数据传输通道,接收压缩编码的数据,中间件首先将这些数据存入一定大小的缓冲区,再给与对中间件发起呼叫的客户端回应,并且与其建立会话通道,将刚收到的缓冲区内数据传送给客户端进行处理。

图3 流媒体中间件工作原理图

2.2 实现方案

本设计的流媒体中间件是专门针对于连接编码端与客户端之间视频流数据的中间件。作为视频监控系统的一部分,中间件启动后首先要在主线程中完成网上代理注册,即向SIP注册服务器登记自己的代理用户名、IP地址、端口信息等。注册完成后,可以从注册服务器查看到中间件的一些信息,如图4所示。

当客户端想要获取某路视频信息的时候,向中间件发送呼叫请求,中间件接收到呼叫请求后,会对请求所携带的信息进行鉴别,这时候分两种情况来做出处理。

第一种情况:若客户端请求的这一路摄像头编码视频信息之前没有被其他的客户端申请呼叫过,则中间件会先对这一路编码摄像头发出新的呼叫。当中间件对编码摄像头的呼叫被编码端响应后,视频流数据会沿着中间件与编码摄像头的会话通道传送给中间件。中间件得到数据后,再给之前呼叫的客户端发送响应信息,从而再与客户端建立会话通路,最后将视频数据传送给客户端。

第二种情况:客户端请求视频信息的编码摄像头之前已经被其他客户端呼叫过,也就是说已经出现过第一种情况。这时中间件已经开始从相应的这一路摄像头编码端接收这一路编码后的视频数据。中间件就不再向那一路编码端发送请求,而是开辟一条新的线程,然后直接响应呼叫的客户端,在新的线程中将数据传输过去。

中间件处理客户端的视频数据请求呼叫的流程如图5所示。在整体的工作流程实现之后,对中间件进行了界面的设计,管理者可以直接通过界面进行操作实现相关功能。界面可以直接体现出当时系统中访问的客户端的数量、IP地址、客户端用户名等,管理者也可以直接对其进行操作,例如断开某一客户的链接等。客户端的信息通过中间件与客户端的“交流”使中间件获得,并且通过程序直接体现在界面中。

图5 中间件处理客户端呼叫流程

2.3 界面设计

中间件的实现从最顶层、面向用户的界面开始。在QT[6]中建立一个新的QT Gui应用工程,这个工程里包含了4种不同的类别,分别是头文件、源文件、界面文件、资源文件。其中头文件和源文件用来存放要实现功能的具体程序,界面文件可以直接让用户通过对控件的选择来完成对界面的基本设计,然后通过对控件完成信号槽的链接,通过对控件的触发运行某些程序。资源文件是存放一些对界面进行美化的图、Logo等。

如图6所示,本文设计的中间件界面有2个按钮可供用户进行点击。这2个按钮分别是注册和退出,起到的功能也是注册功能和退出功能。当程序运行时,单击界面的这2个按钮,则会直接运行这2个函数中的程序,完成注册和退出的功能。这就是QT中的信号槽体制,也就是通过对界面控件的触发而运行相应的程序。图6中其他控件不可以通过用户点击直接运行,则需要信号槽的另一种用法来进行管理。例如“摄像头连接状态”这一控件要实现的功能是可以直接体现当前这一路摄像头是否有数据传到中间件,当有数据的时候,显示为成功,可是这里无法点击,要完成显示状态的改变,本文设计了利用定时器来进行定时刷新的方法。

图6 管理4路摄像头的中间件界面(截图)

定时器的设计有许多种,包括利用系统自带库,C语言库等。本文选用QT自带的定时器,运用这种定时器要在serve2send.cpp中包含头文件QTime.h。QTime的具体用法是:

程序的含义是指每隔指定的时间运行一次连接的函数。本文将间隔时间设定为1 s。通过定时器,每1 s运行一次status()函数。status()函数的功能是得到客户端的IP地址,呼叫本路摄像头视频信息的客户端数,以及中间件是否与摄像头编码端有数据传递。然后将这些信息在中间件的界面中显示出来。通过每秒监测,可以不停地刷新中间件当前的状态,并且显示给管理员进行管理操作。

2.4 数据转发机制

在之前的原理分析和设计方案中已经确定了中间件的数据转发机制的实现方案:当某一路摄像头编码视频信息在中间件中第一次被某客户端呼叫的时候,中间件才会向该摄像头进行呼叫请求来获取这一路编码后的视频信息,然后再传递给客户端。具体的实现方法是利用SIP协议来进行信令控制,然后利用RTP协议进行传输数据。

3 测试

流媒体中间件是介于编码服务器和多画面[7]客户端之间工作的,因此中间件的测试需要加入到整个视频系统中,测试采用4路摄像头进行实时采集,然后在4个达芬奇平台进行D1分辨力的实时编码,与流媒体中间建立连接,多画面客户端分别呼叫该4路进行视频数据请求。最后结果流媒体中间件工作界面如图7所示,表明4路通道均通过流媒体中间件与编码端连接成功;多画面客户端同步实时显示4路摄像头采集画面(如图8所示),视频画面质量和实时性较好。

图7 流媒体中间件工作界面(截图)

图8 多画面客户端实时显示(截图)

4 结论

本设计完全实现了流媒体中间件在视频系统中的集中管理、数据调度、数据传输和转发等功能,使系统由原始的编码服务器端与客户端之间的“点—点”数据传输升级到了“点—块—点”传输,有效地降低了复杂视频通信对网络带宽的需求,很大限度地减轻服务器的资源占用,优势明显,真正满足了用户在任何地点、任何时间随意观看多路网络视频信息的需求,为网络视频通信的发展起到了一定推动作用,实用价值很高。

[1]谷和启.中间件主流技术及其未来发展精解[EB/OL].[2013-06-02].http://articles.e-works.net.cn/soa/article28721.htm.

[2]温仁凤,冯俊杰,陈金坤.点对点通信软件设计[J].智能计算机与应用,2013(1):13-16.

[3]肖丹,祝家钰.基于CORBA的自适应流媒体中间件系统的设计与实现[J].计算机与信息技术,2007(8):8-10.

[4]刘艳青,苏桂莲.基于Qt4的图形用户界面程序的设计与实现[J].现代计算机,2009,3(3):170-172.

[5]万晓榆,张溢华,樊自甫.基于SIP的视频会议系统视频模块的设计与实现[J].电视技术,2009,33(8):99-102.

[6]于邦伟,邓华秋.基于Qt/Embedded的嵌入式数字监控系统控制界面的实现[J].电视技术,2011,35(24):25-28.

[7]胡健生,张倩,蔡艳军.基于ARM11+FPGA的多路视频监控系统关键技术研究[J].电视技术,2011,35(21):120-123.

猜你喜欢

中间件摄像头客户端
浙江首试公路非现场执法新型摄像头
摄像头连接器可提供360°视角图像
如何看待传统媒体新闻客户端的“断舍离”?
RFID中间件技术及其应用研究
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
基于Android 平台的OSGi 架构中间件的研究与应用
奔驰360°摄像头系统介绍
中间件在高速公路领域的应用