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:
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.
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.
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.
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.
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.
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!
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
Any update now that the NDI solution can utilize NVENC and NDI-HX
I haven’t re-tested this with a new version of NDI. I will but it on my list of potential video ideas 🙂
Are you saying that a (1) PC setup running NVENC (new) is better than using a 2 PC setup and NDI?
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.