当前位置: 主页 > 论文库 > 计算机 > 计算机理论 >

多路视频数据实时采集的软件实现

时间:2009-07-21 10:36 来源:www.lunwen163.com 作者:163论文网 点击:
【摘要】介绍了视频数据的采集、多路视频数据间的切换、视频数据的保存及基于C/S结构的实时视频数据传输与显示,在对四路飞行视频数据进行实时采集的运行时,各项需求已达到要求

多路视频数据实时采集的软件实现

常永亮 (飞行试验研究院测试所 陕西西安 710089)

【摘要】介绍了视频数据的采集、多路视频数据间的切换、视频数据的保存及基于C/S结构的实时视频数据传输与显示,在对四路飞行视频数据进行实时采集的运行时,各项需求已达到要求。
【关键词】视频数据、Divx编码、RTP/RTCP协议、TCP/UDP协议、媒体流、帧

1  引言
随着信息技术的不断发展,人们将计算机技术引入视频采集、视频处理领域,用计算机处理视频信息和用数字传输视频数据在很多领域已有广泛的应用,在我们的飞机试飞中也被大量的应用。
视频图像采集的方法较多,基本可分为2大类:数字信号采集和模拟信号采集。前者采用图像采集芯片组完成图像的采集、帧存储器地址生成以及图像数据的刷新;除了要对采集模式进行设定外,主处理器不参与采集过程,我们只要在相应的帧存储器地址取出采集到的视频数据即可得到相应的视频数据,这种方法,无论在功能、性能、可靠性、速度等各方面都得到了显著的提高,但成本高。后者采用通用视频A/D转换器实现图像的采集,其特点是数据采集占用CPU的时间,对处理器的速度要求高,成本低、易于实现,能够满足某些图像采集系统的需要。
此系统要求每秒采最大25帧(设为可调),客户端实时显示最大25帧(设为可调),保存为MPEG4格式,画面要求为最大分辩率为1024X768。
多路视频实时采集使用的是VisionRGB- PRO卡(英国Datapath公司),此卡可同时实时采集两路视频数据,基本达到了本系统的要求,再用一台VGA矩阵切换器将前端数据源的四路视频数据进行人为切换采集。
2  硬件环境的构建(硬件框架)

图一 系统硬件框架图
上图为整个采集系统的硬件框架。
此采集系统主要实现对前端四路视频数据的人为切换式实时采集,在服务器端可同时采集和储存两路视频数据(在此只用一个视频采集卡),也可以一次只采集一路视频数据,再经网络实时传输到客户端显示,服务器端也实时显示所采集的视频。
在进行视频切换方面可在服务器端或客户端自行切换,在服务器端可通过串行口操作VGA矩阵切换进行相应的视频输入输出口的切换,在客户端可通过网络-服务器程序相应模块-串行口-VGA矩阵切换进行相应的视频输入输出口的切换。
3  软件实现概述
3.1 服务器端的实现

图二 服务器端程序流程图

