Guides, Broadcast, Streaming, NvEnc

 

ABOUT THIS GUIDE

The objective of this guide is to help you understand how to use the NVIDIA encoder, NvEnc, in OBS. We have simplified some of the concepts to make this accessible to a wider audience. If you think we can improve any part of this guide or find any issues or mistakes, please post below and we will be happy to update it.

BITRATE, RESOLUTION AND FRAMERATE

Encoding is all about compressing images. The smaller the size of the image, the less we must compress it and the more quality it keeps. While the same applies for framerate, a viewer can really notice a drop in FPS but not so much in resolution, so we will always try to stream at 60 FPS.

First, run a speed test to determine your upload speed (e.g. Speed Test). We want to use around 75% of your upload speed, as the game and other programs such as Discord will also fight for bandwidth.

Then, we will determine the resolution and FPS that we can use for such bitrate. Most streaming sites have recommendations (Twitch, Youtube) on what to use. These are ours:

Upload Speed

Bitrate

Resolution

Framerate

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

* Important Note for High Motion Content. If you are going to stream high motion scenes (i.e. Racing games, some Battle Royale games, etc.) we highly recommend reducing your resolution. High motion content cannot be compressed as much, and can suffer from more artifacting (encoding errors) that make your stream look “blocky”. If you reduce the resolution, you reduce the data being encoded, and the resulting viewer quality is higher. For example, for Fortnite, many streamers decide to stream at 1600x900 60 FPS.

** Important Note for New and Upcoming Streamers to Twitch. Transcoding allows a viewer to view your video on a different resolution, thus requiring a lower bandwidth. Twitch only offers guaranteed transcoding to Partners; non-partners may receive transcoding, but it is not guaranteed. This is important if your viewers are on mobile phones or their internet speed is not as fast. You may want to consider streaming at a lower bitrate and resolution to lower the bandwidth required to see your channel.

RECOMMENDED SETTINGS

These are our recommended settings for OBS Studio 23.0 and up. You’ll want to test and adjust these settings using a private account where you can verify you’re happy with the results.

VIDEO TAB SETTINGS

  • Base (Canvas) Resolution: Set the resolution you normally play at. That is, your desktop resolution (if you play in borderless mode), or the game resolution you normally enter (if you play in full screen).
  • Output (Scaled) Resolution: Enter the resolution appropriate for your Upload Speed and Bitrate, as we discussed in the previous section.
  • Downscale Filter: This allows you to select a downscale filter that will provide a small image sharpness enhancement, at the cost of some encoder workload. NvEnc is very efficient and typically runs at low utilization, so we recommend using this with the Lanczos, 32 samples option for the best quality.
  • FPS: Enter the FPS appropriate for your Upload Speed and Bitrate, as we discussed in the previous section.

OUTPUT TAB SETTINGS

If you want an easy, out of the box configuration, then do the following:

  • Output Mode: Simple
  • Streaming:

    • Bitrate: Enter the Bitrate appropriate for your Upload Speed, as we discussed in the previous section.
    • Encoder: Select Hardware (NVIDIA NVENC).
    • Enable Advanced Encoder Settings: Checked. This makes the next option visible.
    • Encoder Preset: Max Quality. If you are streaming 4K resolution on an RTX 20-Series, you will want to reduce this to Quality, as the RTX cards already run image optimizations that previous generations do not.
  • Recording:

    • Recording Path: This is the directory where the videos will be saved. Make sure the hard drive you select has enough space!
    • Recording Quality: High Quality typically works for most users, but you can change this to Indistinguishable Quality if you have enough disk space or are going to do short videos (about 60 seconds).
    • Recording Format: FLV.
    • Encoder: Hardware (NVIDIA NVENC).

OTHER SETTINGS

There are 2 other things you want to configure to ensure a smooth stream:

  • Windows: Disable Game Mode. This mode reduces the performance of any other program – including programs necessary for streaming - when a game is running.
  • Game: Make sure the game is using less than 90% of your GPU resources. Windows de-prioritizes any background application past that point. You can check your GPU utilization in the Windows Task Manager > Performance tab. To limit GPU utilization: cap FPS in game, run the game in Borderless Windows, reduce game graphics or resolution, or turn V-Sync on.

 

And there you have it! We hope this helps you improve your stream quality and reach your goals. Leave us a comment if this worked for you or if you’d like us to update the guide with other info. Happy streaming!

