第9章 多媒体网络
多媒体网络应用
多媒体网络应用:任何使用音频或视频的网络应用。
视频:高比特率。能被压缩,需要再视频质量和比特率之间权衡折中。有空间冗余(图像内部冗余)和时域冗余(前后图像的重复程度)两类冗余可以用来压缩。使用压缩来生成多个比特率的版本,根据带宽选择合适的版本。在视频会议中的视频能动态地根据可用的端到端带宽进行压缩率调整。
音频:模拟音频经过采样和量化后得到数字音频,这种方法被称为脉冲编码机制 PCM,主要用于语音和音频光盘。在因特网中使用压缩技术来减少流的比特速率,如 MP3。另一个相关的标准是高级音频编码 AAC,能够以不同的比特率生成多重版本的预先录制音频流。值得指出的是,用户对音频失误的容忍小于视频的失误。
多媒体网络应用类型:流式存储的音频/视频,会话式 IP 语音/视频,流式实况音频/视频。
流式存储式:预先录制的媒体。用户在开始接收文件时即可播放,同时从服务器接收后续部分的数据。用户能提出暂停、前进、倒退和快进等操作,并对响应时间有一定要求。一旦开始播放即需要连续播放。网络对流式应用提供的平均吞吐量至少要与该流本身的比特率一样大。
会话式:类似传统的电路交换电话服务,也被称为 IP 语音 VoIP。高度时延敏感,但能够容忍丢包。
流式实况:类似传统的电台广播和电视,有许多接收相同音频/视频的用户。其技术与流式存储媒体所用技术大致相同。
流式存储视频
常见的类型:UDP 流,HTTP 流,自适应 HTTP 流(后两者应用比较广泛)
广泛应用客户端缓存,以此来减少时延和带宽波动给用户体验带来的影响。
UDP 流:使用实时传输协议 RTP 或类似协议,使用 UDP 将视频块封装在运输分组中,同时还维护一个并行的单独的控制连接用于客户发送有关会话状态变化的命令。不足:无法根据带宽作出动态调整,要求 RTSP 服务器这类媒体控制服务器以跟踪客户的交互请求,一部分防火墙阻塞了 UDP 流量。
HTTP 流:使用传统的 TCP 连接,通过 HTTP 协议获取以 URL 形式存储在 HTTP 服务器上的视频资源。使用客户缓存和预取机制减少 TCP 拥塞控制机制带来的影响。HTTP 流利用 HTTP GET 请求报文中的 HTTP 字节范围首部来有效地进行视频的重定位请求。重定位和提前终止会导致带宽和流量的浪费,因此许多流系统仅使用长度合适的客户应用缓存,或者限制在 HTTP 请求中字节范围首部预取的视频数量。
IP 语音
经互联网的实时会话式语音。虽然 TCP 提供了可靠数据传输,但由于语音的实时性,时延过高的包反而不需要重传,故大部分 VoIP 应用默认运行在 UDP 协议上,只有在用户位于阻塞 UDP 报文的 NAT 或防火墙后时才使用 TCP。
在尽力而为的现有网络结构中提供 VoIP 服务需要关注这样几个问题:丢包(能够一定程度容忍),端到端时延(过长的时延是无法接受的),分组时延抖动(使用序号,时间戳和播放时延来缓解和消除)。使用适应性的播放时延可以最小化播放时延同时满足丢包率低于一定百分比(以保证通话质量)。
重传在 VoIP 中通常是不可接受的,所以 VoIP 应用通常考虑采用某些形式的丢包预期方案,常见的有前向纠错 FEC (增加一些冗余信息,用于重建丢失分组的近似或准确版本;比如在 n 个块后附加一个冗余块用于恢复,或者发送一个较低分辨率的音频流作为冗余信息)与交织(发送方在传输前对音频数据单元重排序,比如第一个块包含1,5,9,13单元,第二个块包含2,6,10,14 单元,这样如果少量丢失,只会在重建流中形成小的间隙)。也有使用重复播放和内插法重建丢失包的差错掩盖方法,这是基于音频信号(特别是语音)呈现大量的短期自相似性,但若丢失长度接近音素的长度时这种方法就可能失效。
实时会话式应用的协议
RTP 协议:运行在 UDP 上。RTP 首部包含多媒体编码的类型、序号和时间戳。不同的 VoIP 应用程序如果都实现了 RTP 就可以互相通信。 RTP 不提供任何机制保证数据的及时交付。 RTP 允许为每一个源(比如照相机或者麦克风)分配独立的 RTP 分组流。
SIP 协议:一个简单的会话发起协议。允许主叫者与被叫者之间经 IP 网络创建对话,主叫者确定被叫者的当前 IP 地址(被叫者可能使用动态 DHCP,或可能分配多个 IP 地址)。SIP 报文可以使用 UDP 和 TCP 发送,它要求所有的报文都要确认。SIP 是带外协议,即发送和接受 SIP 报文和媒体数据的套接字不一样。
支持多媒体的网络
多媒体网络的困难:对分组时延、时延抖动和丢包的严格要求。
尽力而为网络:最直接的办法就是直接升级现有的尽力而为网络结构,但会遇到经济和组织上的问题。
提供多种类型的区分网络:将流量划分为多种类型,为不同类型的流量提供不同质量的服务,或者赋予不同的优先级在转发时处理。
资源预约服务保证:使用更加复杂的协议,在链路的每一跳上预约相关资源,并在不能预约到时拒绝接入。