上图为服务器端实时采集视频的程序流程图。视频数据量较大 ,这就要求视频数据处理系统具有实时采集,大容量存储和实时处理的特点。在服务器端的实现是整个系统的关键,在此也承担了大量的工作,因此对软件和硬件方面要求也很高就成为必然。
软件要实现对视频数据的实时采集(最多两路)、控制视频接口、把视频数据实时编码保存并发送到多个客户端。以上就是要在服务器上实现的主要功能。
在采集方面最主要的是要有实时性,在此以事件驱动的方法从端口获取数据,采集到视频数据流在桌面显示的同时再编码保存,视频采集的数据要经软件的相应模块将其设为位图型式的视频帧,以利于在服务器端的显示和编码保存,在此采用Divx编码,Divx编码后形成以帧为格式的MPEG4流。Divx解码也是以帧的格式解压,因此有利于向客户端发送数据时以帧为单位发送视频数据流。
此处用到Divx编码就不得不把Divx编码作简要的介绍。
DivX由 DivXNetworks公司开发的,即为我们通常所说的DVDrip格式,它采用了MPEG4的压缩算法同时又综合了MPEG-4与MP3各方面的技术,也就是使用DivX压缩技术对DVD盘片的视频图像进行高质量压缩,同时用MP3或AC3对音频进行压缩,然后再将视频与音频合成并加上相应的外挂字幕文件而形成的视频格式。其画质直逼DVD并且体积只有DVD的数分之一。这种编码对机器的要求也不高,所以DivX视频编码技术可以说是一种对DVD造成威胁最大的新生视频压缩格式, 实际上Divx=(视频)MPEG4+(音频)MP3。
媒体流分为四个流:视频流、音频流、文本流、MIDI流,用视频卡采集的是两路视频流,保存时每路视频流多加了一个文本流,文本流主要应客户要求加入的服务器时间和一些人为输入的文本信息,在记录两个媒体流时一般有两种记录方法,在此采用的是将视频流和文本流记到一个文件中的方式,这样有利于文件以后的保存和查阅。
在采集软件实现方面主要应用了相应的SDK(Software development kit)和API(应用编程接口),还可用VFW(Video for Windows)。但后一种方法实现简单单路视频采集卡可以,对于多路视频的采集用第一种方法更加灵活,但实现比第二种复杂的多。在服务器实现软件方面主要有以下几大块:一是采集;二是保存;三是向客户端发送;四是串口的通行;五图像的形成;六是桌面显示;七是对图像亮度、颜色、位置等的调整;采集通道、采样率、采集时间的选择;等等。
在服务器端各方面协调工作是关键,程序启动首先默认上次设定的视频采集卡通道,如有视频数据就显示、保存,如果没有视频数据就等待,如果要调整视频采集卡通道可用串口给VGA矩阵切换器发送相应的命令让VGA矩阵切换器进行相应的输入输出通道切换。也可经客户端经网络到服务器串口到VGA矩阵切换器进行VGA矩阵切换器相应的输入输出通道切换(在后面介绍客户端时再介绍)。每次切换后将自动保存原视频文件,如切换后有视频数据将自动重新生成一个新的视频文件。
在服务器桌面显示的画面是没经任何编码处理的,但网络传输和保存的视频数据是经Divx编码的,这样有力的减轻了网络间传输和服务器的负担。
用局域网实时传输视频数据已在一些领域大量的应用,局域网以有线局域网居多,因为有线局域网技术成熟、传输速度快,但是长时间传输大量视频数据时也会引起传输速率不稳定,引起数据堵塞,会导致视频传输的质量大幅度下降,容易引起画面的重影、抖动、花屏、延迟等现象。
为了在局域网上有效的、高质量的实时传输媒体流,需要多种技术的支持,包括网络传输层协议的选择、编(解)码技术,网络传输层质量控制技术等等。
实时传输协议RTP是针对Internet上多媒体数据流的一个传输协议,实时传输控制协议RTCP负责管理传输质量在当前应用进程之间交换控制信息,RTP/RTCP协议只适合服务器端和客户端相对动态的实时多媒体数据流传输。但是,对于图像采集速度固定的实时视频采集,有时会引起采集的数据来不及压缩而直接丢弃而达不到实时的要求,所以没有采用RTP/RTCP协议,而是从发送端出发,实时判断网络状况,采用暂停发送的控制策略进行实时传输。
网络传输层质量控制技术采用的是TCP/UDP协议,UDP是一种不可靠的、无连接的协议, UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。它不提供检错和纠错功能,一旦网络出现堵塞时,大量的数据报文会丢失。对于Divx编解码技术,是以帧为单位进行编解码的,分为关键帧和非关键帧。在传输过程中,由于压缩率比较高,只要一帧中错一比特位,将影响其后的更多的比特位,直接造成图像的模糊、花屏等现象。只有等到下一次关键帧的到来才有可能恢复图像的清晰。为了保证传输的正确性,自己需要在应用层制定协议。如此一来,只能选择使用TCP来进行网络通信,TCP的目的是提供可靠的数据传输,并在相互进行通信的设备或服务之间保持一个虚拟连接。TCP在数据包接收无序、丢失或在交付期间被破坏时,负责数据恢复。它通过为其发送的每个数据包提供一个序号来完成此恢复。再辅助以暂停发送的控制策略,较好的解决局域网中实时视频传输容易引起的重影、抖动、花屏的问题。
为了达到视频传输的实时性,总的思想是最少的发送冗余信息,最大程度上发送最新的视频。
在服务器端视频采集采用从VisionRGB视频采集卡捕获视频图像,得到的是位图型式的视频帧,然后用Divx编码进行压缩,通过Winsock实现压缩后的视频数据在局域网中的实时传输,在客户端接收完的数据交给Divx解码器解压,最后实现视频显示。如图三所示:

图三 网络间传输流程图

如果局域网通信速率很高且状态稳定,则进行实时视频传输就可以达到非常好的效果。但是在网络出现异常时会导致数据传输率不稳定或明显下降,造成发送端数据积压。此时就要采取一定的策略来控制发送端(服务器端),以达到实时性的要求,暂停发送策略很好的解决了这一现象。使用此策略有时会有丢帧的现象(100M局域网没有发现丢帧现象),但就客户端的要求是满足的,在服务器端的采集、显示、保存不受暂停发送策略的影响,也就是不会有丢帧的现象, 虽然应用了暂停发送策略,但已经能够满足在客户端实时监控需求了。
3.2 客户端的实现
在上面讲服务器端的实现时已经大概讲到客户端的实现,因为只要把服务器端实现好客户端实现难点就小的多。如图四所示:

图四 客户端程序流程图

在客户端也可以自行选择要采集的通道,但对服务器端的采样率等都不能通过客户端进行设置,实现客户端时主要是要实时监听和服务器网络连接状态和判断接受的视频数据是否正常是否启用暂停发送策略等。每秒接收的帧数可自行调节,但不能大于服务器端每秒采集的帧数。
在客户端还要实时Divx解码,如果不解码就无法显示,Divx解码速度是完全可以达到实时显示的要求。Divx解码和显示在不同的两个线程中实现的,这样做主要是为了显示流畅。可以在两个不同客户端显示两个不同的视频通道采集的数据。
4  结论
本系统作为电视跟踪系统的一部分,负责多路视频数据的实时采集、存储和视频编解码算法的实现、基于C/S结构的实时视频数据传输显示,在通过各种测试后在试运行期间已达到本系统的预期要求,本系统还支持事后的视频回放。
本系统的开发难点和重点在服务器端,服务器端的开发直接影响到整个系统开发。

参考文献
[1] 《Windows核心编程》 Microsoft公司〔美〕著
[2] 《Windows多媒体编程基础》 作者: 张静 , 梁澍 编
[3] 《Windows网络编程》 Microsoft公司〔美〕著