Finding the right software is one thing, but finding the right settings that will make the software sing like a chorus in Zelda is another thing all together.
For streamers on Twitch they have basically three options when it comes to the software that they can use to stream your favorite video games. They are Xsplit, Fsplit, and the most popular – OBS; or as it is known by its full name: Open Broadcaster Software.
Now any of the streamers that I know they all tend to go with OBS, saying that when configured correctly, you will have the most professional game stream possible; the problem is that not everyone is able to figure out the best settings for OBS.
To help you figure out the most optimal settings CrankyGamers is lucky enough to have an expert is setting up OBS put together this tutorial for correctly setting up OBS. Now I have known JamieLinux for the better part of the year, having met him through Dizzy Dizaster’s Twitch stream where along with Dizzy and Dgall have put together one of the best looking streams on Twitch (strictly my opinion so YMMV).
So without any further ado, here is the tutorial for setting up OBS; courtesy of JamieLinux, and making your stream look pretty damn sexy.
SETTING UP OPEN BROADCASTING SOFTWARE (OBS)
I see a lot of people streaming on Twitch and a lot of people ask what the best settings are for streaming.
Well, this guide here will help you get on the right path.
While it might not be the definitive guide to x264 and OBS the settings here should be good enough to give your stream the quality it needs.
- First off you’re going to want to make a profile under General why we do this is so we always have a blank factory template case something goes wrong and or if you ever just want to copy paste the settings between machines, you can call this twitch 720p 30 fps
- Encoding: Encoder x264
- Use CBR: unchecked
- Use CBR Padding: Unchecked
- Max Bitrate (kb/s): 1/3 your total upload. Example – if you have a 3500 kbps upload you would want to use 2300 (Note: non-partnered streams are limited t0 2500 kbps)
- Quality Balance: 5-6 for MMO or FPS games, 10 for RTS games. I have found that 8 is a happy medium as it keeps the static screens at a nice quality and fast frames from pixelating. You can go to 9 with a beefy cpu, but I wouldn’t recommend higher unless you are sending your stream to another PC to be transcoded and then sent to Twitch.
- Audio AAC bitrate: 128 48khz will do just fine. If your game doesn’t support 48khz OBS will downsample to 44khz, and obviously you will want stereo.
- Broadcast settings should be self-explanatory so I won’t delve into them at this point. (Note: You can use Quick Sync on Intel or Nvidia’s NVENC butto use them will require more bandwidth than Twitch allows so it’s not really a good trade off since the quality won’t be as good.)
- Video Base Resolution: Your monitor resolution
- Resolution: Downscale 1.50 (1280×720)
- Filter: Lanczos (best detail, 36 samples)
- This will keep the most amount of detail scaling down from 1080 to 720. The reason we don’t stream in 1080p is if you are not a partner you’re limited to 720p, so there is zero advantage of streaming in 1080p.
- General Use Multi-Threaded Optimizations: Checked
- Process Priority: High – Twitch and OBS recommend normal, but due to some bug in OBS, which the developer of OBS chooses to ignore, normal and above normal are just about worthless and will cause frame drops due to OBS not being able to keep up. Just set it to high and forget about it as high works as intended.
- Screen Buffering Time: 400ms – This setting is designed for people with high latency audio cards so 400 ms is the normal adjustment if you have audio issues. You can also just use Audio Sync to fix any audio desync.
Now this is where the magic happens.
While the defaults will allow you to stream they don’t give you the best quality. Think of it as the settings for the masses – while it will work there is always a way to tune it to work better.
If you don’t want the best looking stream you can just stop reading the other settings will be fine. However, if you want one of the best looking streams on twitch please continue reading.
- x264 Preset: Very Fast (default setting) – IF you have a beefy CPU you can go faster, but I would not go beyond that unless you’re using a second PC to do the encoding.
- Encoding Profile: Main – Twitch forces everyone to use Main, which is why this setting was implemented, However, just in case they do implement the HLS switch for real stick with High. Luckily, Twitch is currently transcoding your stream using the Main profile, and this is probably because they want to avoid sending the transcoded stream to mobile devices; hence the forced use of Main when it comes to streaming. Basically Main is easier to decode which is why it is necessary for mobile devices.
- Use CFR: Checked – While Twitch recommends CBR the two are not compatible with one another. I personally recommend CFR as it puts a little more strain on the CPU and not as much dependency on the upload bandwidth. You can also just do CBR with a higher bandwidth or CFR with a little lower bandwidth and get the same quality. The downside is if your connection tanks the CBR bitrate will also tank faster.
Use Custom x264 Settings
OBS and Twitch say that you shouldn’t change these unless you know what you are doing, but while I agree it can make your stream worse, it can, when used correctly, make your stream 1000x better.
So, since we are not n00bs here I’m going to give you some settings to tune your stream and give it some really great quality, as well as fix some quirks with OBS.
- VBV-Maxrate: 2300 – This will allow you to constrain OBS to x bandwidth. We use this to normalize OBS so if you have, say, 3000 kbps upload and you’re streaming at 2300kbps OBS won’t go too far over 2300 and totally saturate your upstream as a result. Now this can be changed based on your upload. I set it to 2300 as Twitch maxes at 2500 so you get a little bit of headroom.
- VBV-Bufsize: 3500 – Think of this as a buffer for your stream where in times of low bandwidth it will cache your stream and send it to Twitch in a more unified fashion. As your bandwidth decreases; which it will do from time to time, the buffer fills and then gets sent out to Twitch. It won’t cause latency in your stream but will help normalize dropouts and heavy pixelation.
- Keyint: 60 – This is for 30 FPS. It will set the key frame on the front and back key, so at, let’s say, 60 FPS you would want a keyframe of 120. This is pretty standard in motion capture and broadcasting so we set it to 60 – OBS does notset this by default.
- RC-Lookahead: 10 – Wait .. what is RC-Lookahead and how do I find this value.
- This setting describes the number of next frames the encoder considers, as well as other factors, before making a decision on the current frame size type and quality. You can directly control this setting by adding the custom encoder option RC-Lookahead=number.
- Higher values/numbers are slower and the default used on the preset you’re using
- Ultrafast 0
- Superfast 0
- Veryfast 10
- Faster 20
- Fast 30
- Medium 40
- (Note: If you have a lot of RAM you can top it out as 60 – it will accept higher but at a massive RAM consumption)
- (Additional Note: You can use RC-Lookahead= a different number than the x264 encoder’s presets of super fast and fast etc.)
- Tune=Animation – This will allow the use of a couple of more than the current set, but it also tweaks other settings, which also help with the motion scenes such as doubling the number of reference frames. This is to be used with RC-Lookahead=number
- Opencl=true – This little flag will just use the Nvidia, ATI, and Intel’s OPEN CL to help transcode your video; which might give you a slight performance gain.
- Ratetol=30 – The closer to 0 the better with this setting the better the encode. While, in most cases, one shouldn’t need to use this, as it can affect quality in a negative way, but since we are using such a small scale of bandwidth sending to Twitch is helping to confine OBS to our bitrates.
I hope you enjoy this guide and if you find any settings that help you better, please feel free to share them in the comments.
(Editor: Much thanks to JamieLinux for putting this together, and like he says – if you have any tips that can make this guide better please share them in the comments to this post.)