可变比特率 (VBR) 编码

[与此页面关联的功能 Windows Media Format 11 SDK 是旧版功能。 它已被源读取器和接收器编写器取代。 源读取器和接收器编写器已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用源读取器和接收器编写器,而不是 Windows Media Format 11 SDK。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

可变比特率 (VBR) 编码是固定比特率编码 (CBR) 的替代方法,受某些编解码器支持。 在 CBR 编码努力维护编码媒体的比特率的情况下,VBR 会努力实现编码媒体的最佳质量。

编码内容的质量取决于压缩和解压缩内容时的数据丢失量。 压缩过程的数据丢失量受许多因素影响,但一般而言,原始数据越复杂且压缩率越高,压缩过程中丢失的详细信息就越多。

有三种类型的 VBR 编码:基于质量、无约束和受约束。

基于质量的 VBR 编码

第一种类型的 VBR 编码是基于质量的,它使用一个编码传递。 使用基于质量的 VBR 编码可以指定数字媒体流的质量级别,而不是比特率。 然后,编解码器将对内容进行编码,以便所有样本的质量都相当。

基于质量的 VBR 编码main优点是,在文件中以及从一个文件到另一个文件的质量是一致的。 例如,可以编写一个程序,将歌曲从 CD 复制到计算机上的 ASF 文件。 在这种情况下,与一致的文件大小相比,一致的质量对最终用户体验而言可能更重要。 使用基于质量的 VBR 编码可确保复制的所有歌曲具有相同的质量。

基于质量的 VBR 编码的缺点是,在编码之前,实际上无法知道编码媒体的大小或带宽要求。 这会使基于质量的 VBR 编码文件不适用于内存或带宽受限的情况,例如便携式媒体播放器或低带宽 Internet 连接。

通常,基于质量的 VBR 编码非常适合本地播放或高带宽网络连接。 在这些情况下,一致的质量将提供更好的用户体验。

不受限制的 VBR 编码

无约束 VBR 编码使用两个编码通道。 使用不受约束的 VBR 编码时,可以指定流的比特率,就像使用 CBR 编码一样。 但是,编解码器仅将此值用作流和编码的平均比特率,以便在保持平均值的同时尽可能提高质量。 编码流中任意点的实际比特率可能与平均值大不相同。

不像 CBR 编码流那样为无约束 VBR 编码设置缓冲区窗口。 编解码器会根据编码样本的要求计算所需缓冲区窗口的大小。

不受约束的 VBR 编码的优点是,压缩的流具有尽可能高的质量,同时保持在可预测的平均带宽内。

受约束的 VBR 编码

受约束的 VBR 编码与不受约束的 VBR 编码相同,只是在配置文件中指定了最大比特率和最大缓冲区窗口。 然后,编解码器使用最大值来确定如何压缩数据。 如果将最大值设置为足够高,受约束的 VBR 编码将生成与不受约束的 VBR 编码相同的编码流。

选择编码方法

编解码器功能

配置流

配置 VBR 流

固定比特率 (CBR) 编码

双传递编码

使用Two-Pass编码