Coding with JoeG - Streaming Software Configuration - December 2020 Update

11 minute read

In a previous post, I covered the hardware I use for the stream. In this post, I’ll cover the software and settings to ‘produce’ the stream and artifacts. Please keep in mind, this is a guide based on some of my searchings, my playing around, and my hardware, your needs may be different. Another thing to keep in mind, is these are my settings for streaming live coding not live gaming.

Streamlabs OBS Configuration

Streamlabs OBS is a free reliable streaming app with the fastest setup process on the market. We have developed an all-in-one application making streaming easy for everyone. Whether you’re a novice or experienced streamer, Streamlabs OBS will provide you the best streaming experience, with tools built to engage, grow, and monetize your channel.

Download

Settings

The first thing, from what I remember, is that Streamlabs OBS runs an ‘Auto Optimize’ function, which you can find on the general tab of settings. From everything I have seen and read, you really never want to, except for maybe the first time. Most of the time, you will want to ‘tweak’ the settings to fit your needs. I’ve been on streams where the host says “What a minute. I have to tweak something”. It’s gonna happen for a while.

First, we are going to talk about the setting for Streamlabs OBS. You can get to these by clicking on gear () icon. Again, some settings might not be applicable depending on your hardware.

General Tab

Everything in this tab is according to your preference. For me, everything is unchecked except for:

  • Confirm stream title and game before going live
  • In the ‘Output’ section, Automatically record when streaming
  • In the ‘Source Alignment Snapping’, all 3 checked.

Stream Tab

Enable multistream, if you are. For me, as the writing of this post, I’m only live streaming to Twitch

Output Tab

For this tab, I have a few things tweaked based on my hardware and conditions. Please select the Advanced option for ‘Output mode’.

Output - Streaming
Setting Value Description
Audio Track 1 Only have one track. This is helpful if you want to separate music from your voice
Encoder Hardware (NVENC) This is set to software, by default, I changed it to hardware because I wanted to offload some of the video encoding to my video chip/card since my PC not fast enough
Enforce stream service encoder settings Checked  
Rate Control CBR Constant Bitrate Stream: This is the standard bitrate to use for streamers. Let’s say you’ve set your video bitrate to 3000 Kbps for your next stream, using CBR means your stream will always be at 3000 Kbps, even when less could be used, such as a dark game that lacks detail.
Bit Rate 6000 The higher the better
Keyframe Interval 0 0 Indicates that Streamlabs will figure it out before it starts. The “Keyframe Interval” could be set at 2, meaning that the video frame will be rendered every 2 seconds.
Preset Performance  
Profile high  
Look-ahead Unchecked  
Psycho Visual Tuning Checked  
GPU 0  
Max B-frames 2  

For a more in-depth look at bitrates, and keyframes, check out What is Video Bitrate.

Output - Recording
Setting Value Description
Type Standard  
Recording Path local storage If you can, this should be a SSD on a different partition/device than your operating system. Avoid recording to a network drive
Generate File Name without Space Checked  
Recording Format mp4  
Audio Track 1 Only have one track. This is helpful if you want to separate music from your voice
Encoder Hardware (NVENC) This is set to software, by default, I changed it to hardware because I wanted to offload some of the video encoding to my video chip/card since my PC has a detected video card now.
Enforce stream service encoder settings Checked  
Rate Control CBR Constant Bitrate Stream: This is the standard bitrate to use for streamers. Let’s say you’ve set your video bitrate to 3000 Kbps for your next stream, using CBR means your stream will always be at 3000 Kbps, even when less could be used, such as a dark game that lacks detail.
Bit Rate 6000 The higher the better
Keyframe Interval 0 0 Indicates that Streamlabs will figure it out before it starts. The “Keyframe Interval” could be set at 2, meaning that the video frame will be rendered every 2 seconds.
Preset Performance  
Profile high  
Look-ahead Unchecked  
Psycho Visual Tuning Checked  
GPU 0  
Max B-frames 2  
Output - Audio

