Youtube Upload and Streaming Quality Notes.

#111

Size reducing as in disk space? or resolution?

and is the goal to keep an high quality archive? or is this going straight to youtube and then the original doesn’t matter?

Do you know what the bitrate is, etc?

*you can grab media info, which will allow you to view video file stats, with a right click of the file

#112

Also, what are final cut’s options like for H.264? Does it give you options to use your GPU? Does it give you options for “very fast” “slower” etc? Does it give you options to select the H.264 profile?

#113

I’m gonna need to export again, I cleared the larger tests out yesterday. There’s finer preferences and presets I can create but atm main send options come to

Computer does inherently I’m assuming best encode but a given larger size compared to the other publishing options. Mastering Video and Audio 175% the best publishing ones.

#114

Apple’s VideoToolbox API (the equivalent of DXVA on Windows for providing direct access to the GPU encoder) is kind of bad, you can use https://www.voukoder.org/ to get direct access to ffmpeg’s GPU encoders if you’re using Premiere on Windows but in general most commercial NLEs don’t have great support for GPU encoding because CPU encoders can generally produce slightly higher quality per bitrate (nvenc has only very recently gotten close to parity with x264 and x265 and it still doesn’t autotune as well so you need to know what you’re doing) unless you need realtime encoding/decoding with minimal CPU impact, which is not a common use case for video production

1 Like
#115

I’m guessing with loose math here. But I think 3GB for 25 minutes is about 2,000kbps bitrate.

Which is really low. That’s like what you’d use for streaming 30fps video, on good hardware, with some quality settings cranked up to counter the low bitrate.

If you can deal with the render times, I would export your video from final cut with a common lossless format. And then compress it with something which exposes more options for you.

Handbrake works well and allows you to use your GPU for faster compression.

However, this thread is largely about how we have to trick youtube to give us better quality. youtube re-compresses everything you upload. And it does it based on resolution and framerate. Higher resolutions and higher framerates, get more bitrate. And anything lower than 2K resolution, gets butt for bitrate.

Basically, I suggest upscaling your video to at at least 2K/60. If not 4K/60 (even if its a 30fps source. frame double it to 60). Before uploading it to youtube. and using a fairly high bitrate. Because we want youtube to compress from as high a quality original, as possible. Some people with amazing internet connections just upload lossless files…

I’ve been using a program called Video Enhancer 2, which does very good quality upscaling. Its a little bit finicky, but I’ve got it figured out. Its totally free. even after the trial period, you just give your email address and they hand you a free code.

However, it runs on your CPU, so it will take a long time. I’ve been using that @ 80,000kbps and the quality is really great.

1 Like
#116

Hmm good foods for thought, really

that’s what I should be doing then shift all the tuning to ffmpeg or handbrake, which I’m plenty used to.

I expect to be a bit aggravated with my first uploads of this project to streaming sites, so the core stuff here had always been interesting to me. Yeah gonna go full lossless then boil down to a mid, high, and high + for comparison.

#117

If you are interested in the upscaling, just try pluggin your lossless file straight into video enhancer and skip handbraker or whatever. Because you’ll be compressing to H.264 as you upscale, with video enhancer 2.

or if final cut will let you upscale on export, that would be cool. upscale to lossless, then compress afterward.

scroll up to see my most recent comparison post, with Goldeneye source.

#118

Thoughts and frustrations. And then some notes on quality comparisons between different hardware for encoding.

I’ve been messing around a whole lot recently with OBS, for streaming. With a particular interest in “low” bitrate streaming, under 4,000kbps.

My experiences with OBS have been strange and frustrating (Not blaming them for it. Simply noting my experiences). The biggest issue, was something I was only able to quantify after hours of experimentation and vague comparison to articles and videos of streaming knowledge, from others.

I have been using a Radeon HD7870 for the past 7 years. Even though that GPU family is the basis for two of the current consoles and both consoles can stream: something has happened on the PC side. It seems the drivers are antiquated, in certain respects.

