视频流、缓冲、DASH与CDN
视频流(Video Streaming)
视频是由一系列的图像,以一种恒定的速率(如每秒24张或30张图像)来展现的。一幅未压缩、数字编码的图像由像素阵列(array of pixels)组成,其中每个像素都是由一些比特编码来表示亮度和颜色。
视频的一个重要特征就是能够被压缩,因而可用比特率(bit rate)来权衡视频质量。视频有各种各样的压缩算法,对应不同的比特率。视频信息之所以存在大量可以被压缩的空间,是因为其中本身就存在大量的数据冗余。
如果分析一个视频里的每一帧,我们会看到有许多区域是相互关联的。因此在传输比特时,可以传输颜色值及其重复次数,而不是传输多个相同的颜色值。
另一种是时间冗余,对于连续的两帧,尝试花费较少的数据量进行编码,只传输两帧之间发生改变的地方,而不用全部传输。
参考帧
下一帧
重复颜色表示空间冗余,一个变化像素表示时间冗余。
编辑帧并测量简化差分编码
解锁完整互动实验、进阶解析与精选参考答案。
DASH(Dynamic Adaptive Streaming over HTTP)
在HTTP流中,视频只是存储在HTTP服务器中的一个普通文件,每个文件都有一个特定的URL。但是因为如此,所有客户接收到的视频编码版本也相同,显然这并没有考虑用户的带宽问题。
DASH,即经HTTP的动态适应流,解决了这个问题。在DASH流中,将视频编码成几个不同的版本,每个版本都具有不同的比特率,每个版本都有属于自己的URL。DASH在初始时能够根据用户的带宽选择一个合适的版本,同时也允许用户自定义更换版本。
实际自适应流把内容划分为片段,客户端从描述可用版本与片段的清单中选择下一片段表示。播放缓冲存放已经到达、尚未播放的内容;下载太慢会耗尽缓冲并产生停顿。选择不能只看瞬时带宽,还要考虑缓冲和后续变化。
这是给定持续交付速率下的简化计算,忽略协议开销。视频比特率、网络吞吐量与缓冲可播放秒数是三个不同量。
选择片段质量,避免缓冲耗尽
解锁完整互动实验、进阶解析与精选参考答案。
知识测验
CDN(Content Distribution Network)
服务器一定都是有物理位置的,因此离服务器越远的地方访问服务器就会越慢。况且很多中小型网站的服务器本身使用的带宽就小,一旦同时访问的人一多,访问网站依然会很慢。另一个问题就是服务器都会有一定几率遇到宕机的问题,服务器出了问题就导致无法打开网站。
内容分发网CDN的出现就可以解决这个问题。它与电商的仓库管理方式非常类似,电商刚开始的时候,买家购买一样物品后,商家都只能从仓库所在地发货,所以物流时间需要3~10天不等。后来电商和物流公司想了个招,在全国各个区域都建设仓储中心,先把货物放到这些仓储中心,这样买家不管在哪个地方,直接从最近的仓库发货,这样就能减少物流时间。
CDN管理分布在多个地理位置上的服务器,在它的服务器上存储视频(包括其它Web内容)的副本,并且将每个用户请求定向到一个能提供最好用户体验的CDN位置。
在观众附近放置可用副本
解锁完整互动实验、进阶解析与精选参考答案。
选择位置还要考虑内容可用性、负载、故障与实际网络路径,而不只是地图上最近的距离。CDN不保证任何情况下都不宕机,缓存副本也必须遵守内容更新与访问权限要求。
知识测验
按缓冲预算计算视频片段
一个片段可播放4秒,两种表示为3 Mbps与1 Mbps,交付速率2 Mbps,初始缓冲3秒。分别独立计算片段比特数、下载时间、停顿时间,以及完整片段到达后立即可播放的缓冲时长。忽略开销,下载期间播放持续消耗缓冲直到耗尽。