HLSEncodingStorage

自适应码率阶梯详解:从 360p 到 4K 及磁盘成本

自适应码率流媒体如何选择画质,UFOLOAD 转码器实际使用的档位与码率,以及每个档位每小时视频占用多少磁盘空间。

自适应码率阶梯(ladder)是流媒体播放器可以选择的一组视频版本。每一档都有自己的分辨率和码率;播放器从其中一档开始,观察片段的下载速度,并随网络变化向上或向下切换。阶梯设计得当,火车上的观众和 4K 电视前的观众都能通过同一次上传获得流畅播放。设计不当,要么在没人用的档位上浪费磁盘和带宽,要么让网速慢的观众只能盯着转圈。

本文先解释阶梯的工作原理,然后展示 UFOLOAD 转码器实际生成的阶梯(码率直接取自转码器本身),以及每个档位每小时视频占用的磁盘空间。

播放器如何选择档位

HLS 流的主播放列表会列出每个档位,其中有三个关键属性:BANDWIDTH、RESOLUTION 和 CODECS。播放器根据最近几个片段测量下载速度,然后选择 BANDWIDTH 能宽裕地低于该速度的最高档位。有两个细节值得了解。

第一,BANDWIDTH 是峰值,而不是平均值。如果播放列表低报了这个值,播放器会选中网络无法持续支撑的档位,导致播放卡顿,因此我们的转码器写入的是峰值,而且从不写 0。第二,切换发生在片段边界。我们的片段长四秒,编码器会在每个片段开头放置关键帧,因此播放器可以在不同档位间无缝跳转。片段越短反应越快,但请求数也越多;四秒是常见的折中。

如果你想把这样的视频流放到自己的页面上,如何嵌入 HLS 视频介绍了 iframe 和 hls.js 两种方式。

UFOLOAD 的码率阶梯

转码器有四个档位:2160p(4K)、1080p、720p 和 360p。只有当源文件的高度不低于某一档时,才会生成该档,因为放大不会增加细节,只会成倍增加体积和编码时间。720p 的源文件会生成 720p 和 360p;低于 360p 的源文件会按原尺寸生成一个版本,确保每个文件至少有一个可播放的版本。宽度遵循源文件的宽高比,并取整为偶数,因为采用 4:2:0 色度抽样的 H.264 无法编码奇数尺寸。下表中的宽度按 16:9 计算。

UFOLOAD 转码器的档位(H.264 High profile,AAC 立体声)
档位16:9 画面尺寸视频码率上限质量目标(CRF)音频每小时峰值体积
2160p3840x216016 Mbit/s20192 kbit/s6.79 GiB
1080p1920x10805 Mbit/s22160 kbit/s2.16 GiB
720p1280x7202.8 Mbit/s23128 kbit/s1.23 GiB
360p640x3600.8 Mbit/s2664 kbit/s0.36 GiB

默认预设为 medium,各档码率是针对普通 H.264 内容选定的。1080p 档的上限为 5 Mbit/s:这足以保证画面干净,再往上文件只会变大,画质却看不出提升。4K 的像素是 1080p 的四倍,因此其上限为 16 Mbit/s,高出三倍多,以免复杂场景中出现色块。

转码器不生成 480p 或 240p。档位越少,占用的磁盘越少,编码也越快,而且在 360p 和 720p 之间,播放器仍有一个适合慢速移动网络的合理台阶。你实际获得哪些档位还取决于你的套餐:360p 和 720p 是基础档,最高档受套餐上限约束,详见价格页面。在 Free 套餐中,视频只有单一清晰度。

CRF 与码率上限:为什么文件大小是上限值

编码器的目标不是固定码率,而是恒定质量,用 CRF(constant rate factor,恒定速率因子)表示:数值越低,画面越好,文件越大。静态的口播视频只需很少的数据就能达到目标,动作场景则需要大量数据。为了不让某个场景挤爆慢速网络,每个档位还设置了与表中码率相同的 maxrate,以及两倍于此的缓冲区。结果是视频流通常低于上限,即使超出也不会持续太久。

这就是本文中的大小都是峰值的原因。讲座或屏幕录制通常远低于这些数值。以讲话为主的内容可能只有上限的一小部分,而高动态的体育画面或噪点多的素材会接近上限。估算片库容量时,用峰值做稳妥预算,用你自己实测的平均值做现实预算。

编码工作室中的质量配置会改变这种平衡。快速配置使用更快的 x264 预设,视频更早就绪,但文件略大;高质量配置使用更慢的预设和更低的 CRF,画面更干净,仅限付费套餐使用。默认的均衡配置介于两者之间。

码率阶梯占用多少磁盘空间

按各档峰值计算,一小时视频在 2160p 下为 6.79 GiB,1080p 下为 2.16 GiB,720p 下为 1.23 GiB,360p 下为 0.36 GiB。完整阶梯的体积是源文件所允许的各档之和,每个档位在磁盘上都是一个独立文件:

源文件分辨率生成的档位每小时视频的峰值体积
4K(2160p)2160p、1080p、720p、360p10.54 GiB
全高清(1080p)1080p、720p、360p3.75 GiB
高清(720p)720p、360p1.59 GiB
低于 360p按源文件尺寸生成一个版本取决于源文件

举个具体例子:100 小时的全高清素材最多生成约 375 GiB 的各档文件。如果把最高档限制在 720p,同样的一百小时最多只需约 159 GiB,减少一半以上。最高档决定了大部分开销:在由 4K 源文件组成的片库中去掉 4K 档,大约能减掉三分之二的体积。托管服务是否把这些档位文件计入你的存储配额是另一个问题,详见视频托管要花多少钱;在 UFOLOAD,配额按你上传的文件大小计算。

在编码工作室中调整码率阶梯

你不必接受默认设置。控制面板中的编码工作室有三项设置,可以改变你存储的档位数量:

  • 最高分辨率。 视频绝不会以高于此值的分辨率编码。超出套餐上限的分辨率处于锁定状态。
  • 最低画质。 可选择 360p、720p 或 1080p 作为最低档。提高它会去掉较小的档位,节省磁盘和编码时间,但网络较差的观众就失去了后备选项,所以如果你的受众中有移动端用户,请保留 360p。
  • 快速预设。 最高画质、均衡、节省存储(最高 720p,仅保留所需的清晰度),以及面向符合条件账号的即时发布。

更改仅对新上传的视频生效。要应用到片库中已有的视频,请使用重新编码操作:它会分批处理最新的视频,两次运行之间有冷却时间;重新编码期间视频仍可正常播放。

如果你自己构建码率阶梯

  • 相邻档位之间的码率比保持在约 1.5 到 2 倍。台阶太小只会增加存储而没有可见的好处,台阶太大则画质跳变会很明显。
  • 最低档要低到足以照顾你实际受众中网速最慢的观众。没人能持续支撑的档位是浪费;缺少最低档就意味着转圈。
  • 让关键帧与片段时长对齐,并在播放列表中报告峰值码率。
  • 不要放大。每个档位都以源文件高度为上限。
  • 一个月后统计观众实际使用了哪些档位,去掉从未被播放的档位。

从上传格式到分发的完整流程,请参阅功能页面;套餐限制和价格见价格。如果你还在比较各种方案,视频托管选择清单列出了在编码和画质方面应向任何服务商询问的问题。

免费注册账号试一试

几分钟内上传视频,获得 HLS 播放器和 API 密钥。各套餐限制见价格页面。