假设内容质量相同(其他条件相同),流媒体(即视频、音频)是否与下载使用相同的带宽?
假设我从亚马逊下载一部高清电影或通过流媒体播放它,这是否相当于使用了带宽?
答案1
它们往往并不等同。
流媒体提供商使用以下协议:短跑,根据用户的带宽可用性和质量需求动态调整电影质量。然后服务器可能会限制您的连接速率,以便您可以缓冲一定量(例如 10 秒,可能是 30 秒或整整一分钟),之后您只会获得实时获取内容所需的带宽量。从提供商的角度来看,这显然是一种优化,因为它在用户之间更平等地分配带宽,此外还避免了数据被白白传输(例如,当用户观看 10 分钟的 480p 电影时,如果没有速率限制并使用公共下行链路,则可能已经下载了更多内容,但如果用户停止观看视频,则会浪费掉这些内容)。
大量的数据传输的速度是一样的。但流媒体传输可能需要更长时间,因为提供商可能会将数据传输速率限制为实时传输给定质量的内容所需的速率。
Dailymotion 是限制连接速率的提供商之一。从具有至少 100 Mbit/s 对称连接的服务器,我们看到以下行为¹:
youtube-dl http://www.dailymotion.com/video/xhc3zz_long-distance-calling-into-the-black-wide-open_music
[dailymotion] xhc3zz: Downloading webpage
[dailymotion] xhc3zz: Extracting information
[dailymotion] xhc3zz: Downloading embed page
[download] Destination: LONG DISTANCE CALLING - ' Into The Black Wide Open '-xhc3zz.mp4
[download] 5.8% of 51.99MiB at 203.89KiB/s ETA 04:06
该速率远低于可能的速度(其他提供商已实现)。此外,如果您尝试不同的材料,您会发现速率高度依赖于单个视频:全高清视频的下载速度很容易超过 1 MiB/s,而像这样的音乐视频的下载速度保持在 200 KiB/s 左右或以下。
总结一下,澄清一些可能的误解:一些提供商可能会在流媒体播放时通过其客户端应用程序(例如,使用 html5 或 flash 视频播放器的 youtube)或通过服务器限制您的下载速率。如果他们不通过服务器限制您的速率,那么下载将消耗更多带宽,因为客户端应用程序在流媒体播放期间可能应用的速率限制不会发生。这是消耗的带宽与原始问题不同的主要情况。
- 我知道这只是一种轶事证据——但我一直观察到这种行为。
答案2
假设我们谈论的是相同的质量(即没有节流、跳帧或低质量流),那么流最多会占用与下载相同的带宽,尽管它可以以对提供商更方便的时间/速率完成。它还可能占用更多带宽,具体取决于视频的压缩方式 - 大多数情况下不会发送整个图像,而只是发送帧之间的变化(或增量)。这意味着历史记录越多(即使用 Y 帧中像素 X 的蓝色色调),需要发送的就越少。这通常不会出现太多,但是当流因某种原因暂停/中断时,此“历史记录”将丢失并需要重新传输,从而增加带宽,而对于下载,它可以在“中断”处恢复,并假设接收方已经拥有此信息。同样可以用于音频,特别是在没有固定速率的情况下(即 FLAC 而不是 mp3)
跳转(跳过、倒带等)也可能影响使用率 - 越过缓冲区前进会减少流使用的带宽量,但任何倒带都会增加带宽量。此外,还会出现中断,这会导致使用率增加(见上文),任何形式的“缩略图预览”(如 youtube 和 netflix 使用的)也会略微增加带宽。
最后说明:压缩:这可以用于下载,但对于流媒体来说却不多——需要注意的是,大多数视频已经压缩,因此这里不会有太大的收益(尽管在超高分辨率/质量部门可能会有收益的空间)。
答案3
流媒体将使用较少的带宽,特别是在网络条件不好的情况下,但这是有代价的。
问题在于需要发送的数据。在下载模型中,所有数据都必须以正确的顺序到达客户,无论如何。如果网络状况不佳,部分数据无法到达客户端,则必须重新发送,这会增加带宽使用量。如果部分数据到达时顺序混乱,则必须先恢复顺序再显示,这会降低响应能力。
在流式传输模型中,如果部分数据未到达客户端,也没关系。如果您正在流式传输电影,但某个帧未到达,您可以跳过它并继续,这样您就不会在重新发送时使用额外的带宽。如果某些帧乱序到达,则只需播放前进的帧;短暂的闪烁不会有影响,因此这可以提高响应能力。但是,这也意味着您不一定能获得完整的数据:您看到的只是第一次拍摄时的数据。
如果您必须在模型之间进行选择,请根据您想要对数据执行的操作进行选择。如果您想要存档和/或多次查看,请下载它,这样您就能确保获得所有内容。如果您不打算存档,或者只打算查看一次数据,那么请继续进行流式传输;您可能不会在单次观看时注意到差异,如果网络条件差到您注意到的程度,那么下载会更糟糕。
答案4
它们是没有可比性的。
首先,本地观看的最佳编码与流观看的最佳编码不同。
让我们来谈谈视频编码。
在大多数视频编码格式中,通常有两种类型的帧:
- 帧内编码帧(I 帧) - 这些是完整传输的帧,无需了解任何其他帧即可解码。帧内编码帧本质上是静态图像。编码器会在突然转换期间生成这些帧。压缩效率较低。
- 预测帧(P 帧)或双向预测帧(B 帧) - 这些帧仅存储帧之间的差异,只有当观看者还知道前一帧和/或后一帧时才能解码。这些帧的压缩效率更高。
用于本地观看的编码可以利用快速磁盘寻道来使用更多的 P 帧和 B 帧,而用于高效流式传输的视频编码必须在整个视频中编码更多冗余 I 帧,即使没有突然的转换来适应随机寻道。
此外,流媒体有两种类型。您可以流式传输预先录制的流媒体(大多数 Youtube 视频)和直播活动流媒体(例如 Youtube Live)。由于延迟需求,直播活动流媒体无法利用需要很长时间或不可预测的时间的高级编码技术,而预先录制的流媒体可能需要尽可能多的时间来进行编码。
流式视频通常也采用恒定比特率 (CBR) 编码。对于相同的目标大小,可变比特率 (VBR) 视频通常比 CBR 视频具有更高的质量。相反,对于相同的 CBR 视频质量,VBR 视频更小。像 DASH 这样的自适应流式传输协议具有自适应比特率 (ABR),这是 CBR 和 VBR 之间的折衷。ABR 允许观看者适应网络带宽的变化。给定恒定、一致的带宽,ABR 与 CBR 大致相同。
所有这些意味着提供相同的质量和观看体验,您可以比流视频更有效地对本地观看的视频进行编码,并且可以比直播流更有效地对预先录制的流的视频进行编码。
然后,流式协议中也存在开销。常规 HTTP 下载可以使用分块传输编码来下载整个文件,这具有非常小的开销。流式下载必须协商要传输的块和块的质量。从总体上看,传输协议的开销相对较小。
总体而言,观看相同数量的视频,流媒体视频最终会占用更多带宽。就带宽使用量而言,流媒体的主要优势在于,它可以节省下载但不完整观看视频的人的带宽,这可以节省大量带宽。