首页 > 范文大全 > 正文

数字监控系统中流媒体播放器的实现

开篇:润墨网以专业的文秘视角,为您筛选了一篇数字监控系统中流媒体播放器的实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:随着计算机网络与通信技术、多媒体技术的快速发展,数字化、网络化、智能化正成为数字监控系统的重要研究内容。基于流媒体技术的流媒体播放器,顺应了数字视频监控系统的技术要求,能够保证在有效的网络环境中流畅播放清晰的音视频流,可以较好地解决多用户网络带宽资源操作的受限性及时间延迟问题,提高系统的监控时效和监控质量,使监控系统的功能更加完善,具有很好的市场前景。

关键词:数字监控 流媒体 播放器

中图分类号:TN919.82 文献标识码:A 文章编号:1007-9416(2013)04-0012-03

数字监控系统需要实现海量音视频数据的传输和存储、播放,满足用户以最简便、最逼真、最安全的方式进行实时监控与管理。而流媒体技术作为一种新的网络多媒体技术,在图像实时性、平滑流畅传输及存储容量等方面有很好表现。

1 流媒体播放器的系统分析

数字监控系统由数据采集端、服务器端、客户端和一些附属设备构成。

其中服务器端对前端采集到的视音频资源进行流压缩编码、发送、处理;在实时监控的同时它还将视频数据流传送给网络上的客户端;远程客户端可以连接任何具有外部IP的视频监控服务端,利用流媒体播放器可实时网络监控,检索网络回放流媒体数据。

流媒体播放器系统在收取网络上的大量音视频数据,将数据解码同时也进行回放与显示。流媒体播放器系统功能模块主要包括数据采集模块、网络模块、解码播放模块、操作控制模块。这些模块根据数据的流向,有一定的层次结构,居于最底层的是采集模块、网络模块,然后依次是解码播放模块、操作控制模块。

流媒体播放器系统结构如图1所示。

网络实体是收集从监控流媒体服务端传来的各种数据和指令包。解码实体是把网络实体收到后组合好的帧数据进行分析、解码处理。播放实体是将从解码实体传过来的数据进行显示输出。

1.1 流媒体播放器系统的特点要求

本文采用了H.264压缩编解码方式,这就对播放器提出了一些特殊的要求。(1)实时性,从网络上传输与接收H.264音视频压缩编码格式的数据帧,播放之前需进行解码播放。做这些处理的时间不能太长,否则会造成播放时延影响实时性。(2)播放器支持流媒体的边下载边播放,应尽可能保证最佳的数据流传输和视频图像播放质量。画面清晰流畅,(3)需提供远程的用户可以多人次同时访问流媒体服务器,检索并同时点播或回放同一音视频媒体,可以进行播放时的屏幕功能控制。

2 流媒体播放器系统的实现

为了避免多用户同时访问远程目标的网络拥堵问题,本系统设计在各区域中心的网络监控服务器端配置流媒体服务器,统一管理用户对系统视频的访问。流媒体服务器启动后的工作主要是对流媒体文件进行管理并监听客户端请求并及时响应,发送媒体流数据给网络上的客户端。同时远程客户端播放器经过身份验证,可以查询点播流媒体服务器上的视频资源,接收流数据、解码并显示观看。在流式传输的实现方案中,采用RTSP/TCP协议来传输控制信息,而用RTP协议来传输实时流媒体数据。

基本工作过程是用户选择某一流媒体服务后,与服务器之间交换控制信息,客户端启动客户端播放器程序,使用从服务器检索到的相关参数对播放器进行初始化,这些参数可能包括音/视频数据的编码类型或与音/视频检索相关的服务器地址等。播放器客户端及服务器端通过实时流协议,以交换音/视频传输所需的控制信息,然后服务器通过RTP协议将音/视频数据传输给客户端的播放器。

2.1 流媒体服务端的实现流程

服务器端有以下主要的类:

CMain:主动类,主要完成系统参数设置及初始化;多视频画面窗口的创建管理;用户登陆权限管理;各种报警联动设置,实现手动或自动录像、云台控制管理等功能。

CNetServer:网络流媒体服务类,主要设置流媒体服务器端的各项数据参数,包括服务器端的IP地址、端口号及缓冲区大小等;服务器端数据的获取与保存;制定点播录像文件列表;客户端的连接控制;流文件传输等网络管理功能。

