NVENC Performance Improvements (Release Candidate)

Status
Not open for further replies.
#61
You have to use NVENC on the GPU that OBS is running on. Furthermore, dual GPU systems in general end up leading to much worse performance when it comes to using OBS due to the need to copy textures back and forth from GPU to GPU. Trying to run the game on one GPU and running OBS on another GPU is actually a bad idea for this reason, and isn't even really possible.
Okay, I understand the reason - was just wondering because it was possible with the previous build.
 
#62
The primary purpose of this beta is to test the performance improvements described in the OP. There are a few unrelated improvements also included in the build just because they were things merged prior to beginning the beta but after the last release, but they shouldn't affect testing of the new NVENC code. The visual quality is pretty much completely up to NVENC I would not expect any changes in visual quality between the beta and release.


Thank you for the feedback, that does help.


Largely, yes. The main issue we're trying to work with is that this build can have these stuttering issues if GPU usage is maxed out, or nearly maxed out. Perhaps a better way to fix the problem is to limit FPS in the game you are playing.


You have to use NVENC on the GPU that OBS is running on. Furthermore, dual GPU systems in general end up leading to much worse performance when it comes to using OBS due to the need to copy textures back and forth from GPU to GPU. Trying to run the game on one GPU and running OBS on another GPU is actually a bad idea for this reason, and isn't even really possible.
Ok thanks. Can we test different resolution in this beta? I mean, can i set 900p instead 1080p and trying it? I'm asking that because i read somewhere here, that this beta doesnt go under 1080p for the rescale.
 

dodgepong

Administrator
Forum Admin
#63
Yes, you can try different resolutions. The issue you're referring to is with using the encoder itself to do rescaling. Usually in OBS you can downscale the resolution in Video settings, but sometimes people also downscale on the encoder output settings because they want to record at a different resolution that they stream at. This beta currently does not support that.
 
#64
Yes, you can try different resolutions. The issue you're referring to is with using the encoder itself to do rescaling. Usually in OBS you can downscale the resolution in Video settings, but sometimes people also downscale on the encoder output settings because they want to record at a different resolution that they stream at. This beta currently does not support that.
oh ok thanks!
 
#65
Yes, you can try different resolutions. The issue you're referring to is with using the encoder itself to do rescaling. Usually in OBS you can downscale the resolution in Video settings, but sometimes people also downscale on the encoder output settings because they want to record at a different resolution that they stream at. This beta currently does not support that.
Will it be supported in the final release? Would love to stream with this new NVENC
 

dodgepong

Administrator
Forum Admin
#70
Just to confirm this new implementation does not allow someone who is streaming playing at 1440p to rescale it to 1080p or 720p?
That is incorrect. You can still rescale in Video settings, which is where rescaling should ordinarily be done, because this scaling is done by the renderer. I'm saying that this *encoder* doesn't rescale. This should only affect people who are simultaneously streaming and recording at different resolutions.
 
#71
That is incorrect. You can still rescale in Video settings, which is where rescaling should ordinarily be done, because this scaling is done by the renderer. I'm saying that this *encoder* doesn't rescale. This should only affect people who are simultaneously streaming and recording at different resolutions.
Thank you for the clarification.
 
#72
That is incorrect. You can still rescale in Video settings, which is where rescaling should ordinarily be done, because this scaling is done by the renderer. I'm saying that this *encoder* doesn't rescale. This should only affect people who are simultaneously streaming and recording at different resolutions.
Last I heard, it will not. You will still be able to do this with the old NVENC implementation, which uses FFmpeg (which is what does the rescaling).
So is it planned to support in future ?
 
#73
How to use 22.0.2 game cap with the new build:

I noticed some issues with the game capture itself. Someone suggested using the 22.0.2 game capture build so I did some tinkering and I think this is the easiest way to do it.

1. Do a clean install of 22.0.2 (on ssd preferred)
1.jpg


2. Browse to your "obs-plugins" folder
2.jpg


3. Copy/move the "win-capture.dll" and "win-capture.pdb" to a safe folder (you will need them later)
3.jpg


4. Unzip the test build in the obs-studio folder
4.jpg


5. Find the "win-capture.dll" and "win-capture.pdb" files we originally copied, and replace the ones from the test build
3.jpg