In short, on my system, I just could not reproduce the general quality and speed which I’ve been seeing in comparison articles and videos. As well as lurking forum posts and even actual streams. It didn’t matter if I was using the CPU for encoding, Quicksync, or the encoder chip in my videocard. All of them seemed to be under performing. I could not do a 720p 60fps stream/record, in any game, with Quicksync, CPU, or GPU. Unless I used some of the absolute lowest quality settings. Which looked awful. Even downscaling was itself a performance hit, offsetting some of the speed benefit I should have been getting, from encoding a lower resolution.

All of my testing suggested that OBS was having relatively more difficult time interrupting the frames from the videocard, in order to encode them, add overlays, downscale, show the preview window, etc. Simply disabling the preview window, gave me a notable boost in performance. Once upon a time when Dark Souls 1 and 2 were new games on PC, I could used DSFix and GeDoSaTo to downscale, with basically zero performance from the scaling, itself.

It seems that either the way the drivers for these old cards is antiquated, or OBS isn’t coded well for the way they present their frames. or a combo of the two.

I basically confirmed my thoughts, because I just installed an RTX 2060 yesterday and my CPU performance in OBS is WAY better. Like twice as good. Streaming at 720p/60 is pretty much no issue, at realistic quality settings. Even 1080p is now viable. I’m now aligned with the performance suggested by all those videos and articles which I have looked at. And you can run Soul Caliber 6 at full speed on a single core. So, its nothing to do with the games I’m using, over taxing my hardware. Dark Souls 2 runs at 720p/40 on my laptop with 2013 Intel Graphics. So, my desktop barely leaves idle temps, with that game. But I couldn’t do a 60fps stream, until I swapped my videocard for something modern.


Now, about quality. I’m interested in “low” bitrates for streaming. Under 4000kbps. I’ve been doing most of my testing around 3000kbps. These low bitrates really expose the compression capability of each different piece of hardware. In OBS, you can encode your stream on your CPU cores, via Intel Quicksync, via Nvidia GPU, and via AMD GPU. They all look different, have different performance considerations, have different settings for quality, and can vary (sometimes a lot) between different games.

Before anything else, whatever encoder you use, you should be using “high” profile. Unless you are very concerned about your viewers using older smartphones/tablets/TV apps which only support “Main” profile or even only “low” for really old stuff. “High” profile enables some options which help with compression/quality per bit. Which I have found to be noticeable, even over “Main”. Not as large a concern at higher bitrates. But at lower bitrates, it seems to be a thing.

X.264/CPU encoding: In terms of varying between different games, X.264 is the most agnostic/has the least variance. Generally speaking, even using realistic settings for a quad core, its the best compression per bit and the most consistent quality at lower bitrates. However, the image quality tends to be on the soft side. Unless you start stacking some special quality options. But, X.264 tends to show less macroblocking, at any given bitrate. Especially if you use “faster” CPU preset or better. So, what it may lack in sharpness, it balances with a more stable image.

X.264 is super mature and has a ton of tweaks for quality, which can further maximize compression per bit and detail. It also has a bunch of settings which you can use to tune for different games (darkly lit/dark colors Vs. brighter, etc). However, the basic presets and “tune” options are very good and I would recommend just using those unless you have a specific game which you are really trying to cater towards or have a very specific quality issue to overcome. There are also some things you can turn off, to gain a lot of extra performance to keep a stable 60fps on your stream. As someone who has spent hours and hours laboring over this stuff, Even at 6,000kbps, there’s only so much visual quality you can gain. After a point, its more about speed.

In particular, I have found the “SSIM” tune and the “Animation” tunes to be very good for visual quality in games. or having no tune option selected at all. These should be good for most things. However, feel free to ping me in this thread, for suggestions and tweaks.

The potential problems with encoding X.264 on your CPU is that it can be a large load on your CPU. So, trying to play a game and encode at the same time, can be a tough balancing act. If the game is particularly demanding, you may not have enough performance to share between the game and the stream. And as you add options to X.264, it gets slower.