CVideoViewS:视音频类,主要实现视音频预览初始化,以及视音频参数、镜头参数、录像参数的设置,实时播放及网络回放,视频剪辑录象等功能。

(如图2)

主要过程是首先程序开始的时候要调用WinSock DLL库,创建套接字WSASartup()/socket(),并设定监听端口,然后调用ServerStartup()初始化服务端,并准备接受连接请求,同时可以调用ServerAddFile()向播放列表中添加要播放的文件同时也可以调用ServerRemoveFile()或ServerRemoveAllFiles()从播放列表中删除。接着客户进程用同样的方法创建客户端套接字WSASartup()/Socket(),向服务器端发出连接请求,建立一个端到端的连接,服务器根据连接请求向客户机发送数据流及其相关的控制信息。

客户机得到正确的控制信息是其正确地进行视频解码、回放的前提条件。这里,服务器采用了一种可靠性较高的面向连接的传输协议TCP来传输控制信号,建立信令通道。TCP协议通过采用提供确认、超时重发、滑动窗口机制等措施来保证传输的可靠性。

服务端由NetProc()处理客户端请求,并向客户端返回接收信号,一旦客户套接字收到来自服务器的接收信号,则建立连接传输数据,程序结束的时候还需要调用ServerCleanup()以此来释放程序的资源,以关闭套接字WSACleanup()/Closesocket()。图3是流媒体服务器端的程序流程图。

2.2 流媒体客户端的实现流程

客户端有以下主要的类:

CplayDlg:框架构建,引入Socket实现网络通信,设置需要访问流媒体服务器的IP地址、端口号,添加识别流媒体服务器,所添加的服务器保存在服务器链表svr_list中,获得播放列表;单/多画面播放视频的模式选择,实现播放等各功能。

CcutFile:主要实现检索服务端的列表文件,用户可以通过指定路径来选择所要播放的文件,对当前播放的视频可按时间和帧两种方式进行剪辑操作,即时抓取并存储当前播放的视频片断及静态的画面等功能。CVideoView:主要用于播放窗口的建立和管理,实现实时播放和网络回放,具有播放、快进、单帧播放、暂停等功能。

图4是客户端的主要类结构图。

客户端程序启动的时候调用WinSock DLL库,创建套接字WSASartup()/socket(),根据服务器的端口号和IP地址,向服务器发出连接请求,连接成功后,根据服务器传输过来的编码器信息设置客户端视频接收缓冲区的大小,等待接受视频帧格式信息,当客户端成功接受到视频帧格式信息,并对视频解码器进行正确的初始化之后,就可以建立套接字接收来自组播组的视频数据。

当接收到完整的视频数据后,就可以根据控制信息,调用相应的视频解码器将接收到的视频数据解压缩,顺序存入视频播放缓冲区;然后根据已接收到的视频帧格式信息按照正确的视频帧格式回放视频。重复上述过程,直到系统停止图像接收过程。

开始时可调用ClientStartup()初始化客户端会话信息,调用ClientGetFileList获得流媒体文件播放列表,用ClientSelectFile()点播要播放的文件,如果要中断播放或是播放完毕,则要调用ClientT eardown以释放资源,使用ClientFreeFileList()释放播放列表。

结束的时候要调用ClientCleanup释放客户端资源,关闭加载的套接字WSACleanup()/Closesocket(),程序退出。如图5是客户端的软件主体流程图。

3 流媒体播放器系统的优化

3.1 视音频数据的协议处理

发送端的视频编码器输出的H.264数据流要进行相应的成帧算法,形成适合于RTP协议格式的视频流封装,递交给RTP协议处理,经多目地址传输来完成。

在接收端,当实时视频数据到达后,RTP根据其会话标识和序列号进行鉴别,将有效的数据包传递给相应的解码缓冲区,实现视频流内部的同步。利用QoS反馈控制分析接收数据包的时延、丢包率等信息,并由此判断网络拥塞状况,RTCP根据这些信息周期性的向发送端返回RTCP控制包,以检验接收数据的正确性,并使发送端可以对输出速率做出自适应控制。

