NVIDIA NVENC OBS 指南

由 Gerardo Delgado Cabrera 发表于 2019年2月26日 | Guides Broadcasting Streaming

关于本指南

本指南的目的是帮助您理解如何在 OBS 中使用 NVIDIA 编码器 NvEnc。我们已经简化了一些概念,以便让更广泛的受众容易理解。如果您认为我们可以改进本指南的任何部分,或发现任何问题或错误,请在下面留言,我们将很乐意做出更新。

码率、分辨率和帧率

编码就是压缩图像。图像尺寸越小,我们需要压缩的越少,其保持的质量就越高。同样的情况也适用于帧率,观众很容易注意到 FPS 的降低,但分辨率则不明显,所以我们总是尝试以 60 FPS 进行串流。

首先,进行网速测试以确定您的上行带宽(如 SpeedTest)。我们希望使用约 75% 的上行带宽,因为游戏和其他程序(如 语音聊天工具Discord)也会抢占带宽。

然后,我们将确定可以用于这种码率的分辨率和 帧率。大多数直播网站都有建议的使用参数(Twitch, YouTube)。以下是我们的建议:

上行带宽

码率

分辨率

帧率

3 Mbps

2,500

1024x576

30

4 Mbps

3,500

1280x720

30

6 Mbps

5,000

1280x720

60

8-15 Mbps

6,000

1920x1080*

60

15+ Mbps

12,000 (YouTube)

1920x1080

60

20+ Mbps

15,000+ (YouTube)

2560x1440

60

40+ Mbps

30,000+ (YouTube)

3840x2160

60

* 高动态内容的重要注意事项。如果您要串流高动态场景(如赛车游戏、一些大逃杀游戏等),我们强烈建议降低分辨率。高动态内容不能被压缩太多,并且可能产生更多伪影(编码错误),使您的视频流看起来呈“块状”。如果降低分辨率,就会减少编码的数据,从而得到更高的观看质量。例如,对于《堡垒之夜》,许多直播者采用 1600x900 60 FPS 的参数进行串流。

** 新的和将来的 Twitch 直播者需要注意的重要事项。转码允许观众以不同的分辨率观看视频,因此需要的带宽较低。Twitch 只向合作伙伴提供有保证的转码;非合作伙伴可能会获得转码,但不能做出保证。这一点很重要,特别是如果您的观众使用的是手机,或者他们的网速不够快。您可能需要考虑以较低的码率和分辨率进行串流,以降低观看您的频道所需的带宽。

推荐设置

这些是我们为 OBS Studio 23.0 及更高版本推荐的设置。您将需要使用一个私人账号来测试和调整这些设置,以便验证您对结果是否满意。

视频选项卡设置

  • 基础(Canvas)分辨率:设置您通常播放的分辨率。即您的桌面分辨率(如果您在无边框模式下播放)或您通常输入的游戏分辨率(如果您在全屏模式下玩)。
  • 输出(缩放)分辨率:输入适合您的上传速度和码率的分辨率,如上一部分中所述。
  • 缩放过滤器:这允许您选择一个缩放过滤器,以增加一些编码器工作负载为代价提供一定的图像清晰度增强。NvEnc 非常高效,通常在低系统占用率下运行,因此我们建议将其与 Lanczos(32 个样本)选项一起使用,以获得最佳质量。
  • 常见的FPS值:输入适合您的上传速度和码率的 FPS,如上一部分中所述。

输出选项卡设置

如果您想要一个简单的开箱即用配置,请进行以下设置:

  • 输出模式:简单
  • 串流
    • 视频比特率:输入适合您的上传速度的码率,如上一部分中所述。
    • 编码器:选择硬件 (NVENC)。
    • 启用高级编码器设置:勾选。这使得下一个选项可见。
    • 编码器预设:最高质量。如果您要在 RTX 20 系列上串流4K 分辨率,则需要将其降低到“质量”,即使RTX 卡已经具有前几代产品所没有的图像优化。
  • 录像
    • 录像路径:这是保存视频的目录。确保您选择的硬盘有足够的空间!
    • 录像质量:“高质量”通常适用于大多数用户,但如果您有足够的磁盘空间或准备做短视频(约 60秒),则可以将其更改为“近似无损的质量”。
    • 录像格式:FLV。
    • 编码器:硬件 (NVENC)。

其他设置

为确保流畅的传输,您还需要配置 2 项其他设置:

  • Windows:禁用游戏模式。当游戏运行时,此模式会降低任何其他程序(包括串流所需的程序)的性能。
  • 游戏:确保游戏使用的 GPU 资源少于 90%。Windows 会降低任何超过该值的后台应用程序的优先级。您可以在 Windows 任务管理器 > 性能选项卡中检查 GPU 利用率。为了限制 GPU 的使用,您可以降低游戏的图形渲染复杂度或分辨率,启用无边框窗口模式进行游戏,设置游戏中的 FPS 上限,或者打开 V-Sync。

