在这邮政響克提到对于 VoD(不要与直播混淆),应该使用以下两种方法之一进行压缩:
- 上限 CRF
- 具有 VBV 约束比特率的 ABR
我很自信地了解这些方法有何不同,但我真的不明白其中是否有一个更好的比其他的更甚,如果是,为什么?
在我看来,使用 Capped CRF -maxrate
(约束模式)是最合理的。然后编码器将为我计算最佳比特率,如果该比特率高于我的上传速度,编码器将限制比特率。因此,-b:v 5000K
除非始终保持特定比特率非常重要,否则使用固定比特率之类的设置是没有意义的。但为什么要这样做呢?
我的假设错了吗?
我是否应该选择 Capped CRF,-maxrate
或者是否存在我没有看到的缺点?
答案1
如果您对上传速度有硬性限制,但并不关心文件大小,那么上限 CRF 编码似乎是最佳折衷方案。它会为易于编码的剪辑节省文件大小,但也会为较难编码的部分强制执行最大速率。
因此,你可以这样做:
ffmpeg -i <input> -c:v libx264 -crf 23 -maxrate 2M -bufsize 4M <output>
CRF 参数和最大速率/缓冲区大小取决于内容的分辨率和类型。全高清剪辑需要更大的比特率(H.264 需要 8 MBit/s 以上),对于 4K,我建议您切换到 H.265,因为 H.264 的比特率太高了。由于这是 VoD,您可能有更多时间进行编码,因此您可以负担得起较慢的 H.265 编码器。
一般来说,如果你的 CRF 设置得太低,你就会一直达到上限;反之亦然。你最好做一些实验,看看当你使用选定的 CRF 值进行非上限编码时比特率会是什么样子。对于 Windows,比特率查看器是一个有用的工具。对于 Linux,plotbitrate
看起来很有用(但我还没有尝试过)。