Best OBS Encoder to Improve Stream Performance: Comparing NVENC, NDI, and x264

In this video, I discuss the in-game performance of Fortnite, CS:GO, and PUBG when streaming using three different approaches: NVENC, NDI, and x264. All three approaches come with their benefits and disadvantages, but only one approach is king when it comes to the highest possible in-game performance while live streaming: NVENC. This is especially true for the new NVENC implementation on Turing GPU’s.

For this inter-comparison, I am running the games at 1080p resolution and use three different in-game quality presets (low, medium, ultra). I am streaming at a resolution of 1600×900 and at 60FPS. The encoder settings for NVENC and x264 are shown below:

Stream settings for encoder inter-comparison

Let’s briefly discuss those three approaches beginning with x264: In this case, we use the CPU to encode our gameplay. Each frame therefore has to be transferred from the GPU to the CPU, get compressed and finally uploaded to Twitch.tv / YouTube. Both the transferring of frames from our GPU to the RAM and the encoding of the live stream put a lot of stress on the CPU, resulting in generally much lower performance than without streaming.

Streaming using x264

Next, when streaming using NVENC (new), frames do not need to be transferred other than from the framebuffer to the Nvidia Encoder chip on qualifying GTX (later than 560 series) or RTX cards. This comes with the benefit of not requiring a transfer of frames and additionally the NVENC chip is only used for encoding / decoding of video and is not utilized for other tasks, generally resulting in a much lower performance penalty compared to x264.

Streaming using NVENC

Finally, NDI requires a secondary PC and is therefore not really considered an encoder! It basically acts as a transfer protocol to transfer your OBS preview from one computer to another. Since this still requires some CPU performance, it still comes with a slight in-game performance loss.

Streaming using x264

Now lets discuss the results! In Fortnite, we get a clear descrease in FPS when going from NVENC, to NDI, to x264, especially at medium and low in-game settings. On the other hand, at maximum (or epic) settings, NDI is slightly more performant than NVENC. This is somewhat expected, as Fortnite is a very GPU intensive game at maximum settings, and the encoder struggles to copy over the frames from the buffer.

Fortnite encoding performance

Almost identical results are found in PUBG, with NVENC winning over NDI and x264 at minimum and medium settings but NDI coming out on top at maximum settings. Again, PUBG at maximum settings is pegging the GPU at 100%, making it more difficult for NVENC to properly to its job.

PUBG encoding performance

Finally, mixed results are found in CS:GO. As expected for a primarily CPU heavy game, x264 leads to a catastrophic decrease in performance. However, NDI is more performant than NVENC in both high and medium settings. Take this plot with a grain of salt though, as I likely have messed up either the labeling off the different benchmarks or forgot to enable NVENC on the minimum settings run… I will be uploading a new plot once I have time to re-test CS:GO!

CS:GO encoding performance

Thanks for reading this article, and don’t hesitate to comment below if anything is unclear or you have additional questions about streaming using NVENC, x264, or NDI. Note that I have no experience with capture cards or Intel QuickSync – so I can’t help you with those approaches!

Cheers,
Roman

4 thoughts on “Best OBS Encoder to Improve Stream Performance: Comparing NVENC, NDI, and x264”

    • Hi Zack!
      Yes, in most instances NVENC is superior over NDI in terms if in-game performance. Only in situations with very high GPU usage, NDI might provide better performance.

      Reply

Leave a Comment

Dear reader

Ads allow me to dedicate a significant amount of time into the creation of valuable content both on YouTube as well as on this website.

Please support my work by disabling your ad blocker or whitelisting this site!

Alternatively, you can remove all ads on this site by becoming a supporter for as little as 2$/month. Thereby, you will directly support my content on YouTube and on this blog!