这样就完成了设置!我们希望这能帮助您改善串流质量并达到您的目标。如果这对您有用,或者您希望我们在指南中更新其他信息,请给我们留言。祝您直播愉快!

高级设置

如果您想修改所有设置,以下是我们的更深入的建议。

串流设置

  • 输出模式:高级。这将使您可以访问所有设置。开始吧!
  • 编码器:选择 NVIDIA NVENC H.264(new)。
  • 强制流服务编码器设置:保持勾选状态,这将确保如果您输入了一个错误的值,它将得到更正。
  • 速率控制:选择 CBR。这决定了帧的编码速率。
  • 比特率:输入适合您的上传速度的码率,如上一部分中所述。请记住,一些平台有最大码率(即,Twitch 目前是 6000 Kbps)。
  • 关键帧间隔:设置为 2。直播平台可能会限制您在此处可以选择的数值,大多数需要设置为 2。
  • 预设:选择“最高质量”。这决定了我们在编码器上增加多少负载来获得更高的质量。NvEnc 非常高效,所以大多数用户可以选择最高设置。如果您遇到编码器过载问题,请将此更改回“质量”。“最高质量”和“质量”的区别在于“最高质量”使用 2-pass 编码。
  • Profile:设置为“high”。配置文件确定了 H.264 编解码器中的一组设置。它不会影响性能,同时提供了对串流至关重要的一组功能的访问权限,因此应始终将其设置为“high”。
  • 超前控制:对于大多数内容不勾选,对于低动态游戏则勾选。这允许编码器动态的在 0 和您指定的 B 帧数之间选择 B 帧的数量。B 帧非常好,因为它提高了图像质量。但它由于会消耗大量的可用码率,因此会降低高动态视频的图像质量。超前控制可以实现两个方面的最佳效果,但由于需要经常更改,因此高动态内容的质量不易保证。这个功能使用了 CUDA 加速,所以在 GPU 负载高的情况下建议关闭这个设置以确保流畅直播。
  • 心理视觉调整:勾选。这样可以在编码器中启用速率失真优化,从而大大优化码率的使用方式,提高运动时的图像质量。
  • GPU:0。如果系统中有 2 个 GPU,您可以选择用于编码的 GPU。但不建议这样做,因为 NvEnc 已经非常高效,而且因为要将帧复制到第二个 GPU,使用第二张卡所能获得的有限的收益会损失。
  • 最大 B 帧:设置为 2。对于低动态内容(如《古墓丽影》等冒险游戏),您可以将其增加到 4。B 帧提高了图像质量,但消耗了码率,从而降低了运动时的图像质量。如果您在串流中看到像素化或伪影,您可能需要降低这一数值。

录像设置

  • 类型:标准。
  • 录像路径:这是保存视频的目录。确保您选择的硬盘有足够的空间!
  • 录像格式:FLV;或者 MKV,如果您使用多音轨。
  • 音轨:保留 1 为默认值;如果您正在使用更多来源,则可以添加更多音轨。
  • 编码器:NVIDIA NVENC H.264(new)。
  • 速率控制:我们推荐 CQP,虽然高码率的 VBR 也会产生良好的结果,但文件更大。
    • CQ 级别 (CQ):CQ 为 15(如果您想要更高的质量,则设置为更小的值)。
    • 码率和最大码率 (VBR):40,000 码率;60,000 最大码率。您可以将这两个值分别提高到 100,000 和 200,000,以获得更高的质量。
  • 关键帧间隔:0 或 2。
  • 预设:选择“最高质量”。如果您遇到编码器过载问题,请将此更改回“质量”。
  •  Profile:设置为“high”。
  • 超前控制:勾选。
  • 心理视觉调整:勾选。
  • GPU:0。如果系统中有 2 个 GPU,您可以选择用于编码的 GPU。
  • 最大 B 帧:设置为 2。对于低动态内容(如《刺客信条》等冒险游戏),您可以将其增加到 4。

NVENC 介绍

NvEnc 是 NVIDIA 的编码器。它是我们 GPU 的一个物理部分,专用于编码。这意味着无论您使用此编码器进行串流还是录像,您的 GPU 都可以正常运行。x264 等其他编码器使用 CPU 进行编码,这会占用游戏等其他程序的资源。这就是为什么使用 NvEnc 可以让您以更高的帧速率玩游戏,避免卡顿,给您和观众更好的体验。

在过去的两代 GPU 中,我们对 NvEnc 做出了很大的改进,帮助实现了一流的输出质量。GTX 10 系列 GPU 中的 NvEnc 提供了比 x264 Very Fast(最常用的 x264 预设)更高的质量。在新的 RTX 20 系列中,NvEnc 的性能比 x264 Fast 更好,与 x264 Medium 相当,后者是一种需要昂贵的双电脑设置的预设。