The faster paced a game is, the more difficult it is to compress quickly. More motion to track per frame, demands more hardware performance. And of course the higher compression quality you try to use, the more power you need from the CPU. Which can affect even games which don’t require much from the CPU. This is why many streamers have a separate PC to handle the encoding, or are using CPUs with more than 4 cores. So that they don’t have to compromise on quality options.

And if X.264 has a visual weakness, its with really fast motion or visual affects which affect the entire screen (so, lots of motion). Stuff like full screen ripple effects, underwater distortion, etc, exposes some visual weakness in X.264. It can struggle to keep these visuals looking smooth and defined. Often negatively affecting the clarity of whatever is behind these effects, in the frame.


AMD’s GPU hardware encoders: AMD has a few issues with their hardware encoding. First off, they keep changing their encoder hardware. Sometimes it gets a little better, sometimes it gets worse. Its a strange thing, that. As such, OBS doesn’t cater well to AMD encoders. I think in general, but also because AMD presents a constantly moving target, with their hardware.

I have no idea what the quality is like on many of their cards. On my 7870 at the afore stated lower bitrates, there is a lot of granular macroblocking. However, with really fast motion, it tends to focus more of the bitrate to the center of the screen, where your character is. Therefore, even amongst all of the blocking, there can be a pleasing solidity to your character under fast motion. Also, it seems to do well with those full screen effects such as ripples, which I said X.264/CPU can struggle with. And its good with alpha effects. But its not good at all, for slower paced games. The encoder seems to have a lot of trouble in locking down fine details which should be viable in a slower paced game. There are actually a lot of settings exposed for my 7870, OBS. However, it seems OBS struggles to access its framebuffer to actually do the encoding at acceptable speeds.

AMD just released the new 5700 videocards. They supposedly have a new and improved encoder chip on them. However, preliminary tests have awful visual quality. I suspect this may be due to streaming software not yet taking specific advantage of the new chip. I think they are probably just using the old AMD code paths to access the new chip. It remains to be seen how this will end up. AMD hasn’t been too vocal about it, either. They only briefly mentioned the new encoder chip, at E3, for example. *One of AMD’s VP’s has heard this from youtubers/streamers and put a team on improving the situation.


Intel Quicksync (revised opinion)

Quicksync is on most of Intel CPUs. Its a separate portion of the CPU, from the main CPU cores. Using it does use some resources from your CPU cores (it uses system RAM as VRAM. CPU time is needed to swap that data), but, not as much CPU as using the X.264 CPU encoder. On a quad core, its like half the CPU resources. Quicksync is quite fast. You should be able to do 60fps captures at least at 1080p.

Its visual quality can vary noticeably, from game to game or even different in-game lighting conditions. Due to this, it can be worth testing on the game you are trying to stream. to see if it is a good match. Whereas X.264 is generally pretty consistent across different visuals. Something really nice about Quicksync, is that the overal image quality retains a lot of detail and sharpness. Generally more than NVENC. And you’d have to really tweak X.264 and use a preset better than (Faster) to achieve such sharpness and overall detail. It also compresses colors more accurately than NVENC.

The big problem with Quicksync is that it doesn’t handle really fast motion well. And motion in general, can cause a strange combing effect on certain aspects of the picture. Usually flat areas with less details and more brightness. the sharpness of its image quality also makes blocking more apparent than say, X.264. Quicksync generally needs relatively more bitrate, to handle faster motion without losing details in the motion and to minimize the combing effect. However, once you hit 6,000kbps bitrate, the negatives are minimized pretty well. And the overall sharpness, color, and detail, is really nice. I came away pretty surprised after my tests today. And may find myself using Quicksync more often.

I recommend Quicksync for slower paced games or games where you really want to show off the details. I think even something like Bioshock or Halo, would be slowish enough, that the negatives wouldn’t push you toward a different encoder (although the combing effect can be distracting if your particular game shows it more). It would should be excellent for adventure games, TCG card games, etc. I would recommend trying it for slow paced games, rather than messing with X.264. The detail and sharpness is just so easily attained. You have to work a little harder, with X.264


NVENC encoder via Nvidia Graphics cards.