All of these settings are untouched

Output - Replay Buffer
Setting Value Description
Enabled Replay Buffer Checked This was on by default, I have not changed it
Maximum Replay Time (Seconds) 20  

Audio

Setting Value Description
Sample Rate 48khz Set this to the highest value your audio will support! The higher the hertz, the better the audio quality
Channels Stereo Especially if you have music playing
Desktop Audio Device 1 Disabled  
Desktop Audio Device 2 Disabled  
Mic/Auxiliary Device 1 Disabled  
Mic/Auxiliary Device 2 Disabled  
Mic/Auxiliary Device 3 Disabled  

You can select your microphone for either of the mic/auxiliary slots if you chose to. Doing so will make your microphone available to all scenes without adding it.

Video

Setting Value Description
Base (Canvas) Resolution 1920x1080 1080p. Most providers support 1080p and 4k. If you stream in 4k the resolution on the viewer’s screen will be different if they don’t have a 4k monitor due to scaling.
Output (Scaled) Resolution 19020x1080 HD
Downscale Filter Bicubic (Sharpened scaling, 16 samples) Bilateral, best for CPU. Lanczos, is better quality but CPU intensive. Bicubic, is the in-between.
FPS Type Common FPS Values This will defaults to Frames per Second based on the resolution
Common FPS Values 60 You can lower this to 30 if you are seeing an issue with your CPU. For streaming code, 30 is an acceptable value.

Advanced

Advanced - General
Setting Value Description
Process Priority High I have this set to high because I am using a separate machine for streaming otherwise you should probably chose normal
Advanced - Video
Setting Value Description
Color Format NV12  
YUV Color Space 601  
YUV Color Range Partial  
Force CPU as render device checked I wanted to offload the encoding of video to the video chip

Some of your default settings for video might be different depending on your locale.

Advanced - Audio

I do not have a separate device to ‘monitor’ the stream audio

Setting Value Description
Audio Monitoring Device Default  
Disable Windows audio ducking unchecked  
Advanced - Recording
Setting Value Description
Filename Formatting %CCYY-%MM-%DD %hh-%mm-%ss This is the default value. I kept it because I keep all of the recordings… so far.
Overwrite if file exists unchecked  
Advanced - Replay Buffer

These are the default values. I imagine that if you are streaming your gaming, you might want to provide some replay functionality for a ‘sweet kill’. No one said ever, ‘That was a great use of a lambda, let me replay that’ :smile:

Setting Value Description
Replay Buffer Filename Prefix Replay  
Replay Buffer Filename Suffix empty  
Advanced - Stream Delay

These are the default values.

Setting Value Description
Enable Unchecked  
Duration 20  
Preserve cutoff point (increase delay) when reconnection checked  
Advanced - Automatically Reconnect
Setting Value Description
Enable checked  
Retry Delay (seconds) 10  
Maximum Retries 20  
Advanced - Network

If you have more than one Network Interface Card (nic), exampled wired and wireless. You can set Streamlabs OBS to only use one. If you have a wired connection, you should use that. Wireless can drop packets.

Setting Value Description
Bind to IP Default  
Dynamically change bitrate when dropping frames while streaming unchecked If you notice your CPU or internet connection can not handle the load you may want this checked. Doing so, will drop the frame rate , the number of ‘snapshots’ that the view sees, which could degrade quality. If you are later posting the recording, I would keep this unchecked.
Enable new networking code unchecked Explanation
Low latency mode Unchecked This should be checked if you are seeing a lot of dropped frames or low/show upload bandwidth from your ISP.
Advanced - Sources
Setting Value Description
Enable Browser Source Hardware Acceleration checked  
Advanced - Media Files
Setting Value Description
Enable media file caching checked  

Other settings

All of the other settings, Hotkeys, Game Overlay, Scene Collections, Notifications, Appearance, and Face Masks, I have left the default values.