在 RTX 20 系列中,NvEnc 的一个优点是,从 RTX 2060 到 RTX 2080 Ti,所有 GPU 都具有相同的 NvEnc,具有相同的性能和质量。NvEnc 还受益于我们自己的 NVIDIA Video Codec SDK,这是一套高级工具,有助于提高编码质量,我们不断更新,以帮助您从 NVIDIA 卡中获得最佳效果。

最后,如果您正在使用 NVIDIA GPU,您可以使用 GeForce Experience 的 游戏滤镜FreeStyle,该滤镜允许您通过软件实现增强颜色、增加清晰度或引入酷炫效果,从而进一步提高观众的图像质量。

GEFORCE 优化的 OBS STUDIO 新版本介绍

我们与 OBS 合作,改善了对 NVIDIA GeForce GPU 的支持。新的 OBS Studio 23.0 版本将利用 NVIDIA Video Codec SDK 显著提高性能,降低串流和录像的 FPS 影响。我们也调整了一些 NvEnc 的后台设置以改善质量,尤其是针对 RTX 20 系列 GPU。

如何调试问题

串流可能非常复杂,但尤其困难的地方在于调试。当进行串流时,有很多组件在运行,因此我们将尝试为您提供一些帮助,以便您可以识别哪里出了问题,以及如何修复。

组件

串流使用以下组件:

  • 个人电脑:这包括了硬件和软件。
  • 本地网络:WiFi 或有线互联网 + 路由器。
  • 网络连接:连接到服务提供商。
  • 直播平台:Twitch、YouTube、Mixer 等。
  • 观众的网络:通常是 Wi-Fi,但也有可能是 3G/4G。
  • 观众的设备:请记住,35% 的 Twitch 观众使用的是移动设备。

如果出现了直播故障,我们首先要确定哪个组件可能出现了问题,这样我们就不会疯狂地尝试修复从一开始就没有损坏的组件。通常,这意味着您应该做的第一个测试是网络速度测试,以确保您的本地网络和互联网连接中没有网络问题。其次,确保平台没有发出关闭或遇到问题的警告。然后根据您遇到的错误,开始逐个查看您个人电脑上的组件。

如何检查编码器的运行情况

OBS Studio 包含了一个非常有用的工具:统计窗口。要启用该工具,点击“查看”>“统计”。该窗口将显示延迟的帧、跳过的帧、丢弃的帧和编码器 FPS。

常见错误类型

串流未及期望 FPS。对于 FPS相关问题,OBS 在程序的右下角包含了一个 FPS 计数器。如果您遇到 FPS 问题,请确保您的内容和 OBS 以等于或高于所需 FPS 的速度运行。如果您的内容有问题,请降低游戏设置,以便获得更高 FPS。如果 OBS 丢失 FPS,请尝试下面的 GPU 过载解决方法。如果都不是这些问题,则可能是网络问题。

GPU 过载。要确定该问题,请打开“Windows 任务管理器”,转到“性能”选项卡并单击 “GPU”。您将可以看到 GPU 每个部分的负载。如果“视频编码”部分高于 90%,您可能遇到了编码器过载问题。这是 Windows 造成的,因为它取消了 OBS 的优先级,以为游戏提供更多的资源。要修复这一问题,我们建议您依次尝试这些方法,直到 GPU 负载低于 90%:

  • 降低游戏视频设置。
  • 如果您正在使用 4K 或 1440p 玩游戏,请将游戏分辨率分别降低到 1440p 或 1080p。为使其生效,请确保游戏在全屏模式(而不是无边框模式)下运行。
  •  限制游戏 FPS。有些游戏允许您直接执行此操作,或者您可以通过打开 V-Sync 设置来执行此操作。

在某些情况下,关闭“超前控制”和“心理视觉调整”功能可能有助于缓解此问题。要执行此操作,请前往“设置”>“输出”,然后将“输出”模式更改为“高级”。然后取消勾选这 2 个选项。

编码器过载。您可以通过 OBS 底部栏中的错误消息来确定这一问题,该消息告诉您编码器已过载。这在使用 NvEnc 时非常罕见。要确定该问题,请打开“Windows 任务管理器”,转到“性能”选项卡并单击 “GPU”。“视频编码”部分(左侧第二个图形)显示了编码器负载。如果这一数值超过 95%,则您可能遇到了这一问题。有 2 种设置可以帮助解决这一问题:

  • 第一种方法是在“OBS 设置”的“视频选项卡”中更改“缩放过滤器”,从“Lanczos”更改为“双直线法”。这一操作收效甚微,但可以将负载降低到 95% 以下。
  • 第二种方法是在“OBS 设置”的“输出选项卡”中更改“编码器预设”,从“最高质量”更改为“质量”。

图像看起来有褪色效果。最有可能的问题是试图在不具备足够码率的情况下提高质量。请考虑降低分辨率和帧率(如果需要),然后重试。如果质量得到提高,则继续调整,直到找到最佳效果位置。