x264:哪种调整可以获得最佳直播质量而无需增加比特率?

x264:哪种调整可以获得最佳直播质量而无需增加比特率?

我正在尝试以尽可能最低的比特率从 OBS 20.0.1 流式传输 FPS 射击游戏,同时保持尽可能最好的质量(即更少的块状像素)。

我担心更多的参考帧会增加我的比特率。那么,既然这是高运动流媒体,我应该用它-tune animation来增强去块效应吗?或者会PSNRSSIM更有希望的候选者?

有没有-tune比使用测试流尝试更好/其他的方法来测试哪个选项最好?

此外,是否有其他 x264 选项可以使我的流受益,但哪些不包含在 OBS 中?

我的 OBS 设置: OBS 设置

我的硬件:

  • 中央处理器:英特尔 i7-4770k
  • 图形处理器:Nvidia GTX780 Ti
  • 内存:12GB,1600MHz

答案1

我正在尝试以尽可能最低的比特率从 OBS 20.0.1 流式传输 FPS 射击游戏,同时保持尽可能最好的质量(即更少的块状像素)。

您可以这样做,但这将花费大量的编码时间。由于您正在直播,我假设您需要单次编码,并且最好是一次快速的编码,即最大限度地利用您的 CPU 资源。因此,您应该尝试使用 CPU 速度预设 - 选择您可以容忍的最高速度。

不可能同时优化所有这些参数(速度、质量、比特率),这就是为什么 x264(和其他编码器)提供一种选择速度预设的方法(例如,x264 中的从ultrafastveryslow)。这些预设分别启用/禁用某些选项,以优化压缩质量或最​​小化编码时间。

我担心更多的参考帧会增加我的比特率

通常这是正确的,因为它们要大得多。

那么,既然这是高动态流媒体,我应该使用 -tune 动画来增强去块效果吗?或者 PSNR 或 SSIM 会是更有希望的候选者吗?

看看这个其他帖子,其中解释调谐模式

对于低延迟实时流式传输的特殊情况,使用一次编码过程是没有意义的film。这是为了保留(颗粒状)细节。

您对低比特率块状现象的担心是可以理解的,但该animation预设对于直播来说没有意义,因为它还会增加 B 帧的数量,而您无论如何都希望将其设置为 0(或较低的数字)以允许快速编码。B 帧需要对过去和未来的帧进行编码,这意味着编码器/解码器必须保留更大的缓冲区来存储这些帧。B 帧越多,质量越好,但代价是编码时间。

psnr和模式ssim也没什么用;它们仅在编码器开发/优化期间使用,实际上可能会导致更差的主观质量。

也许zerolatency更适合您的用例?

有没有比使用测试流尝试更好/其他的方法来测试哪个 -tune-option 最好?

理论上,你可以对一些原始流进行编码,然后使用不同的设置对它们进行编码,并通过全参考视频质量分析仪运行它们,例如虚拟质谱或者军事空军。这些将为您提供编码的质量分数。但我想,在您的情况下,目视检查结果也足够了。

答案2

调整设置不是为了高/低质量,而是为了优化给定源类型的外观。

调谐动画适用于基于赛璐珞(平面)的动画。不适用于游戏流媒体。

Tune Film 适用于真人视频或电影,但足够逼真的 CGI(例如精细纹理)也可以从中受益。尝试一下没问题。

其他调整设置可能都不合适。最重要的是使用“更快”预设(或更好),因为所有较低质量预设都会显著降低质量。给它足够的比特率也很重要。请注意,x264 将使用相当多的 CPU,因此请做好准备。硬件编码器(例如 NVENC)可能在某种程度上有助于解决此问题,但视频质量会略低。

除非您的平台强制要求,否则没有必要调整低延迟,因为这对于流式传输您的游戏不是必需的(即,如果在已经存在的几秒钟延迟之上还有几分之一秒的延迟,观众不会受到影响)。

答案3

tune参数对流质量没有太大影响,这与指南中对其选项的讨论和/或提及不足有关。animation可以与低比特率流一起使用以增加去块效果,film可以与高比特率流一起使用以保持流尽可能忠实于源。虽然我不确定去块效果有多有效或缺乏。

PSNR用于SSIM速率控制(CBR、ABR、VBR、CRF)之间的测试和比较。

相关内容