ADVANCED SETTINGS

If you want to mess around with all settings, here are our in-depth recommendations.

Streaming Settings

  • Output Mode: Advanced. This gives you access to all the settings. Let’s start!
  • Encoder: Select NVIDIA NVENC H.264 (new).
  • Enforce Streaming Service Encoder Settings: Leave this checked, this will ensure that if you enter a wrong value by mistake it gets corrected.
  • Rate Control: Select CBR. This determines the rate at which frames are going to be encoded.
  • Bitrate: Enter the bitrate appropriate for your Upload Speed, as we discussed in the previous section. Keep in mind that some platforms have a maximum bitrate (i.e. for Twitch it’s currently 6000 Kbps).
  • Keyframe Interval: Set to 2. Streaming platforms may limit what you can select here, and most require a setting of 2.
  • Preset: Select Max Quality. This determines how much load we put on the encoder to get more quality. NvEnc is incredibly efficient, so most users can select the maximum setting. If you get encoder overload issues, change this back to Quality. Max Quality and Quality differ in that Max Quality uses 2-pass encoding.
  • Profile: Set to High. Profile determines a group of settings in the H.264 Codec. It doesn’t impact performance and gives access to a set of features that are key to streaming, so this should always be set to High.
  • Look-ahead: Unchecked for most content, checked for low motion games. This allows the encoder to dynamically select the number of B-Frames, between 0 and the number of B-Frames you specify. B-frames are great because they increase image quality, but they consume a lot of your available bitrate, so they reduce quality on high motion content. Look-ahead enables the best of both worlds, but struggles with high motion content as it needs to change too often. This feature is CUDA accelerated; toggle this off if your GPU utilization is high to ensure a smooth stream.
  • Psycho Visual Tuning: Checked. This enables the Rate Distortion Optimization in the encoder, which greatly optimizes the way you use bitrate, improving image quality on movement.
  • GPU: 0. If you have 2 GPUs in your system, you can select which one is used to encode. This is not recommended, as NvEnc is already very efficient and the little gain you can get from using a second card is lost by having to copy the frame to the second GPU.
  • Max B-Frames: Set to 2. For low motion content (i.e. adventure games such as Tomb Raider) you can increase this to 4. B-Frames increase image quality but consume bitrate, which decrease image quality on movement. If you see pixelation or artifacting on your stream you may want to reduce this.

Recording Settings

  • Type: Standard.
  • Recording Path: This is the directory where the videos will be saved. Make sure the hard drive you select has enough space!
  • Recording Format: FLV; or MKV if you use multiple audio tracks.
  • Audio Track: Leave it at 1 for default; you can add more audio tracks if you are using more sources.
  • Encoder: NVIDIA NVENC H.264 (new).
  • Rate Control: We recommend CQ, although VBR with high bitrates will also produce good results but with larger file sizes.

    • CQ Level (CQ): 15 for CQ (or less if you want higher quality).
    • Bitrate and Max Bitrate (VBR): 40,000 Bitrate; 60,000 Max bitrate. You can increase these to 100,000 and 200,000 (respectively) for higher quality.
  • Keyframe Interval: 0 or 2.
  • Preset: Select Max Quality. If you get encoder overload issues, change this back to Quality.
  • Profile: Set to High.
  • Look-ahead: Checked.
  • Psycho Visual Tuning: Checked.
  • GPU: 0. If you have 2 GPUs in your system, you can select which one is used to encode.
  • Max B-Frames: Set to 2. For low motion content (i.e. adventure games like Assassin’s Creed) you can increase this to 4.


ABOUT NVENC

NvEnc is NVIDIA’s encoder. It’s a physical section of our GPUs that is dedicated to encoding only. This means that your GPU can operate normally regardless of whether you use this region to stream or record. Other encoders, such as x264, use your CPU to encode, which takes resources away from other programs such as your game. That’s why using NvEnc allows you to play games at a higher framerate and avoid stuttering, giving you and your viewers a better experience.

 

In the last two GPU generations we have made great improvements to NvEnc, helping deliver best-in-class output quality. NvEnc in the GTX 10-series GPUs provides superior quality than x264 Very Fast, the most commonly used x264 preset. And in the new RTX 20-series, NvEnc performs better than x264 Fast and on par with x264 Medium, a preset that requires an expensive dual PC setup.