Scenes

Scenes in OBS provide a different way to provide content to the viewer. Do you just want to show code? Do you just want to show you? Scenes are a way to do that, and a preference. From what I have seen, no two streams are the same. I have eight scenes registered, three of them are just helper scenes that are reused as part of other scenes.

Coding with JoeG Scenes

Scene Name Use
Overlay Samples, provided by the theme, with some visual UI elements
Starting Scene I use this when I go live, to let the viewers know “I’ll be there in a minute”
Live Share - Elgato This is my primary scene. It shares the primary capture from the Elgato card with the video from the webcam
Be Right Back Scene I have not used this one yet. It’s for the times, I might need to run and get the door, or another drink, or something
Ending Scene This signals the users that the stream is ending and provides some social media links for them to continue the conversation. My mic is still on at this point. This might be replaced with the Just Chatting scene which I am still building.
Just Chatting Work in progress. This will just be me with some background images for just the conversation.
Secret Time I use this when I am working with secrets on screen and I don’t want to share them :smile:
Social Media A shared scene with all of my social media links
Alerts A shared scene with the OBS/Twitch alerts for new followers, subscribers, etc.

All of my scenes and alerts use the Pure theme by Own3d for a consistent look.

Filters

Filters are like advanced settings that let you tweak your devices (sources) even more. I’m going to cover some of the Webcam and Microphone filters I use to provide a better experience.

One thing to keep in mind is that the order of the filters matter. The output of one filter is feed in as the source of the next filter. So if you have four filters, the input of filter 4 would be the output of the third, not the source data. So, you might want to play around with the ordering a bit.

To get to the filters in OBS, right-click on a source and chose Filters.

Webcam Filters

Webcam Filter - Crop/Pad

This filter will remove or add pixels to your webcam. The webcam I use has a wide range, so I crop out a lot of it just so my face and shoulders are available.

Setting Value Description
Left 300  
Top 180  
Right 300  
Bottom 50  
Webcam Filter - Sharpen

I don’t use this filter any more.

Webcam Filter - Chroma Key

Chromakeying is used to mask out the background of your camera’s field of view. Think of the weather forecaster on TV standing in front of the weather map. That image is superimposed by a computer by replacing the Chromakeying color with the computer image. I have switched to a blue screen chromakey for my setup since my chair is blue.

You will probably mess around with these settings a lot until you get it just right. The lighting in your room/office/studio is a big contributor to this.

Setting Value Description
Key Color Type Green  
Similarity 440 Note: I play around with this number a lot depending on the lighting in my room. I usually don’t go under 400 or higher than 450
Smoothness 80  
Key Color Spill Reduction 100  
Opacity 100 Your personal preference. How much of yourself do you want on the screen?
Contrast 0  
Brightness 0  
Gamma 0  

Semi-pro tip: Don’t wear the same color shirt as your Chromakey :smile:

Microphone Filters

These filters were based on a video I watched Best Microphone Settings for Streamlabs OBS (2020). I recommend you watch this video to learn more about the audio filters.

Microphone Filter - Gain
Setting Value Description
Gain 3.7 The more gain, the louder the audio is
Microphone Filter - Noise Suppression
Setting Value Description
MEthod RNNoise  
Microphone Filter - Noise Gate

These settings will require a lot of tweaking to get a clear sound for your recording. I find myself tweaking the Close and Open Thresholds mostly. The video above does a great job of explaining each of the settings.

Setting Value Description
Close Threshold -53  
Open Threshold -26  
Attack Time 25  
Hold Time 200  
Release Time 150  
Microphone Filter - Compressor
Setting Value Description
Ratio 10  
Threshold -18  
Attack 6  
Release 60  
Output Gain 0  
Sidechain/Ducking Source None  

Wrap Up

That’s it! Again, your mileage may vary. These are the ‘optimal’ settings for my hardware, software, and environment.

For details on my hardware, check out this post