Question / Help Recording at high bitrates; x264 vs QuickSync vs NVENC

d0dUxDJ

Member
I have been using OBS for a while, and also been trying x264 and NVENC. I noticed a lot of people were praising x264 for streams where bitrates are generally low, because it's the best looking at low bitrates. I haven't found someone asking for high bitrate local recordings though. I have a youtube channel where I usually upload 1080p 60 fps videos, unless it's a demanding game and I can't run it at that resolution while recording (Overwatch for example is very much on that border). For non-demanding games, this is a non-issue. I could just go with x264 at like medium and be done with it (Hearthstone, retro gaming in general). What about those semi-demanding to demanding games though? Overwatch, CS:GO (which, for whatever reason, gives me choppy videos while Overwatch doesn't), GTA V etc. What would be the best out of the three encoding options for this kind of games?
If I have missed a PSA or general thread for this please redirect me there.

My specs (which I'm going to upgrade sometime soon):
i5 3570k @ 3.9 ghz
MSi GTX 670 Power Edition OC version

I have an ssd but I don't record on it, I have a WD Caviar Blue.
 
Last edited:

Boildown

Active Member
If you can do VeryFast, then NVEnc is worse for just about any streamable bitrate. QuickSync is tougher to figure out, I haven't seen any comparisons since the i7 4770 came out, and I think it was generally better than VeryFast. The later releases are probably even better than before, but I guess they could be worse if Intel decided to make different tradeoffs.

For local recording, I'd just use NVEnc and crank up the bitrate. NVEnc has the lowest CPU impact of any of the encoding methods, and hard drive space is cheap.
 

d0dUxDJ

Member
If you can do VeryFast, then NVEnc is worse for just about any streamable bitrate. QuickSync is tougher to figure out, I haven't seen any comparisons since the i7 4770 came out, and I think it was generally better than VeryFast. The later releases are probably even better than before, but I guess they could be worse if Intel decided to make different tradeoffs.

For local recording, I'd just use NVEnc and crank up the bitrate. NVEnc has the lowest CPU impact of any of the encoding methods, and hard drive space is cheap.
Thanks a lot for the reply! Basically x264 for streaming if I can manage the veryfast preset (which I could maybe do for CS:GO, but problem here would be my connection. I can't really handle streaming right now... bless my ISPs). NVEnc for local at high bitrate, I gotcha. Would something like 50k bitrate be enough for very, very fast paced games? E.g. Overwatch playing Genji, flying around everywhere (example: https://www.youtube.com/watch?v=VYG7Dwpt9c0), visuals turn around very fast and I'd like it to be somewhat similar to that video. I'm going to test it this way right now while waiting for a response. I will try out QuickSync with my old 3570k, maybe it's similar to NVEnc with my integrated gpu. Thanks again!
 

Boildown

Active Member
Would something like 50k bitrate be enough for very, very fast paced games?

I assume you mixed up your unit prefix. 50Mbps would be a reasonable number, although on the high side at 1080p60. 50 might be fine for 1440p I suppose. I do 20 or 30Mbps for games like PUBG, Star Citizen, and Planetside 2, at 1080p60, using NVEnc on HQ preset.
 

d0dUxDJ

Member
I assume you mixed up your unit prefix. 50Mbps would be a reasonable number, although on the high side at 1080p60. 50 might be fine for 1440p I suppose. I do 20 or 30Mbps for games like PUBG, Star Citizen, and Planetside 2, at 1080p60, using NVEnc on HQ preset.
I meant 50 k as in thousand (of kbits), since you put in 50000 in OBS; I guess I'm too used to old MMOs where you use k or kk to define amounts of currency, my bad ahah. I'm trying to get the absolute best quality source recording while minimizing impact, so I'll try the 50Mbps and see how that goes. You mentioned NVEnc on HQ preset, do you use variable or constant bitrate? I was using CQP at like 20ish if I'm not mistaken, with defaults on the rest (meaning: I was not setting a bitrate value). Should I switch to VBR/CBR? Does it make much of a difference? What about other settings on the page? I've read around the forums, general consensus seems to be profile main for compatibility, level auto (which I'm unsure what it's for), gpu well depends on what your setup is (mine would be 0), but nothing consistent about b-frames. Should I change the value? It's currently at 2.
Edit: Oh and the keyframe interval. General consensus on that seems to be 2, but I'm not too keen on the mechanics of the setting (plus they were all talking about streaming).

Sorry for all the questions, I'm trying to get a good grasp.
 
Last edited:

Harold

Active Member
At sufficiently high btirates, you can't tell the difference.

If you're recording do NOT use bitrate number based bitrate selection, use quality based ones like CRF or CQP.

You probably have no reason to be using advanced output mode, so switch to simple output mode, set recording quality to indistinguishable and try encoders until you get one that plays nice enough with your system for you to be happy.
 

d0dUxDJ

Member
At sufficiently high btirates, you can't tell the difference.

If you're recording do NOT use bitrate number based bitrate selection, use quality based ones like CRF or CQP.

You probably have no reason to be using advanced output mode, so switch to simple output mode, set recording quality to indistinguishable and try encoders until you get one that plays nice enough with your system for you to be happy.
I don't really like simple output, I use multiple audio tracks, and I like setting video just how I like it. I'm just a bit new on encoding, that's all. If you could lend a hand with the questions I've asked, that'd be great. Basically what you're saying is I should avoid bitrates and stick to CQP (which I was doing before). What would be a good value for a great looking local recording? Don't mind high filesizes. I'm specifically going to edit some of the content. In this case, it'd be Overwatch. With great quality I mean something as close as the content I see while playing, probably similar to simple mode's indistinguishable, if I had to guess (didn't try). I just couldn't help but looking at your signature and I can't tell if that's supposed to be a joke or not, pretty sure it's not though, so I'm going to ask you (although I am already pretty sure of the answer, confirmation never hurts): Would recording a video in .mkv and then remuxing that to .mp4 make it lose quality? If not, I might just stop using .mp4 for recording.
 

Harold

Active Member
What would be a good value for a great looking local recording? Don't mind high filesizes
Around 15 is bordering on lossless picture quality.

Would recording a video in .mkv and then remuxing that to .mp4 make it lose quality? If not, I might just stop using .mp4 for recording.
it would not. The remux process just takes the audio and video tracks out of the mkv container and puts them in an mp4 container. No modifications to those tracks.
 

d0dUxDJ

Member
Around 15 is bordering on lossless picture quality.


it would not. The remux process just takes the audio and video tracks out of the mkv container and puts them in an mp4 container. No modifications to those tracks.
Thanks a lot Harold! I will set the CQP @ 15 and I will start using .mkv. Is there anything fancy I should know regarding the other settings?

Semi-long paragraph follows, you can skip to the tldr if you can't be bothered.

As I said in a couple posts above, I see the general consensus is main profile for compatibility with some mobile devices (?), keyframe interval at 2 for twitch related limitations (but since I'm recording, I just left at 0 because I couldn't find any more info), preset, which someone recommended HQ for in this thread, level, for which I found this, to my understanding it's best to leave it at auto, two-pass encoding, I found this thread about it but couldn't gather much info from it (currently on in my settings), and finally, b-frames, which, if my research was done correctly, reduce file size while keeping the same quality, requiring more processing power (without getting into details of how it actually works. It was actually a pretty interesting read), current value: 2.


TL;DR: Anything else worth mentioning that would be different from default in order to achieve said high quality? Regarding: keyframe interval, preset, profile, level, two-pass encoding, b-frames.
 

d0dUxDJ

Member
The keyframe interval of 2 is ONLY for streaming, not for recording.

https://obsproject.com/forum/resour...lity-recording-and-multiple-audio-tracks.221/ covers most of what you're after.
Thanks a lot for that! I'm going to follow the guide and set recommended NVEnc values and set keyframe interval 0, level auto, b-frames 2 (which should be default) which aren't mentioned.

Lastly; when load is not an issue (I can almost fully dedicate CPU and/or GPU to encoding), which encoder gives the best image quality, again disregarding filesize? From what I gather, x264 is better for streaming (quality is better for the same bitrate of other encoders), is that still true for local recordings? And something that I've never been able to find online, does changing the x264 preset lower than veryfast actually change image quality significantly, to the point where it could be a viable setting to change if I didn't care about CPU load? It appears that anything slower than veryfast is "unnecessary", at least that's what I was reading about.

I only asked about this too because I mainly record either "demanding" (for my rig) games like Overwatch, or RPG Maker games / retro games in general, which don't really impact my rig.

Thanks again, this should be my last question :) You've been a massive help.
 

Harold

Active Member
In the local recording scenario with quality based bitrate selection, x264 will offer the smallest files at record time. Quality will likely end up being the same.
 

koala

Active Member
Each encoder is able to produce the same quality. What differs is the filesize required to achieve a given quality. For example, if you use the simple settings of obs with the "indistinguishable quality" setting, this will produce the same quality regardless of the encoder - only file sizes will differ a bit.

For recording, it makes no sense to use x264, because this is so CPU demanding, that the performance of the application/game will suffer. Lower frame rates, for example. The resulting quality is worse than if you used a hardware encoder in the first place. If your game already uses 80% of your CPU, there is no CPU power left for encoding with x264. For recording, use a hardware encoder like nvenc. This uses negligible CPU power, so the game gets the full power of the CPU.

Indistinguishable quality with nvenc will produce bigger files than Indistinguishable quality with x264, but the visual quality is the same. And since you will probably post-process your footage anyway, you can use x264 as encoder for the final rendering by your video editing software, resulting in a much smaller file size of your final product.
 

d0dUxDJ

Member
Each encoder is able to produce the same quality. What differs is the filesize required to achieve a given quality. For example, if you use the simple settings of obs with the "indistinguishable quality" setting, this will produce the same quality regardless of the encoder - only file sizes will differ a bit.

For recording, it makes no sense to use x264, because this is so CPU demanding, that the performance of the application/game will suffer. Lower frame rates, for example. The resulting quality is worse than if you used a hardware encoder in the first place. If your game already uses 80% of your CPU, there is no CPU power left for encoding with x264. For recording, use a hardware encoder like nvenc. This uses negligible CPU power, so the game gets the full power of the CPU.

Indistinguishable quality with nvenc will produce bigger files than Indistinguishable quality with x264, but the visual quality is the same. And since you will probably post-process your footage anyway, you can use x264 as encoder for the final rendering by your video editing software, resulting in a much smaller file size of your final product.
This is what I thought but was never sure about, solved all my doubts basically. I usually edit videos in Vegas (trying to find a sweet spot that doesn't lose me quality...) and good handbrake settings that work perfectly for me, filesize gets annihilated and quality stays the same as source. Although the source is no longer that good after Vegas fucks it up, but oh well. I think I should check other forums for my Vegas issues.

Thanks to everyone that replied here, you've been great :)
 

Boildown

Active Member
What I do with Vegas is render an uncompressed AVI as an "intermediate file" and then use that AVI as the input to Handbrake for actual compression/encoding. The intermediate file AVI is huge (depending on the length of the clip) since its uncompressed, but I can delete it when I'm done to get that hard drive space back. Some people say to use the technique to render directly out of Vegas into Handbrake, but my way makes it so that I only have to render out of Vegas once. It usually takes me many tries with Handbrake to find my favorite compromise of quality and filesize, and then I usually make multiple renders anyways: different settings for YouTube, internet downloads, and archival storage. This makes it doubly nice to only have to render out of Vegas once.
 
Top