I just got my first Nvidia card, since like 2007. I’ve only had it for a couple of days. But already, testing the NVENC encoder has been pretty interesting.

First thing to note is that from what I have read and seen, Nvidia cards before the Geforce 10** series (1060, 1070, 1080), have noticeably lower visual quality per bit, for encoding. And Geforce 10** and 20** (1650,1660, 2060, 2070, 2080) have better compression quality and very similar in quality to eachother. Its not a large jump from 10** series to 20** series. The newer 20** series do have a small bump in overall sharpness of details. Otherwise, they are very similar in encoding quality.

Using NVENC has been interesting, because it exhibits a much wider range of behavior, from game to game. Final Fantasy 15 (I used the benchmark demo) seems to be a best case scenario. Where I got as good of results as you could ever expect. The compression quality NVENC does on that game, is remarkable.

However, Obduction, is just ok. Losing to X.264 in compression per bit, there can be some more “muddy” parts of the screen, with distant objects. Quicksync again has more detail and better colors. But the combing still shows up. NVENC’s weakness with colors really showed up with Obduction, as there are many areas in the game with little color variety to distract you from the inaccurate presentation.

Dark Souls 2 faired similar, overall. Motion on your character is a bit better with NVENC. But, lots of blocking in the skies and “flat” less detailed areas of the screen. Easily fixed with X.264 via CPU.

Soul Caliber 6 is interesting as well. NVENC does a really great job of keeping a solid visual feel to the characters and the high amount of screen motion for that game. Better than X.264 CPU, in many respects. Characters appear more “solid” and with more “depth” while in motion. And full screen visual effects and fades fair much better. Overall detail is lower. But the trade for the solidity and clarity in motion, is a preferrable advantage for something like Soul Caliber. And likely for a faster paced FPS, as well. I think it probably has algorithms which detect motion and prioritize bits to those parts of the screen.

Comparing frame by frame during high motion with NVENC: SC6 characters have a lot more frames where the characters appear high quality Vs. Quicksync and even X.264. those two encoders tend to pixelate as soon as motion gets really fast. You have to pump up the options to overcome it, with X.264. Quicksyncs only answer is more bitrate. As soon as you stop moving a lot, Quicksync puts more details into the stages. But for this game, NVENC is the superior choice. Even at 6000kbps, I think NVENC has the edge. Due to the importance of motion for this game.

However, in Soul Caliber 6, the skies and clouds do show a fair amount of blocking with NVENC. And if you look at your character frame by frame, the encoder sometimes culls chunks of your character. Like segments of their arms or weapons can be completely missing in still frames. Which I have not noticed with the other encoders. But you don’t notice when actually playing. Its interesting and says a few things about how to allocate screen details, for actually perceived visual quality.

I tested it on Dirt 3 with a snow course, compared to Quicksync and X.264. Quicksync had the highest general detail. Especially on the track surface and on the cars themselves. But the snow blasting behind the cars had that combing effect and some blockyness. X.264 had a softness to it, but had the least blocking. NVENC actually had more overall detail compared to X.264. Due to its positive abilities with high motion. Trackside details had more detail. Snow blasting behind cards looked natural and clear. Cars looked solid.

OBS and Nvidia seem to be working well together. As they have recently added a new codepath for NVENC and a couple of new quality features. As such, NVENC is very fast and even cranking all of the settings available, I’m not sure you could dip under 60fps stream for 1080p or lower. Also, this partnership should also mean using X.264 on your CPU will be as fast as possible. Because OBS is optimized to interrupt Nvidia framebuffers to encode the frames, ad overlays, etc.

NVENC is interesting competition for CPU encoding. Its too inconsistent from game to game, to say it outright matches X.264 CPU. But in maybe many scenarios, it can be about as good, while demanding much less resources from your system. Trading some visual quality, for a large amount of performance. And in specific scenarios (fast motion), it can actually be favorable in visual quality. I have no idea what sort of emphasis Nvidia has for R&D on GPU encoding. But, there’s so much shading power on these things, it seems like they could take this a lot further, if they really wanted. We’ll see!


