摘要:随着视频压缩技术的日益成熟,数字视频监控产品逐渐成为了市场的主流。人们迫切希望网络技术能够成功地应用于数字视频监控领域,以使人们能够通过网络实现异地监控。正是在这种背景下,“基于网络的数字视频传输”课题研究日显重要。本文围绕网络视频传输的实时性和传输质量两大重要指标,从“解决传输层协议问题”入手,通过对TCP协议和RTP协议的比较,提出了“基于UDP协议的RTP实时视频传输”的设计思想,较好地保证了数字视频传输的实时性和服务质量。
关键词:数字视频;网络;传输层协议
1 引言
数字视频传输是人们利用视觉来获取信息的一种通信方式,它较之其它信息传递方式,具有确切性、直观性及高效率等特点。由于数字视频传输的大信息量和有限的传输带宽,使得视频的压缩编码、传输信道和网络协议的选择、IP组播技术(IP Multicast)以及基于Windows操作平台的软件实现成为了基于网络的数字视频传输应用中的关键技术。其中,传输信道和网络协议的选择至关重要,它将直接影响到数字视频传输的实时性能和通过网络传输以后客户端接收的视频图像质量。
图1给出了基于网络的数字视频传输的基本模型。本文将针对基于网络的数字视频传输应用中的网络传输协议的选择作以具体分析。
2 网络传输协议的选择集中在传输层
我们知道,ISO组织制订的OSI(Open System Interconnection)网络参考模型,将网络共分成7层结构,从下而上依次为:物理层、数据链路层、网络层、传输层、会话层、表示层及应用层。各层的功能都相互独立,每一层所实现的功能对上面一层来说都是透明的,每一层都只关心下一层所提供的服务。
物理层的任务是透明地传输比特流,数据链路层的任务是通过各种协议,在两个相邻节点间的线路上无差错地传送以帧为单位的数据,它们的功能已经由传输介质和网卡固化了,不能通过编程的方法进行改变,所以在编程设计时就不需要考虑这两层;网络层的任务是选择适当的路由,完成数据的打包和传送,在这一层,NetWare使用IPX协议,Unix和Windows则使用IP协议;传输层的任务是根据子网的特性最佳地利用网络资源,并以可靠和经济的方式为两端主机建立传输连接,以透明的方式传送报文,在这一层NetWare使用SPX协议,而Windows则使用TCP/UDP协议,Unix则使用TCP协议;会话层的任务是确定相互连接的主机之间信息的传递方式,即:全双工、半双工和单工,在局域网中一般不用考虑;表示层的任务是进行传输数据格式化和代码转换,一般用于异种机之间的通信,微机之间就不存在这些问题,所以这一层也不需要考虑;应用层的任务是确定进程之间通信的性质以满足用户的需要,它是我们编程的任务,但无须做协议的选择。由此看来,为了保证基于网络的数字视频传输的实时性和图像的质量,传输层协议的选择是整个设计和实现的关键。
Internet在IP层之上使用了两种传输协议:一种是传输控制协议TCP(Transmission Control Protocol),它是面向连接的网络协议;另一种是用户数据报协议UDP(User Datagram Protocol),它是无连接的网络协议。图2是网络的概念分层:
在对传输层协议进行分析比较之前,我们有必要认识一下“面向连接”和“无连接”的概念。面向连接服务是电话系统服务模式的抽象,即每一次完整的数据传输都要经过建立连接、使用连接、终止连接的过程。在数据的传输过程中,各数据分组不携带目的地址,而是使用连接号(Connect ID)。本质上,连接是一个管道,收发数据不但顺序一致,而且内容相同。TCP协议提供面向连接的虚电路服务。
无连接服务是邮政系统服务的抽象,每个分组都携带有完整的目的地址,各分组在系统中独立传送。无连接服务不能保证分组的先后顺序,不进行分组出错的恢复与重传,不保证传输的可靠性。UDP协议提供无连接的数据报服务。
3 TCP不适合实时传输视音频数据
IP网已被广泛使用在各种场合。其中TCP/IP协议是异种网络操作系统互连和通信的工业标准。系统构建在TCP/IP之上,可以拓宽其应用范围。但是,单纯的TCP/IP协议已经很难适应视音频通信,特别是连续的媒体流(如视频流)通信的要求。TCP协议是面向连接的协议,被用于各种网络上提供有序可靠数据传输的虚电路服务。它的重传机制和拥塞控制机制(Congestion Control Mechanism)都是不适合用于实时视音频传输的。
TCP/IP协议最初是为提供非实时数据业务而设计的。IP协议负责主机之间的数据传输,不进行检错和纠错。因此,经常发生数据丢失或失序现象。为保证数据的可靠传输,人们将TCP协议用于IP数据的传输,以提高接收端的检错和纠错能力。当检测到数据包丢失或错误时,就会要求发送端重新发送,这样一来就不可避免地引起了传输延时和耗用网络的带宽。因此传统的TCP/IP协议传输实时音频、视频数据的能力较差。当然在传输用于回放的视频和音频数据时,TCP协议也是一种选择。如果有足够大的缓冲区、充足的网络带宽,在TCP协议上,接近实时的视音频传输也是可能的。然而,如果在丢包率较高、网络状况不好的情况下,利用TCP协议进行视频或音频通信几乎是不可能的。
TCP和其它可靠的传输层协议如XTP不适合实时视音频传输的原因主要有以下几个方面:
3.1 TCP的重传机制
我们知道,在TCP/IP协议中,当发送方发现数据丢失时,它将要求重传丢失的数据包。然而这将需要一个甚至更多的周期(根据TCP/IP的快速重传机制,这将需要三个额外的帧延迟),这种重传对于实时性要求较高的视音频数据通信来说几乎是灾难性的,因为接收方不得不等待重传数据的到来,从而造成了延迟和断点(音频的不连续或视频的凝固等等)。
3.2 TCP的拥塞控制机制
TCP的拥塞控制机制在探测到有数据包丢失时,它就会减小它的拥塞窗口。而另一方面,音频、视频在特定的编码方式下,产生的编码数量(即码率)是不可能突然改变的。正确的拥塞控制应该是变换音频、视频信息的编码方式,调节视频信息的帧频或图像幅面的大小等等。