在数字监控系统中,远程客户端的可用带宽是不断变化的,需要服务器端的视频流有带宽自适应功能,H.264标准中的SP(Switching P Slice)/SI(Switching I Slice)帧技术正是迎合了这种要求。利用这一特性,服务器端可以实现码流的随机切换,增加码流的带宽自适应性。H.264算法具有很高的编码效率,其码流结构对网络的适应性更强,增加了差错恢复能力,能够很好地适应IP网络的应用,对信息的封装和对信息可以进行更好的优先控制。

3.2 缓存去抖动技术

视频数据流在IP网上传输时,就会出现先发出的数据包由于路径选择的不同可能会延迟到达,而出现视频流的等待和抖动,缓存技术就是在开始连接视频流时先在客户接受端暂存一定量的数据,播放时就读取缓存中的视频流数据。缓冲同时还要对延迟最大等待时间、接收缓冲队列最大长度、播放队列最大长度、帧丢失率下限阂值和上限阈值等QoS参数进行设置与调节。缓存技术能很好地抑制视频流的抖动但同时也在播放开始有了等待的时间。要根据网络的具体情况设置服务器和客户端的缓冲区大小。

3.3 多线程技术

在数据包接收、解码、回放采用了多线程技术。以实现取流、封装到重建图像的过程。

网络接收、解码、显示分别放在不同的线程里面独立运行,数据从网络线程出来进入解码线程,再转到显示线程。在某个线程工作的同时不阻碍其他线程的正常工作,可以大幅度提高CPU的并行效率和视频图像传输的效率。

(1)流媒体服务器端。服务器端将几个需要并发处理的功能分为几个线程,其中包括一个主线程、用户在线检测线程、多个视频数据传输线程和各种用户服务线程。各线程协调工作,完成服务器功能。主线程是一个消息处理线程,服务器应用程序启动后就启动主线程,它用于处理界面的操作任务,如窗口控制,配置查询等。用户在线检测线程由主线程启动,用来监听客户请求,同时检测有多少个用户和视频服务器连接上了。用户服务线程根据收到的客户端消息,判断请求类型,执行相应的操作为客户端提供服务,服务提供完毕之后,服务线程关闭套接字,断开和客户端的连接,然后关闭自身线程,就完成了一次完整的流程。视频数据传输线程用来向客户端发送视频数据,支持单播也支持组播。

(2)客户端。为了支持多路数据并发处理,客户端软件模块同样也设计了主线程和几个工作线程,其中主要包括一个数据接收线程和多个视频流解码播放线程。客户端程序运行之后主线程即启动,随后根据用户操作调用其他线程。在客户端向视频服务器发送播放某个通道的实时视频画面的请求得到服务器端的许可后,数据接收线程接收来自视频服务器端的RTP包,将拆包分析后取出的视频数据流放置一个视频数据缓冲区,然后视频解码播放线程则从这个缓冲区中读取视频数据,解码显示。

3.4 共享内存

大量数据在不同的线程间流动,要不断地做内存拷贝,而内存的拷贝也会消耗系统资源,导致播放器性能下降,因此要减少内存拷贝次数,为此采用共享内存的方法。网络模块的输出和解码模块的输入共享一块内存,解码模块的输出和显示模块的输入共享一块内存,这样当数据在模块之间流动的时候就可以不用耗费额外的资源了。

4 结语

本文设计并实现了一种基于H.264标准的流媒体播放器,尽可能克服了由于网络原因造成的时延抖动和中断问题,保证了系统运行的稳定性和可靠性。播放器系统及时传输并处理网络流媒体数据,解码和播放的画面清晰流畅。用户远程控制及播放控制、编辑等功能完备,很好的满足了数字监控系统的需求,在工程应用中具有积极的实际价值。

参考文献

[1]徐立中,马晓平.多媒体监控系统技术与系统.国防工业出版社,2004.

[2]吕雪.基于网络的视频监控系统研究.国外建材科技.计算机与数字工程,2006(2).

[3]孙冬柏.流媒体技术及其应用.信息技术,2005(11).

[4]杨波,朱晓民.下一代网络中的流媒体技术与业务.电信工程技术与标准化,2006(5).

[5]刘舒,沈军辉.流媒体技术及其在视频监控系统中的应用.中国人民公安大学学报,2007(1).