Overall, I think OBS could do a lot more to guide users on choosing settings. Some of the options have decent explanations. Some do not. And some options don’t really seem to do much. Tying to find out about these things is a really painful process. I hope they find some time to invest in improving documentation and presentation, within the software itself. For example, Handbrake has a fairly extensive compendium on the options they have available. Their issue is that the language is often very technical. Can be tough to follow, even as far as how to activate the settings.

I miiiiiiight post some comparisons. We’ll see.

1 Like
#119

also, NVENC generally doesn’t use the shader hardware; it’s a separate fixed-function block

#120

Indeed. However, the new codepath in OBS does leverage the CUDA cores a bit, for the RTX20** cards. And I think it mostly about squeezing extra quality. Not speed.

#121

oh cool!

I wasn’t totally clear on whether Nvidia’s drivers were able to let CUDA compute kernels compete with 3D rendering without interrupting each other and really screwing up performance so it’s nice to hear they’re thinking about that, it bodes well for games being able to run CUDA threads too

1 Like
#122

I’m guessing the chip in the 20** series has a sort of doorway to the CUDA cores, which the older cards do not. They said they are trying to do as much work with each frame, on the GPU as possible. So there’s less swapping back to the CPU and system memory.

#124

I played around with Quicksync today. I hadn’t done that yet, with the new videocard. As I mentioned previously, OBS had trouble interrupting the frames from my old videocard. X.264 and Quicksync both look better now. Yeah, Quicksync really surprised me today. I updated my thoughts on it, in the giant post above.

Suggested Encoder settings in OBS, for streaming.

NVENC:
Select the “New” NVENC encoder.
Rate Controle CBR (its what Twitch wants. VBR and its variations can cause dropped frames, audio desync, etc)
Choose whatever bitrate you want. I think non-partnered streamers are capped somewhere after 6,000kbps.
Keyframe interval 2 (its what Twitch wants)
Preset “Max Quality”
Profile “High”
Ignore both “Look ahead” and “Psycho Visual Tuning”. These are cool options, in theory. But Nvidia’s current implementations need more work. In my testing you experience overall lower quality with either option turned on.
“GPU” Leave this at 0 unless you have more than one graphics card in your system.
Max B frames: You may be familiar with “b frames” in other encoders. But it doesn’t necessarily work the same, here. Set this to “2” for games with a lot of fast motion. Especially 3D games where the entire screen can move and rotate. For slower games with occasional fast motion, you can try 3, to get more overall detail. But lose some solidity and detail during motion. For really slow games (I’m thinking like Shenmue, walking simulators, etc) or practically static, set b frames to 4. (I still need to try these with sidescrollers or an isometric game such as Zelda.)

Try these settings as a local recording, before streaming. If the resulting video file has a lot of pausing in it, it means that the settings you are using to run the game, are nearly maxing out your GPU and its not leaving enough left over for NVENC. You can do a few things to fix this:

  1. lower some game settings
  2. Change the quality preset from “Max Quality” to “Quality”. “Max Quality” uses your shader cores (Cuda) in additon to the NVENC encoder chip. Quality uses less shader power or maybe even none. If you still have pausing, try “Low Latency Quality”.
  3. If you are totally plagued by pausing and hitching with NVENC and you don’t want to drop your game settings further, try the NVENC encoder which is not labeled as “NEW”. Its the old code path, which does not use Shader power at all. Its still pretty good quality.

