互联网上有许多音乐和视频网站,当用户点击一部电影时,浏览器开始执行动作,首先向该电影的链接服务器发送一个 HTTP 请求。
然后,服务器从磁盘获取这部电影,它是一个 MP4 或其他格式的文件,会把文件发送回浏览器。浏览器启动媒体播放器,并将文件传输给播放器,最后播放器开始读取文件并播放这部电影。
在原则上,这种方法能够播放影片,但它没有考虑到网络问题,由于下载电影只是一次简单的下载,用户必须在播放电影之前等待整个电影通过网络传输完成,这可能需要数小时。
因此,这种模式会引发一些新问题,对于音频也是如此,即使是一个大小为 4MB 的 MP3 歌曲,如果宽带连接速度只有 1Mbps,用户也会面临短暂的等待时间,才能开始试听。
为了避免这个问题,浏览器提出了新的解决方案:网页链接到的电影文件并非实际的源文件,而是一个非常简短的文件,仅包含电影的路径、名称,一个简单的源文件可能只有一行,看起来像这样:
rtsp://joes-movie-server/movie-0025.mp4
浏览器像往常一样获取页面,但现在只有一行文本。
然后,它启动媒体播放器并将这行文本传递给播放器。接着,播放器连接到媒体服务器,并请求这部电影,电影数据被流式传输回播放器进行播放。
交错编码(interleaving)一种在传输之前对媒体数据进行重新排列的技术。
通过交错编码,数据的顺序被混合起来,然后在接收端再次解开交错的数据。这样,即使一个数据包丢失,由于发送前的数据分布已经被重新排列,丢失的损失会分散到多个数据包中,不会导致在播放时出现明显的间断。
举例来说,假设我们对每隔 10 毫秒的采样数据进行交错编码,将所有「偶数」采样放入一个数据包中,并将所有「奇数」采样放入下一个数据包中。如果现在丢失了 3 个数据包,这并不意味着丢失了 10 毫秒的音频,而只是丢失了每个 10 毫秒内的其他采样值。
媒体播放器可以轻松处理这种损失,通过在丢失位置交叉插入前后的样本值来弥补。
因此,即使是 10 毫秒的音频也具有较低的临时分辨率,并且不会产生明显的媒体缺失。
交错编码是一种非常吸引人的技术,它不需要额外的带宽,但会增加传输延迟,因为需要等待一组数据包都到达后才能解码。
不过,对于音频来说,播放期间的短暂间隙可以通过接近的声音来掩盖,除非用户非常专注,否则他们很难察觉到这种替换。
解压缩内容
在许多解压缩方案中,后续的数据必须等待较早的数据被解压缩出来之后才能解压缩,因为后续的数据是相对于之前数据的编码。
基于 UDP 传输协议可能会出现数据丢失的情况,因此在编码过程中必须设计成无论是否丢失数据都能进行解码。
这就是 MPEG 采用 I帧、P帧、B帧的原因之一,每个 I帧都可以独立于其他帧进行解码,以便从任何先前帧的丢失中恢复。
消除抖动
系统在启动播放器前会进行 5-10 秒缓冲,媒体播放器会定期从缓冲区中排出媒体数据,以确保音频和视频播放流畅,这种延迟为缓冲区一个机会来填补至「低水位标记」,以避免缓冲区完全排空。
缓存数据应该有规律,并且到达足够多,使得缓冲区永远不会被完全排空,如果缓冲区被排空那么媒体播放器不得不卡住,缓冲区的价值在于如果有时由于网络拥塞,导致数据到达地很慢,那么缓冲区的媒体保持播放器的正常播放,直到有新媒体到达,缓冲区才被补充填满。
需要多大的缓冲区,媒体服务器要以多快的速率发送媒体才能填满缓冲区,这些决策都取决于网络协议,有非常多的可能性。
媒体播放器和媒体服务器都愿意提前处理媒体数据,也就是说它们愿意缓冲大量的数据。
然而,为了优化网络使用,媒体播放器不能一直接收数据,因此需要定义缓冲区「高水位标记」。
基本原则是服务器不断地输出数据,直到缓冲区被填满高水位标记,然后媒体播放器告诉服务器暂停发送,服务器停止以后,缓冲区将开始排除, 当它降低到低水位标记的时候,播放器告诉服务器重新发送。
低水位标记必须考虑网络的带宽延迟,来启动和停止媒体流播放器,这就是 RTSP 协议所提供的功能,它给播放器提供了控制服务器的机制,除了启动和停止媒体流之外,它还可以后退和前进到某个位置,播放特定时间以及快进、快退,它不提供数据流传输,不过这通常是由 UDP 之上的 RTP 或者是基于 TCP 的 HTTP 之上的 RTP 的任务。
TCP 的优势
关于缓冲区大小和媒体服务器发送速率的决定,确实取决于所选择的网络协议,而且有很多可能性。选择基于 UDP 还是 TCP 协议是设计中需要考虑的最重要因素之一。
尽管 TCP 看起来似乎不太适合实时流媒体传输,但实际上它仍然经常被采用。
最主要的原因是 TCP 更容易穿透防火墙,大多数管理员将防火墙配置成保护他们的网络不受未经授权的访问,他们通常会允许来自远程端口 80 的 TCP 连接,以便 HTTP 和其他外部流量通过。
另一个使用 TCP 的优点是,它提供给客户端的媒体是一个完整的副本,这使得用户可以轻松地倒回到播放的某个点,而不必担心数据丢失。
随着媒体存储空间变得越来越便宜,媒体播放器可以在用户观看的同时下载媒体。一旦下载完成,用户就可以无间断地观看,即使他失去了网络连接也没有关系。
内容优化:ChatGPT
图片来源:Pixabay
内容来源:《计算机网络》
原创文章,作者:小道研究,如若转载,请注明出处:https://www.sudun.com/ask/34463.html