I hope this helps! Will be testing tonight!
 
#75
so will this fix my issue with obs not working well with my 2080 card? in obs i keep dropping fps and i can no longer stream anymore. i had a 1080 and everything was working great. my PC specs are 2090, 32gb of ddr4, i7 8700k not oc, 750x psu. all this happened when i upgraded my 1080 to the 2080. with some of my games i have to have vsync on.
 
#78
The link to the latest beta build is in the OP (nvenc-test-6).
The finale release is suppose to be released at the end of the month like Nvidia said?

"We have been collaborating with OBS, the industry-leading streaming application, to help them release a new version with improved support for NVIDIA GPUs. Scheduled to debut at the end of January, the new OBS will reduce the FPS impact of streaming by up to 66% compared to the currently shipping version."
 
#80
You have to use NVENC on the GPU that OBS is running on. Furthermore, dual GPU systems in general end up leading to much worse performance when it comes to using OBS due to the need to copy textures back and forth from GPU to GPU. Trying to run the game on one GPU and running OBS on another GPU is actually a bad idea for this reason, and isn't even really possible.
I've been using this sort of setup for almost half a year now.
Initially in 2013-2014 or so, I was using NVENC directly on the card playing the game.
This had some frame drops when streaming at 60fps.
The card at the time was a GTX680.

When I started streaming again I used QuickSync for sometime but decided the quality wasn't good enough.
So I used a complicated setup where I would record with QuickSync at 50,000kbps locally, send it over RTMP to a Linux VM in my Homelab with FFMPEG to encode with CPU, and then send it to Twitch. The quality was decent in some games; but anything with lots of grass and foliage was pretty bad. I also got tired of messing with the MASSIVE amount of custom flags for FFMPEG. Though this method was the best in-terms of no FPS-loss in-game.

My current GPU is a GTX1080. I did find that there was some noticable FPS loss in-game when streaming directly on my 1080, but I later noticed that you can change which GPU is used for NVENC encoding; so I grabbed an old GTX750 and have been encoding on that since. The GPU usage on the GTX 750 will be a solid 30% the whole time. Too bad it can't use more than 30% for NVEC. My brother recently got a new card so I'll be swapping the GTX750 with a GTX1060 tonight or sometime very soon. After a decent amount of Googling, it seems the newer the GTX, the better encoding done by NVENC. Especially with regards to text and motion; I look forward to seeing the improvement.

With ALL that said, even if the game itself is running at a smooth 60fps; unfortunately the stream still seems to suffer FPS loss. This is due to the OBS preview using a 5-10% usage of the primary GPU; regardless of selected encoder. If the preview window lags, the stream that is sent to Twitch is also laggy.
I've start to somewhat mitigate this by disabling the preview, but some of the GPU is still used even when preview is disabled (2-7%)
This can be further mitigated by putting OBS into the SystemTray instead of leaving the window open.
Though this is only viable to me due to using an Elgato StreamDeck to switch my scenes.
Unless there are further ways to improve performance that I'm not aware of?

I'm hoping this performance increase makes single-card encoding more viable. I know it's more pointed towards the 20xx series cards but everything helps. With that said, why would you say that "it isn't even really possible" when there's a GPU selection within the NVENC settings? I've only seen performance gains from this method. Instead of both the game AND OBS lagging, it's only OBS that loses some frames; though this will happen regardless of using single or dual cards due to preview lag.

Unless you're suggesting that the entirety of OBS is rendered on the second GPU? I've tried this method by manually selecting the secondary GPU for OBS in the NVIDIA Control Panel settings. OBS unfortunately still uses the primary card.
There's also the Windows method where you set OBS to use a "low-powered device" (aka the integrated-gpu) for rendering (not to be confused with QuickSync), this works but breaks webcam usage and some games.

On a side note, how does the new "Max Quality" Two-Pass differ from the already existing Two-Pass encoding option?
Why was the checkbox removed entirely? What if a user wants to use low-latency but also have Two-Pass?
I'm not necessarily upset about this change, but I am curious.

(I apologize in advance at the length of this reply. prior to this I had thought of making a new thread but dumped most of it into this while asking questions relevant to the post)
 
Status
Not open for further replies.
Top