Quicksync (these settings are based on Intel’s Kaby Lake or newer. Some of these options may be missing, on older CPUs. If they are, feel free to ask about it here. I’d be interested to hear about it.
Also, these settings may change later. I heard about some possibly hidden options for Quicksync, in OBS.

Target Usage “Quality”
Profile “High”
Keyframes 2 (its what Twitch wants)
Async Depth 7 (or whatever your highest available number is) (This is basically a setting which splits up the encoding across the Intel shader cores in an asynchronous fashion, allowing higher quality. Has a lot of effect on overall quality)
Choose your bitrate
Rate Control: Choose “LA”, if you have it. If you don’t have it, select CBR. LA implies CBR, but also activates a “lookahead” feature. And you can choose how many frames ahead. Set it for 11. This basically means the encoder will do 2-pass CBR, 11 frames ahead of real time. Slightly improves overall quality. But has a particular benefit to high motion. However, setting it much higher, can make the combing effect worse during motion. And can cause some other odd behavior to certain visuals. Higher settings are supposedly only meant for really slow paced or static material.

If you are having trouble keeping a smooth recording at 60fps, try changing to the “balanced” preset. And/or try lowering Async Depth until it gets better.

I think “LA” is important to getting the most out of Quicksync in OBS. So, I would leave it on, if you can.

X.264 - X.264 settings are a can of worms. You can mix and match them too much for your own good. I’ve spent a ton of time looking at them. I don’t pretend to know it all. These are my suggestions

Rate Control “CBR” (its what Twitch wants)
choose your bitrate
check the box for “Use custom buffer size” and set the buffer to be the same size as your bitrate.
keyframe interval 2 (its what Twitch wants)
CPU usage preset: If you have a quad core, you probably shouldn’t set this higher than “Faster”, unless you are streaming under 60fps. I would start with “Faster”, because it noticeably cleans up macroblocking, compared to all of the presets underneath it. However, if your game is heavy on CPU usage, you might be forced to go to a lower preset, with a quad core.
Profile “High”
Tune: Personally, I think no tune selected, “Animation”, or SSIM are all good choices to get you started with video games. “animation” is going to be the most resource intensive. But, it should look the best, for most content. SSIM is a small tweak over not selecting any preset. It changes how the bitrate is allocated in each frame. In a way which I think is visually favorable. However, it seems to suffer more under motion. I think it may tweak more options than what I have seen documented. No tune selected uses the default X.264 options, which is a healthy smattering of options and will generally look fine with most anything.

Also, if you are playing a game with a noise filter or a game with a lot of fine details such as fog, rain, or such effects: you can try the “grain” preset, to maybe preserve these subtle details. YMMV with that. I think its a little heavy handed in how it tweaks the settings. But it would take way too much text to explain that and suggest other, custom settings. If you ever have particular trouble with such visuals, of course you can ask about it : )

If you have some extra CPU resources (less than 60fps stream and/or more than 4 cores), You can also try the “fast” and “Medium” presets. Anything higher than that is not recommened for streaming. And is sort of antiquated in terms of what it changes under the hood. At least, in context of a real time stream.

Regarding the spot for “X.264 options”:

Its spot to put in custom commands to tweak things. Each option is separated by a colon. If you put one option by itself, no colon.

Here are a couple of options which may be redundant with “High” profile selected, but if you have good performance with high profile and at least “faster" preset, go ahead and put these in. Or you can try adding them to lower presets, for a small boost in quality:

8x8dct=1:cabac=1:weightp=2 (the first two are options for small gains in compression efficiency. The last option helps keep lighting fades and changes from macroblocking too much).

More stuff

dct-decimate=0 Setting dct-decimate to zero, is another thing which can help with subtle details like grain, rain, fog, etc.

me=umh (you can add this to noticeably improve solidity during motion. Combines especially well with “faster” preset or higher. umh noticeably cleans up blocking and noise, during high motion.)

aq-mode=2:aq-strength=1.0 This changes how the bitrate is allocted in each frame. In a way which is visually positive, in my opinion. Similar to the SSIM preset, distilled into a couple of settings and without the negatives. However, aq-mode=2 is slower than 1. You can set 1 and still use aq-strength for very positive results, with better speed than aq-mode 2.

Trellis=2 (or 1) This is something else you can try, to keep subtle details like grain, fog, rain, etc. Pretty resource intensive for a single option, when set to 2.

Everything below this line are suggestions for gaining some speed with X.264 via your CPU

you can set “profile” to medium, for a possible small performance boost, but also a small visual hit. I don’t recommend “low” profile. But, its there if you need the performance.

try the “low latency” tune. It usually increases macroblocking and can introduce some tearing. But, it can be a pretty dramatic boost and will help you keep your stream framerate high. You can mix the low latency tune with any of the other options for…interesting results!

