内容字号:默认大号超大号

段落设置:段首缩进取消段首缩进

字体设置:切换到微软雅黑切换到宋体






新型多媒体无线列调系统设计研究

时间:2017-11-07 来源:中国集群通信网 作者:姜欣欣 点击:

  摘  要:基于WiMAX的多媒体无线列调系统主要包括SIP模块、视频采集模块、视频编码模块、视频传输模块、视频解码模块和视频显示模块等部分。通过对各个模块的详细设计与实现使得该系统完成了视频通话的功能。在实际铁路的应用场景中,可在机车台、调度台、车站台等不同角色之间进行信息的传递,有助于监控铁路现场,为了解现场情况做出贡献。 
中国论文网 http://www.xzbu.com/2/view-6745174.htm
  关键词:WiMAX;RTP协议;H.264;视频传输 
   无线列调是以铁路运输调度为目的,利用无线电波的传播,完成列车与调度中心之间或列车与列车之间通信的系统。近年来,由于国家对重载铁路的运输量及运输效率的要求不断加强,导致列车数量明显增多,易于引起通信阻塞,因此迫切需要能够提供更多带宽的无线列调系统。WiMAX是一项新兴的宽带无线接入技术,它基于IEEE802.16,建立在IP技术之上。WiMAX技术的不断发展使得VolP技术应用于铁路无线列车调度系统成为可能,同时可实现基于VolP提供的语音通信和多媒体会话。在实际铁路现场中,需要在各角色之间进行视频通信来传递信息、联络业务,为此本文提出了基于WiMAX的多媒体无线列调系统。 
   首先深入研究了SIP协议的消息流程,通过SIP注册信令及呼叫信令实现底层视频单呼。然后根据MPEG.4与H.264之间的比较选取H.264作为本文的视频编码标准,通过引入目前在多媒体通信系统中广泛应用的实时传输协议RTP,设计并实现了基于RTP传输H.264视频流的视频传输方案并将该方案应用于多媒体无线列调系统中。系统在实现过程中引入了DirectShow技术,基于构件的思想,对视频编码、传输、解码及显示采用了纯软件的实现方法,而视频采集则应用了海康威视DS.4004HC视频采集卡来完成。 
  1  系统开发环境及相关技术 
   (一)硬件设备:海康威视DS.4004HC视频采集卡。 
   (二)软件平台:本系统在以下软件平台上进行开发:(1)列调服务器端操作系统:ubum;(2)调度台、机车台操作系统:Windows XP;(3)软件开发平台: VC++6.0;(4)SIP服务器:Asterisk开源软件包。 
   (三)JRTPLIB库 
   本文采用JRTPLIB库来实现RTP传输。RTP是目前解决流媒体实时传输问题的最好办法,JRTPLIB库是一个用C++语言实现的RTP协议的开源库。这个库使用socket通信机制实现网络通讯,因此可以运行在Windows、Linux、Solaris、FreeBSD、Unix、VxWorks等多种操作系统上。通过使用这套库文件,我们可以创建端到端的RTP连接,实现数据的实时传输。JRTPLIB是一个面向对象的RTP库,它完全遵循RFC 1889设计,可满足多种应用场景需求。 
   DirectShow由于采用COM标准所以通过COM接口来完成很多重要的功能,常用接口如下。 
   (1)IGraphBuilder接口:作用是构造过滤器图表,处理和过滤源媒体流,管理一系列的Filter。 
   (2)IBaseFilter接口:继承自IMediaFilter接口,作用是定义一个具体的过滤器指针,且处理多媒体数据。 
   (3)IMediaControl接口:对过滤器图表中的流进行控制,比如启动流或停止流。 
   (4)IPin接口:作用是管理两个过滤器之间的Pin,使之可以连接过滤器。 
   (5)IMediaEvent接口:通知应用程序在播放过程中捕获到的发生的事件。 
   (6)IMeadiaSeeking接口:作用是定位流媒体、查询媒体的接口并控制多媒体数据的播放。 
   (7)ISampleGrabberCB接口:作用是对通过过滤器的流媒体数据进行采样一次获得帧图像,是Sample Grabber过滤器的一个接口。 
   (四)海康威视DS.4004HC板卡介绍 
   海康威视DS-4004HC是面向数字监控行业推出的专用板卡,采用了高性能的视频压缩技术标准H.264,完全依靠硬件实现了视频的实时编码,实现了动态码率、可控帧率、帧模式选择、动态图像质量控制,音频预览、视频丢失报警、能独立调整各通道参数,性能稳定且可靠。与之前产品相比,海康威视DS.4004HC板卡不仅保持了同等的图像质量,还能很好地节省存储空间并适合网络传输,对于数字监控产品而言是一个很好的选择。海康威视DS.4004HC板卡给软件开发者提供动态连接库形式的SDK接口库。该SDK接口库应用方便,专为该板卡设计接口程序,因此能更易于开发、缩短开发时间。DS.4004HC板卡在编码的同时还可以修改码流、帧结构、分辨率等除了码流类型外的所有参数。比如压缩时无须启动、停止压缩就可以改变分辨率、量化系数、帧结构、帧率、码流等参数。播放器可以自动识别以上参数,按当前分辨率及压缩帧率来正常播放声音图像。通过动态修改量化系数(I、B、P)可控制压缩码率,当码率太高时,加大量化系数;当码率太低时,减少量化系数。当然,在量化系数满足的情况下,不必再降低量化系数。DS.4004HC板卡不压缩也是可以进行运动测试的,即压缩与运动监测是独立的。要想节省硬盘空间,则能够动态地改变帧率是非常有价值的,因为这样可以在运动时按高帧率录像,在无运动时按低帧率录像,再记录到同一个文件内。DS.4004HC板卡不仅支持4路实时编码压缩,也同样支持2路的4CIF实时编码压缩。应用程序可以从DS.4004HC板卡的4个编码通道中任选两个通道设置为4CIF分辨率,然后对设置好的两个通道进行录像,这样就可以作为2路的4CIF编码录像,同时,板卡剩下的两个通道可以作为视频预览显示图像也可以不予显示。 
  2  SIP模块实现    (1)SIP注册 
   SIP注册的程序实现主要使用libeXosip2.3.3.0库提供的三个函数。 
   (2)单呼 
   实现过程中先创建一个简单的SIP请求消息,该请求消息中有一些如from,to,cseq,call.id等消息头,若请求成功则创建SDP消息体并设置其内容,接下来发送INVITE请求至服务器端,服务器端向被呼叫方发送INVITE请求,被呼叫方收到请求后通过消息体的设置来解析消息体的内容,从而向服务器端做出应答,服务器端回应呼叫方,开始会话。 
   (3)挂断 
   会话终止的程序处理通过libeXosip2.3.3.0库提供的函数:eXosip_call_terminateO发送中断信息,完成挂断的功能实现。 
  3  视频采集模块实现 
   (1)创建应用程序 
   用VC++6.0工具创建一个基于MFC的基本对话框应用程序--视频采集,把SDK接口库提供的4个文件拷贝到应用程序所在目录下。在程序中引入相关文件,工程文件中加入引入的链接库文件,使得编译程序在链接时能够使用。接下来添加要实现应用所需要的控件,使图像最终可以在程序界面中显示。 
   (2)实现视频采集 
   首先初始化板卡并获取视频设备信息,然后设置视频预览模式并获取通道信息,接下来利用介绍的相关函数对相关参数进行设置,注册读取原始图像数据流的回调函数,启动视频图像预览,调用函数获取原始图像数据并保存至内存,最后若终止视频采集则关闭视频设备结束采集任务,若不终止则继续采集。 
  4  视频编码模块实现 
   (一)编码方案的选择 
   视频编码的实现有硬编码和软编码之分,所谓硬编码,就是将编码算法固化在芯片的硬件电路中,本文采集视频所采用的海康威视DS.4004HC视频采集卡就可以实现H.264标准的编码。硬编码虽然使用方便、效率高,但其具有以下不足: 
   (1)扩展性差。随着H.264编码算法的进一步发展,必将会有更高效的算法出现,当进一步改进编码算法时,由于算法已经被固化到视频采集卡中,就无法方便地对其进行升级或修改。 
   (2)兼容性差。视频采集卡的生产商一般都会对芯片固化的算法进行改进和优化,这使得硬编码得到的格式必须与相应的解码器对应,所以在解码端,就只能使用固定的解码器,因此将导致兼容问题。因此,根据以上分析本文主要通过软件来实现其编解码,虽然速度上较硬编码而言较慢,但编解码灵活度要优于硬件编解码,这样可以弥补硬件编解码上的一些不足,便于对算法本身进行研究和改进。 
   (二)视频编码流程 
   实现过程中先判断采集的视频格式是否为ⅥⅣ,若不是则进行格式转换。接下来对编码器的编码参数进行设置,打开编码器进行初始化,获取帧率、图像尺寸等信息,通过分配编码空间开始对输入的视频图像进行编码,编码过程中进行VCL层编码和NAL层编码,VCL可有效地表示视频内容,NAL对VCL层的视频内容进行格式化,并提供头信息以适合各种媒体的传输和存储。当编码完成后,调用x264 picture clean()函数来释放编码空间以及x264 encoder close()函数关闭编码器完成编码。 
  5  视频传输模块实现 
   (一)RTP发送/接收 
   经过H.264编码,视频流的网络传输由RTP的发送和接收两个模块负责处理。这两个模块分别封装为H.264 RTP Receiver Filter和H.264 RTP Sender Filter。系统采用RTCP/RTP协议传输H.264视频流。利用类库JRTPLIB实现该协议,系统视频传输模块的实现,重点是对数据的RTP封装和对接收到的PTCP/RTP数据的处理。 
   (二)Filter实现 
   (1)RTP发送过滤器的实现: 
   ①定义RTPSenderSession类,具有自动处理反馈消息的功能。OnNewSource(RTPSourceData木dat):得到确认则置m bReceiveOK为TRUE, 
   ②CRTPSender中的主要函数:用于检查接收端是否收到了参数集,若否则为FALSE。Run(REFERENCE_TIME tStart):该函数在连接过滤器之后,过滤器进行启动的时候执行,重载了CBaseRenderer类中的Run函数。该函数能够实现创建RTP会话,默认参数包括时戳增量、负载类型和标识等,并将接收端的地址加入到源列表中。 
   RTP发送过滤器还实现了IRTPSender自定义接口,包括两个接口函数:SetDestination(unsigned long,unsigned short):设置接收端的端口和IP地址。HeaderMethod(BOOL).选择参数集的传输方式。 
   (2)RTP接收过滤器的实现: 
   输出引脚类CRTPReceiverOutPin实现了将Sample数据"推"向下一级Filter的功能,CRTPReceiver的函数没有这项功能。除此之外,RTP接收过滤器还实现了自定义接口IRTPReceiver,接口函数包括用于设置发送源的IP地址的SetAddr(unsigned long)函数以及用于设置RTP的接收端口的SetPort(unsigned short)函数。 
  6  视频显示模块实现 
   (1)视频解码流程 
   利用DirectShow技术对视频解码进行实现,具体Filter实现过程在下一节中详细讨论。实现过程中先对解码器进行初始化然后打开解码器,分配解码空间后开始解码。解码过程中首先检查视频流的序列头,定位到图片头然后解码一帧图片,若解码未结束则与编码过程相逆先进行NAL层解码再进行VCL层解码。当解码完成后,调用相关函数回收解码空间及注销解码器来完成解码。 
   (2)视频显示流程 
   首先进行初始化,建立过滤器图表后创建过滤器图表管理器,接下来渲染多媒体文件并构建滤波器链表,设置图像显示窗口加入一些需要的功能控件。然后将图像加载入显示窗口进行显示,在媒体文件播放完毕时要进行判断,调入阻塞函数以防止视频还未播放完就结束,实现从头至尾顺序播放,播放多媒体文件结束后释放对象,销毁滤波器链表图并结束播放。 
  7  结束语 
   本文首先介绍了多媒体无线列调系统的开发环境及所用的相关技术。接下来分别从SIP模块、视频采集模块、视频编码模块、视频传输模块、视频解码模块及视频显示模块详细阐述了每个模块的具体实现过程,完成了多媒体无线列调系统的总体实现。 
  参考文献: 
  [1]陈婧.无线列调与铁路运输[J].内蒙古科技与经济,2009(22):74-77. 
  [2]李攀.移动Wimax在应急通信系统中的应用[D].武汉:武汉科技大学,2009. 
  [3]Ahmadi,S.An Overview of Next.Generation Mobile WiMAX Technology[J].IEEECommunication Magazine,2009,47:84-98. 
  [4]谢彬.VoIP信令协议H.323和SIP的比较[J].科技信息,2009(9). 
  [5]谢刚.WiMAX技术原理及应用[M].北京:北京邮电大学出版社,2010.


(中国集群通信网 | 责任编辑:李俊勇)

中国集群通信网,国内首家集群通信专业网站。

Copyright © PttCn.Net, All Rights Reserved.   

联系我们 联系我们 中国集群通信网 对讲机学堂 对讲机世界