One thing that is great about NvEnc on the RTX 20-series is that all GPUs have the same NvEnc with the same performance and quality, from the RTX 2060 to the RTX 2080 Ti. NvEnc also benefits from our own NVIDIA Video Codec SDK, an advanced set of tools that help improve the encoded quality and that we constantly update to help you get the best out of your NVIDIA card.

Finally, if you are using an NVIDIA GPU you have access to GeForce Experience’s Game Filters, which allow you to further improve the image quality of your viewers via software by enhancing color, adding sharpness, or introducing cool effects.

ABOUT THE GEFORCE-OPTIMIZED NEW VERSION OF OBS STUDIO

We have collaborated with OBS to improve support for NVIDIA GeForce GPUs. The new OBS Studio, version 23.0, will leverage the NVIDIA Video Codec SDK, which will greatly improve performance and reduce the FPS impact of streaming and recording. We have also tweaked some of the background settings of NvEnc to improve quality, especially for the RTX 20-Series GPUs.

HOW TO DEBUG PROBLEMS

Streaming can be very complicated, but it’s particularly hard to debug. There are many things at play when you stream, so we are going to try to provide you some help on how to identify what is going wrong and how to fix it.

Components

Streaming uses the following components:

  • Your PC: This includes hardware and software.
  • Local Internet: WiFi or cabled internet + your Router.
  • Your connection: To your service provider.
  • The platform: Twitch, Youtube, Mixer, etc.
  • Viewer’s Internet: Typically Wi-Fi, but can also be 3G/4G.
  • Viewer’s device: keep in mind 35% of Twitch viewers are on mobile.

If something is failing, we want to first identify what component may be failing, so we don’t go crazy trying to fix something that was never broken in the first place. Typically, this means that the first test you should do is a Speed Test to make sure that you don’t have internet problems in your local internet or your connection. Second, make sure the platform hasn’t issued an alert that they are down or are experiencing problems. Then based on what error you get, you start looking at one thing or another in your PC.

How to check what’s happening to the encode

OBS Studio includes a very useful tool: the Stats Window. To bring it up, click on View > Stats. This window will show you Lagged and Skipped frames, Dropped frames, and Encode FPS.

Common Error Types

Stream is missing FPS. For FPS issues, OBS includes an FPS counter at the bottom right of the program. If you have FPS issues make sure that both your content and OBS are running at or above your desired FPS. If your content is the problem, lower the game settings so you get more FPS. If OBS is losing FPS, try the GPU Overloads solutions below. If neither of these are the issue, the problem is likely on the network.

GPU Overloads. To identify this issue, open the Windows Task Manager, go to the Performance tab and click on your GPU. You will be able to see the load on each of the sections of the GPU. If the Video Encode section is above 90% you may be getting encoder overload issues. This is caused by Windows, as it de-prioritizes OBS to give more resources to the game. To fix it, we recommend trying each of these in order until your GPU load is below 90%:

  • Reduce in-game video settings.
  • If you are playing in 4K or 1440p, reduce your in-game resolution to 1440p or 1080p (respectively). Make sure you have the game running in Full Screen mode (and not Borderless Mode) for this to take effect.
  • Cap or limit the game FPS. Some games allow you to do this directly, or you can do it by turning the V-Sync setting on.

In some cases, turning the features Look-Ahead and Psycho Visual Tuning off may help alleviate this problem. To do so, go to Settings > Output, and change the Output mode to Advanced. Then uncheck these 2 options.

Encoder Overloads. You can identify this by seeing an error message in the bottom bar of OBS that tells you that the encoder is overloading. This is extremely rare when using NvEnc. To identify this issue, open the Windows Task Manager, go to the Performance tab and click on your GPU. The Video Encode section (second graph on the left) tells you the encoder load. If it’s above 95% you may be hitting this issue. There are 2 settings that can help resolve this:

  • The first one is changing the Downscale Filter in the OBS Settings, Video Tab, from Lanczos to Bilinear. This has a very minor effect but can put you below 95%.
  • The second one is changing the Encoder Preset in the OBS Settings, Output tab, from Max Quality to Quality.

Image looks very washed out. The most likely issue is trying to push too much quality with not enough bitrate. Consider reducing the resolution, and frame rate (if needed), and try again. If quality improves, then adjust until you find your sweet spot.