实时传输协议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公司〔美〕著
转贴于 酷文网-论文下载中心 http://www.coolwen.net
共2页: 上一页 [1] 2 下一页
网摘收藏: