CBR、CRF 和使用 FFmpeg 更改分辨率

在本文中,我们将介绍使用 H.264/AVC 编解码器 (libx264) 压缩视频的过程,并讨论以下内容: 

  • 创建恒定比特率 (CBR) 编码视频 
  • 使用恒定速率因子 (CRF) 选项设置所需的质量
  • 将视频的分辨率更改为1280x720720p。 

为此,我们将使用分辨率 = 的示例视频1920x1080,可在此链接下载。 

创建恒定比特率 (CBR) 视频

要了解 CBR,我们需要了解什么是比特率。比特率是任何媒体文件(如音频或视频)中每秒存储的信息或数据量。用技术术语来说,它是编码器的数据输出速率。例如,2200 kbps 作为比特率意味着每秒存储 2200 kbps 的数据。

如果整个视频的比特率“恒定”,则称为 CBR 视频。然而,由于不同的帧类型和编码优先级,不可能对所有帧都具有恒定的比特率。因此,如果比特率在预定时间段内保持不变,则视频称为 CBR 编码视频。

为了输出恒定比特率的视频,我们将使用以下 FFmpeg 输出选项: 

  • -b:v –指定视频的平均目标输出比特率
  • -maxrate – 指定最大比特率容差 
  • -minrate – 指定最小比特率容差 
  • -bufsize – 根据 b:v、maxrate 和 minrate 的值指定有助于维持比特率的速率控制缓冲区大小 

在此之后,我们还需要使用该-c:v 选项指定视频编码器。如前所述,我们将libx264在所有三种情况下使用编码器。 

假设我们的示例视频需要有 2200 kbps 的 CBR。CBR 转换的 FFmpeg 命令如下: 

ffmpeg -i crowdrun.mp4 -b:v 2200k -maxrate 2200k -minrate 2200k -bufsize 2200k -c:v libx264 output.mp4 

以下是上述命令的截图:

FFMpeg CBR 编码
FFMpeg CBR 编码

如果我们尝试分析输出文件的比特率,我们会发现文件中比特率的高点和低点之间的差异非常小。理想情况下,在 CBR 模式下,比特率应该在整个视频期间完全恒定,但这是理想情况,无法通过软件编码器实现。 

使用 CRF 选项设置所需的质量 

恒定速率因子或 CRF 是 libx264 编码器中的一个选项,用于设置我们所需的输出质量。它使我们能够通过根据输入视频自动调整比特率来指定映射到特定质量的目标值。 

如果我们想为不同类型的输入视频提供相同的输出质量,这种方法会更好,因为 FFmpeg 会根据输入视频属性自动调整比特率。另一方面,前一种方法将保持相同的比特率,这将导致不同输入的输出质量不同。 

CRF 值范围从0 到 51,其中, 

  • 0 是无损(最佳),文件大小最大 
  • 23 是默认值 
  • 51 是最差的质量和最小的文件大小 

使用低 CRF 值,比特率和视频的文件大小将增加。因此,重要的是根据用户要求确定值。 

假设我们需要一个文件大小较小的压缩输出视频,我们可以使用 30 的值。为此,FFmpeg 命令将是: 

ffmpeg -i crowdrun.mp4 -crf 30 -c:v libx264 output.mp4 

以下是上述命令的截图:

FFMpeg CRF 编码
FFmpeg CRF 编码

将视频分辨率更改为 1280×720 

FFmpeg 为各种目的提供了大量的过滤器。其中之一是缩放过滤器,它有助于将输入缩放到任何分辨率。 

我们将使用的此过滤器的两个参数是: 

  • w : 指定视频的输出宽度 
  • h : 指定视频的输出高度 

在这里,我们还将添加 CRF 参数(在最后一点讨论)来压缩和减小输出视频的文件大小。 

用于此的 FFmpeg 命令将是: 

ffmpeg -i crowdrun.mp4 -vf scale=w=1280:h=720 -crf 30 -c:v libx264 output.mp4 

以下是上述命令的截图:

FFmpeg 改变文件分辨率

结论

在本文中,我们学习了如何使用 FFmpeg 生成 CBR 编码视频、CRF 编码视频,以及如何更改文件的分辨率。这三个操作对于任何视频压缩系统都非常重要,我们希望您能够使用它们来进一步使用 FFmpeg 进行视频压缩。

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论