
1.3 视频信息网络传输基础
如图1-1所示为一个典型的网络视频结构图。

图1-1 一个网络视频结构图
通过图1-1,将网络视频应用到的核心技术可以归纳为以下3个方面。
• 视频数据的获取:可以通过卫星、视频阵列及现存拍摄等方法,得到需要的视频数据信息。
• 视频数据的压缩与还原:在服务器端将视频数据压缩成MPEG-4或者MPEG-2的格式,并且在客户端解码播放。
• 视频数据的传输:将经过压缩的数据通过网络从服务器传输到客户端。
下面介绍经过压缩过的视频数据如何在网络上传输。目前,Internet在IP网络上使用两种传输协议,分别是TCP和UDP协议。
其中TCP是一种面向连接的网络传输协议,支持多数据流操作,提供流控和错误控制,乃至对乱序到达报文的重新排序,因此,TCP传输提供了可靠的数据传输服务。
而UDP协议是一种无连接的网络传输协议,提供一种基本的、低延时的称为数据报的传输服务,不需要像TCP传输一样预先建立一条连接。UDP是无计时机制、流控或拥塞管理机制的,丢失的数据不会重传,因此提供一种不可靠的应用数据传输服务。
传统的TCP和UDP协议都无法满足网络视频的传输要求。虽然TCP协议提供了可靠的数据传输,但是因为TCP协议在检测到数据包丢失或错误时,就会要求发送端重新发送,这样就不可避免地引起了传输延时和耗用网络的带宽。而UDP协议虽然传输的效率比较高,但是因为协议中没有错误检测机制,会导致在出现丢包或者传输错误的情况下也没办法弥补,导致传输效果不理想。
RTP(Real-Time Transport Protocol)/RTCP(Real-Time Transport Control Protocol)协议是一种专门为网络音视频实时传输而设计的网络协议。RTP协议位于UDP协议之上,通常是利用低层的UDP协议对实时视音频数据进行组播(Multicast)或单播(Unicast),从而实现多点或单点视音频数据的传输。RTP协议通常和RTCP协议同时使用,RTCP用来监视网络的传输状况,并提供反馈信息给网络视频应用程序以调整传输参数。
目前的操作系统(Windows和Linux)都提供了对TCP和UDP协议的支持,开发者可以直接通过调用系统的API函数开发基于TCP和UDP的应用程序。RTP/RTCP协议也可以在这个基础上开发。
针对目前常用的网络视频应用,可以分为如下两类。
• 服务器端应用:服务器端应用的核心,就是将数据视频编码压缩后通过网络传送到接收端。例如,现在网络视频的直播功能就是将采集的原始视频数据进行压缩编码后,打包通过网络传输出去;而网络视频点播功能则是将要播放的内容预先采集并且编码压缩成视频文件,然后供用户点击播放。
• 客户端应用:客户端应用的核心就是从网络中得到视频数据包,并将这些数据解码显示。例如,用户通过手机或者计算机看视频节目、视频点播或者直播、数字电视、视频会议等。