The Ultimate Video Recording, Encoding and Streaming Guide

Streaming examples for CPU, NVENC & Quick Sync

CPU (x264)

OBS -> Output -> Streaming x264

Rate Control = CBR. We do things differently for recording than we do for streaming. In recording we worry less about bitrate more about quality. But now with streaming, we want to set our bitrate and get the best quality we can out of that. With CBR, we will use the same bitrate constantly and when we can get a perfect image from that we will, when we can’t then we just get the best we can manage with the bitrate.

Bitrate = This you should have selected from your speedtest.net result in section 7.

Custom Buffer Size = I normally leave this unticked, but it can be tweaked. For bitrates between 1000 and 2000 you can set this to 1000 for some extra quality when it takes a hit, but the drawback is that users might need to buffer your stream when this happens. The bitrate plus your buffer size should be your maximum upload rate calculated in section 7, but if your bitrate is under 800 then just leave it unchecked. If that causes you problems, then tick it and set the buffer to something tiny like 50 and reduce your regular bitrate by the same amount to stay under your cap.

Keyframe Interval = This is something that your streaming service might ask you to set. Longer keyframe intervals of say 10 seconds mean you can get better compression (more quality into your bitrate) but what it means for the viewer, is that if they start watching your stream, or when they skip forward/backward (in a VoD or some streaming services allow this) they will skip to the LAST 10 second mark, because that was your keyframe interval. Setting a shorter keyframe interval makes the viewer feel like your video is more responsive, but your quality per bitrate will suffer. I recommend leaving it on Automatic, but you can tinker with this depending on the game you’re playing or the purposes of your stream. If it’s a long HotS match then maybe it doesn’t matter, but if it’s a tutorial on a complex grand strategy game then the audience may appreciate the ability to skip around.

Profile & Tune = Leave as None unless your streaming service asks you to set it specifically. It can affect playback on certain devices, but that’s more important for saved video files than it is for streaming. If a crappy phone is streaming something it can’t handle, then they should turn down the resolution instead of you accommodating them by implementing a quality hit to the people who have the proper equipment. Recorded videos compress much better (by being slower) so you can accommodate more viewing equipment, but when streaming we are often already using non-perfect quality due to bandwidth restrictions.

Variable Framerate = Leave off. I’m not sure why this would help anybody for streaming purposes unless you’re trying to manage your total internet usage per month.

x264 Options = Leave this blank. If you have a crappy CPU then you might benefit from putting “opencl=true” in here to take some load off your CPU with your graphics card. But in the majority of cases a CPU can handle that part faster itself than it can by sending it to the graphics card, waiting, then reconstructing data after it gets the results back. You will have to do some testing to see if that works for you. On a more advanced level, this is where you can change specific parameters from the Preset you’re using to try get a little more quality into your bitrate without jumping all the way to the next slowest preset. Use this link to get it right http://dev.beandog.org/x264_preset_reference.html

CPU Usage Preset = This is the important part to get right once you have your bitrate set. In this example I’ve set it to Medium which is reasonably ambitious for a 2017 CPU. The SLOWER the preset the better your quality per bitrate, because your CPU is working harder to fit more quality in. However, if your CPU cannot keep up with the game’s framerate, then it will drop frames. Dropped frames don’t just make the final stream look choppy, but they also waste processing time, since sometimes the frames that are dropped have had some work done on them. So dropping 5% of frames is worse for your final quality than using a preset that is 5% less on your CPU. The moral of the story is that if you get dropped frames or your CPU maxes out, you need to choose a faster preset and wear the lower quality.

What you want to do is pick a preset and test it. OBS will tell you down the bottom of the main screen how much CPU it is using. If that goes over 80% you could be in trouble, because your game still needs some CPU to run and you don’t want OBS or your game to get less than they need. Different games have different requirements though, so maybe open up your Task Manager or Resource Monitor and have a CPU graph up. Play the game while streaming for a minute then ALT-Tab back and see what the graph looks like. If it hit 100% at any time, then you need a faster preset because either your game will suffer or OBS will drop frames. If it stays below 60% then you may be able to turn the quality up a little by setting a slower preset for some more quality. If you find that you get 60% usage on one preset but max out on the next slowest, then you can use the “x264 Options” part to increase a parameter or two. That kind of tinkering is beyond the scope of this guide and probably not for you if you need to read a guide in the first place. But when you become more accustomed to this sort of thing, it’s there if you want.

Finding the right balance can be tricky and you may need to spend an hour or two testing a couple of different games to get the hang of it. Ultimately, the main benefit of x264 CPU streaming is that you can tweak it to get the best out of your equipment and internet connection.

Quick Sync (QSV)

OBS -> Output -> Streaming QuickSync

Depending on your CPU model and therefore your version of Quick Sync, your screen may look slightly different to this. Just use this as a guide, if some options are different you can look them up if you need to but many of them won’t need adjusting.

Target Usage = Quality. Performance is for people who want to quickly encode heaps of files at massive bitrates in one hour instead of two. We’re streaming now, we have a constant bitrate and we don’t need the encoder to do it FASTER, we need it to do it BETTER.

Profile = High. This isn’t theoretically required, but current Quick Sync versions need to know target parameters so just tell it High. That will allow Quick Sync to do its best work.

Keyframe Interval = 3. Another example of where the hardware nature of Quick Sync requires a parameter that software like x264 can work around. I recommend 3 seconds, but you may be able to adjust it depending on your Quick Sync version, or it might not let you.

Async Depth = 4. This won’t affect you for the purposes of this guide. Just leave it.

Rate Control = CBR. For the same reasons stated in the x264 part above. Other methods come in useful for recording to HDD, but for streaming, this is what you want.

Bitrate = This you should have selected from your speedtest.net result in section 7.

NVENC


OBS -> Output -> Streaming NVENC

Again this may look different depending on your Graphics Card and therefore your version of NVENC.

Rate Control = CBR.

Bitrate = This you should have selected from your speedtest.net result in section 7.

Keyframe Interval = NVENC lets me leave this at 0 (auto) but it might not let you. Choose 0 if you can or if you can’t, try 4 or 3.

Preset = Bluray. If you don’t have the Blu-Ray option then your card is probably too old to be trying to stream with it. Other feasible options are “High Quality” or “Low-Latency High Quality” but in my experience Blu-Ray does the best job.

Profile = High, to allow NVENC to use as much parameter flexibility as it can.

Level = 5.1 for the same reason as High Profile above. At the time of writing this OBS only supports up to Level 5.1 but if it ever supports higher than that, I wouldn’t go with it, just stick with 5.1. Read section 3-A if you want to know why.

Use Two-Pass Encoding = Yes, tick this box if it’s available to you.

GPU = 0. This is for if you have multiple cards you can specify which one does the work. If you only have one, then number 0 it is.

B-frames = As high as you can make it up to 16. Mine only goes up to 4.

UNREAL AUSSIES ARE ALL OVER THE WEB

HELP SUPPORT
UNREAL AUSSIES

Unreal Aussies run many events over the year to help connect and build the Australian gaming community. If you are interested in helping out in any current or future planned events or wishing to offer some more ideas for us to explore - let us know!

About Us

Unreal Aussies is for passionate gamers from all walks of life. Games come and go, but the people still remain. From meetups to tournaments, hardcore teams to charity streams, Unreal Aussies core mission is to make gaming more fun as part of a community than it can ever be alone.