or you can try these custom options:
subme= “0” or “3” These will greatly increase your X.264 speed. At the cost of overall sharpness and overall fine details. 3 still looks pretty good on detail, but may be a bit noisy. 0 will soften the image, but its fast. and it often doesn’t look as bad as you might think, if you know what these options really mean. You could even try “5”, for a smaller boost, but smaller quality loss.

you can also try
me=dia as a sort of last effort. Will make motion look worse.

And finally, analyse=none or some. “analyse” dictates how X.264 makes choices. The options are none, some, most, all. “Some” will give you a speed boost in “faster” or higher presets, while still partially leveraging any special options. “none” will skip many things, for a large speed boost. But, a large hit to visual quality.

So, a sensible, fairly large speed boost would be:

set profile to “medium” and then add these three options

subme=3:analyse=some:rc-lookahead=1

and/or try the “low latency” tune

1 Like
#125

Ok I just tested Momodara IV and Quicksync won, no contest.

Color accuracy and saturation was way better than NVENC. And even with NVENC set to 4 b-frames (optimal for a game with relatively low screen movement), it still didn’t resolve every pixel fully. Certain edges and corners (such as dialogue boxes) were muddy.

I really cranked up X.264 with a lot of extra options. It matched Quicksync’s color saturation and generally looked the same. Until…I started fighting enemies. Once I started attacking and darting around—X.264 had trouble keeping up and resolving all pixels, during such motion. Even though I had lots of extra motion options turned on for X.264

Quicksync had perfect color saturation, sharply resolved every pixel, and was able to keep up with motion, with zero artifacts.

I’m gonna go on a limb here and say Quicksync, if you have it (sorry AMD) is the best choice for 2-D pixel art games or old games like NES and SNES. I still need to test a 2-D fighter. But have a feelling Quicksync will shine there, as well.

*remember, I have a Kaby Lake i5 7600K processor. Older versions of Quicksync may not look as good.

*I just realized I have a laptop with an Ivy Bridge i5. That’s 4 generations older than Kaby Lake. I will compare the Quicksync on that, very soon!

1 Like
#126

Something cool about NVENC in OBS is that it has a preset for a “lossless” mode (remember to set OBS to record in RGB colorspace, before you use it).

Its technically not 100% lossless. But its real close. And NVENC is very fast (it uses Cuda during lossless mode), so its useable. So, you can record a nearly lossless clip of a game. And then run that clip through OBS and try the different encoders on the exact same content.

Trying to do something similarly lossless with X.264 would require a bunch of horsepower (example: Mediainfo reports a bitrate of 374 Megabytes per second, on my lossless Dirt 3 clip, made with NVENC).

With MSI Afterburner, you can do an actual uncompressed dump of your framebuffer. It actually isn’t all that intensive on your CPU. But, you need tons of hard drive space and also TONS of hard drive throughput. I have a budget SSD and large sustained writes are the main glaring weakness of budget SSD. I’m also unsure if OBS can even read uncompressed files. VLC even doesn’t do it, by default. Seem’s I need an external encoder.

So, yeah, NVENC lossless mode is handy.

#127

Also, I came up with a new way to upscale videos for Youtube. Use OBS.

OBS has a scaling feature. You can downscale or upscale. And since you can run video files through OBS----you can effectively upscale them in real time. Previously, I was using a program which uses a very CPU intensive super resolution scaling algorithm, for upscale. The quality is amazing, but it encodes at like 2-6 fps on my quad core, for 2K or 4K upscale. That’s like 12 minutes to upscale the 40 second Dark Souls 2 clips I was testing.

In OBS, you encode in real time. and it uses a lightweight Lanczos scaler. The quality of scaling isn’t as good. But this is just to fake out youtube into thinking a 720p recording is 2K or 4K, so that youtube will put more bitrate on it. You can also do it at 60fps. So if your original video is 30fps—this effectively frame doubles it (not frame interpolation) to 60fps. And youtube assigns more bitrate for that, as well.

So I can run my video files through OBS and upscale them at whatever framerate I choose (assuming my hardware can keep up). Just crank the bitrate and let it rip! I tested a Soul Caliber 6 clip set for a 2K upscale at 60,000kbps bitrate and it was no problem. And at a bitrate such as that, the encoder you use doesn’t really matter. So, just use something fast! Like Quicksync or NVENC. I tested it with Quicksync.

2 Likes
#128

Here’s a universal suggestion for stream quality boost, no matter which encoder you use:

Play your game in the same resolution as your stream. So, no downscaling. OBS’ scaler favors speed, rather than quality. Streaming at the same res as your gameplay, looks a lot better.

Certain games lend themselves to this. Fighting games, for example. Those are absolutely fine in 720p. So, play and stream at 720p for better quality. Rather than downscaling from 1080p or whatever.

#129

Ok I just ran some NVENC “lossless” recordings of 4 different games, through Quicksync on my Ivy Bridge laptop.

Compared to the same “lossless” files through Quicksync on my Kaby Lake------Kaby Lake’s Quicksync is very noticeably better. Ivy Bridge looks like its not using b-frames at all. Way more macroblocking. Overall look is somewhere in between X.264 super fast and very fast. Mostly looking like super fast.

That said, its serviceable. Soul Caliber 6 had a lot of macroblocking in the backgrounds. But the characters looked pretty good. I would say that I’d probably still use Quicksync to capture this game, rather than CPU. But SC6 is very light on CPU. So, you have a lot to give CPU encoding on OBS.
Dirt 3 was pretty bad, though. I’d def use CPU encoding, here.
Momodara 4 looked great. Basically as good. I expected that. Its a very simple game to capture.
Smoke and Sacrifice had more muddyness, but wasn’t drastically worse. Decent, overall. Kaby Lake Quicksync has some Quality issues with that game, as well. Compared to NVENC. Also a lightweight game, so CPU encoding would still be the choice.

Also, it had trouble keeping up 60fps capture, with OBS’ Asynchronous setting maxed out for Quicksync. You’ll probably need to keep that setting at the default “4”, which will hurt quality even more.

I’m curious if Intel will be making large improvments to Quicksync, with their upcoming integrated graphics Iris Plus 940 for Comet Lake, which are reportedly twice as powerful as their current stuff, in terms of overall GPU potency. And that’s if Iris Plus is even in most of the chips. In the past, they only put past iterations of Iris graphics in a couple of rare SKUs.

1 Like
#130

Interesting note about Soul Caliber 6:

The game has a really heavy depth of field effect on the stage backgrounds. Which means that the beautiful stages are heavily blurred, like 80% of the time.

On PC, you can edit a config file and remove the effect. Revealing the stages in all their glory.

However, for lower bitrate streaming (I’ve been testing under 3500kbps, 720p), it seems advantageous to have the effect on. The encoders see the blurred areas as lower detail and gives more bits to the characters. I compared side by side slow motion and frame by frame. There are a lot more frames where characters appear “high quality”, when you capture gameplay with the depth of field blur effect turned on. Seems that NVENC, X.264, and modern Quicksync are all smart enough for this to work out (analyzing frames and prioritizing bits is known as Adaptive Quantization).

Also, Quicksync is the worst at compressing the blur effect, itself. Showing more macroblocking and that combing effect. X.264 and NVENC do a good job of making the blur look more natural. X.264 is the best, in this specific detail, as long as you use the “Faster” preset or better.

#131

FYI, I just happened across a video which claims and then shows that NVENC suffers in streaming smoothness, when you start to add extra stuff like picture-in-picture with a webcam, overlays, etc.

time stamped to the part where he shows NVENC with a webcam

Unfortunately, he doesn’t go into a lot of detail, such as which settings he is using. It may be possible to relax a couple of settings, to get smoothness from NVENC with extra video sources. Example: moving from “max quality” setting (which uses more GPU resources/Cuda) to “Quality” (which does not use Cuda). Or trying the old NVENC codepath in OBS, rather than the “new” codepath option.

I might test this some time. I do have a web cam (although I don’t plan to use it during streaming).