- Getting started with OBS
- Video guide: JackFrags
- Streamlabs OBS
- Resolution and bitrate
- Keyframe interval
- Video downscale filter
- Advanced OBS settings
- CPU process priority
- The Overwatch test
- MediaInfo results
- Test your audio
- Choosing a Twitch server
- Backups and troubleshooting
- What next?
Be sure to read up on how Mixer does transcoding.
You should also consider using OBS’ Profiles to easily switch between your Twitch and Mixer settings.
Unlike Twitch, the official Mixer OBS guide is tremendously informative and has everything you want to know to set up Mixer. It’s also worth checking out even if you’re not using Mixer.
Getting started with OBS
First, download OBS Studio.
If you want the bullet-point OBS configuration, here it is:
- Downscale resolution: 720p (ie 1280×720)
- Increase past 720p if it’s hard to read text on your stream1
- FPS: 60 (ie 720p60)
- Bitrate: 4,500 (ie [email protected],500)
- Set it to 6,000 when you become an Affiliate
- Keyframe interval: 2 seconds
- Video downscale filter: Lanczos
- Use the
fasterpreset for CPU encoding if you can run it
- Record in
.mkv; automatically convert and save as
- Check out Indistinguishable Quality if you record without streaming
(Higher bitrate does not affect performance. Slower encoding presets do.)
Video guide: JackFrags
Some prefer to learn by watching videos. No offence taken.
JackFrags’s OBS guide is a great place to start to make you comfortable with the interface and granular settings. Check out his video and then read the rest of the guide for the final tweaks. He has a habit of deleting his older video guides and replacing them with new ones, but I’ll try to keep this up to date.
In the future, you may want to check out Streamlabs OBS as an alternative to OBS Studio. Streamlabs claim to have optimized their software particularly for low bitrate (3000) and slow CPU presets (ultrafast).
Streaming just got easier and better 🙌! Our Software Engineer Eddy shares how the smart encoding feature on Streamlabs OBS will benefit your stream.— Streamlabs (@StreamlabsHQ) January 22, 2018
➡️ More info: https://t.co/JZ204VlQzO
➡️ Get Streamlabs OBS here: https://t.co/bKRdE7LWe2 pic.twitter.com/1XdQVhwyo5
One one hand, Streamlabs claim their OBS, SLOBS, is more user friendly than OBS Studio, but the catch is that it’s fairly unstable at this point in time—which isn’t very user friendly! Last time I tried to install it, the installer crashed. Go figure.
For now, get OBS Studio.
You can always try out SLOBS when it reaches v1.0.
Be aware that some people might recommend SLOBS to you over OBS for the sole reason that SLOBS offers affiliate rewards for referrals as of July 11, 2018.
StreamElements have released an add-on that adds an activity feed and chat directly to OBS. I recommend you check it out. It currently doesn’t support Tags nor Live Notifications, but other than that, it makes it more or less redundant to keep your Twitch dashboard open in the background.
Note that it only tracks payments and alerts through StreamElements, so you’ll have to run Stream Labels in the background if those run through Streamlabs. (Or you could switch over to StreamElements.)
Resolution and bitrate
Generally, 720p60 with 4,500 for streaming. Especially when you haven’t become an Affiliate/Partner. Then you can use 6,000.
For recording, your bitrate can be practically infinite.
There are cases where you can make the argument for an FPS lower than 60, but I won’t get into that here as those are edge cases.
A good way to think of your bitrate is in bpp, bits per pixel:
bpp = bitrate / (resolution * fps) * 1,000 <=> bpp = bitrate / resolution / fps * 1,000
4,500 / (1280 * 720) / 60 * 1,000 = 0.0814 6,000 / (1280 * 720) / 60 * 1,000 = 0.1085
A bpp of 0.1 is a good thing to aim for. 0.1 is not some magic sweet spot; but it’s a good way for you to think of your stream quality.
And more important, the equation of bpp is your way of remembering what affects your video quality.
With regard to performance, the bitrate is just your encoder’s target output size; a higher bitrate does not tax your hardware more. It only increases demand for faster internet for streaming, and more space for storage.
For more bpp info, do read /u/Oremm’s post.
Slow vs fast streams: A very important caveat is that if you’re not streaming videogames, and your stream doesn’t feature a lot of “action” on screen, encoding your video will require a lot easier.
A drawing livestream won’t need anywhere as high a bpp as one for gaming. With videogames, you’ll usually want it to be as high as possible, but with simpler streams, you may want to see how low you can push it by decreasing the bitrate or/and increasing the resolution.
For Twitch streaming
I recommend you start out with 4,500 if your internet connection can stomach it.
Why 4,500—especially when you need 6,000 for a bpp of 0.1?
As Affiliate and Partner, you get transcoding priority. This lets viewers lower the stream quality manually if the bitrate is too high for them. Since 4,500 used to be the old cap—for Partners—viewers are mostly used to this bitrate by now. Without transcoding, people can only watch that one version of your stream.
On top of everything else, for transcoding to kick in, you also need a certain minimum of viewers. This number varies depending on server load.
Once you become an Affiliate, however, set your bitrate to 6,000.
Don’t forget OBS supports changing the bitrate while streaming, so you can always start out at either bitrate and change it during your stream.
720p vs 900p vs 1080p
Short version: use 720p60 for starters. Feel free to skip the the next section.
As you can probably tell, I am not a fan of 1080p streams. There’s honestly no point to them as far as I’m concerned, and they result in inferior quality (low bpp).
At the time of writing around 2015: the bitrate for the highest non-Source video quality setting is still set to the same ~1,000—which makes sense but doesn’t help people whose desktop computer can’t handle the Source2 setting, because everything looks like ass.
They also discourage viewing streams with the chat, since you’ll need more than a 1080p monitor to show both the stream and chat side by side. And if people are going to resize their 1080p stream to fit the chat, why not just go with a smaller 720p in the first place? Also, the PS4 Twitch app is absolute garbage, so a lot of people will struggle to watch it on their TV. I’ve personally given up on using the app, and the Chromecast experience is reportedly not pleasant either.
According to Steam’s hardware survey from February 2017 , this is the size of people’s primary monitor:
|Resolution||Share ‘17||Share ‘18|
The takeaway here is that 3.23% of Steam users have a (primary) monitor wider than 1080p—ie 1920px, since 1080p refers to the height.
Maybe you can make the case for a 1080p stream, but the rule of thumb should be to just go with 720p. With March 2017’s 6,000 bitrate cap, the decrease in bits per pixel from using 1080p is nowhere near is big a deal as it used to be, but the other disadvantages remain.
Here is how fast an Internet connection people, be they streamers or viewers, need to stream respective bitrates:
|1,000 kbps||1,0 Mb/s||125,0 kB/s||“High” setting|
|1,500 kbps||1,5 Mb/s||187,5 kB/s|
|2,000 kbps||2,0 Mb/s||250,0 kB/s|
|2,500 kbps||2,5 Mb/s||312,5 kB/s|
|3,000 kbps||3,0 Mb/s||375,0 kB/s|
|3,500 kbps||3,5 Mb/s||437,5 kB/s||Old non-partner cap|
|4,000 kbps||4,0 Mb/s||500,0 kB/s|
|4,500 kbps||4,5 Mb/s||562,5 kB/s||Old partner cap|
|5,000 kbps||5,0 Mb/s||625,0 kB/s|
|5,500 kbps||5,5 Mb/s||687,5 kB/s|
|6,000 kbps||6,0 Mb/s||750,0 kB/s||New cap|
To make things even quirkier, some people like Lirik and Moonmoon stream in 900p60. Anecdotally, I don’t find this to be better than 720p in any regard, but do what you want with this information.
Update Mar 29, 2017: Twitch are rolling out transcoding for everyone, so like the new 6k bitrate cap, it’s no longer Partners-only.
Set this to 2 seconds as specified in the Twitch broadcasting guidelines.
Keyframes might be better known to you as i-frames.
Video downscale filter
I want to put this in a separate section since most of the advanced info below is mainly for recording.
In your OBS settings, go to Video and set Downscale Filter to Lanczos instead of the default Bicubic.
By now, you should already have set your downscale resolution to something like
1280x720 and FPS to
If you didn’t screw up anything and just want to stream, you can skip to the section “The Overwatch test” and return to the nitty-gritty stuff later.
Advanced OBS settings
With hardware (GPU) encoding, you may also have to change your Quality Preset from Balanced to Quality:
Back to JackFrags’s second OBS video (ed: Jack has had a couple of videos over the past years, and he’s gone on to delete some of them). He offers four relevant suggestions:
.mp4instead of default
Lanczosdownscale filter instead of the default
NVENC H.264encoder instead of the default for Nvidia users
- Multitrack audio
- Record to a separate drive
I’ve heard from Let’s Play people that they prefer
.flv for recording, because
.flv handles crashes better, which preserves hours of gameplay footage you would otherwise lose—something most people will experience at some point.
.flv does not support multitrack audio, so you’ll want to use
.mkv for that. Multitrack audio wasn’t that important before we got livestreaming with music, notification sounds, Windows sounds, Discord, and whatever else.
Don’t worry too much about your recording format, because OBS Studio comes with a built-in remuxer to from one container format to another in seconds.
Here is what I recommend you do:
- Record in MKV
- In the settings under Advanced and Recording, check Automatically remux to mp4
Note that OBS keeps the original
This way, you don’t risk a corrupted recording in the event of a crash, and you get to use the most supported format.
If you want to manually remux, ie switch container, between
.mkv, and vice versa, here is the very simple
ffmpeg command to use if you know your way around a terminal:
ffmpeg -i input.mkv -codec copy -map 0 output.mp4
The operation should take seconds, because you’re only swapping to a new container without re-encoding anything inside.
Transcoding vs remuxing: When converting between
.mkv, you need to understand the difference between transcoding and remuxing.
Transcoding will reduce the quality of your recording while remuxing merely changes the container format.
Always remux when switching between
.mp4 tends to be the default services like YouTube, and graphical video editors, so-called non-linear editors (NLE), you probably want to avoid having to convert your recordings all the time. If you let someone or something else convert your
.mkv files to
.mp4, they’ll probably end up transcoding it instead of remuxing, which will reduce the quality of the final video.
Some people also suggest in their comparison of MKV to MP4 that
.mp4 takes up less space.
Just always remember that
.mp4 recordings are easily corrupted by interruptions whereas ones in
.mkv are not. You basically want to record as
.mkv and have the finished recording be in
.mp4. OBS’s automatic remuxing setting makes it possible to have that pie and eat it too.
We all know
.mkv to be a fantastic container format for local video playback, but our use case will generally be uploading and the occasional video editing.
The Lanczos filter is the highest downscale setting of three, the default being the medium setting, Bicubic:
If you downscale your output from a higher resolution to 720p, turn on this filter to keep most text legible. It makes a big difference, even though it requires more of your computer.
Jack recommends using a GPU-based encoder, NVENC3, which relieves the CPU of the task. Whatever I can glean about using GPU-native encoders—AMD cards have one, too, in VCE—is that, at least on older GPUs, they generally result in inferior video quality. Newer GPU generations may be vastly better, however, so give it a shot if you have a decent one.
If your CPU, like mine, can’t handle the encoding for recording or streaming in the first place, you’ll always have the GPU option.
If you want a deep dive on this, I recommend you check out this benchmark of different video encoders in OBS.
Remember the end result also depends on the bitrate. If you’re recording to upload, make the bitrate something high like 25,000 kbps so you retain more detail that can then be transcoded it to a smaller format—or kept as-is. Then you can also use a slower preset the second time around.
More on presets after the break below.
A regular HDD will be fine for your storage needs—and much cheaper, too. If you’re worried about the speed, just take your bitrate (kb/s) and convert it to MB/s to see if you drive is fast enough. (It usually will.)
It’s tempting to record in a much higher quality than Twitch’s 6,000 kbps, but consider the storage requirement that comes with it:
50,000 kbps = 6,25 MB/s = 375 MB/m = 22,500 MB/h
An archive SSD is a waste of money, unless perhaps you’re building a streaming PC without the space for a regular HDD.
You may even want to cut out the local recording altogether and instead use a combination of your exportable Twitch VODs and OBS’s replay buffering, which you can set up with my replay guide.
One thing to remember is that if you play any copyrighted music on your stream, Twitch might mute that part of the VOD—and then some—so don’t rely on your VODs for backup, if you plan on playing music on stream. You’ll still have clips from the livestream to relive the unmuted moments for what it’s worth.
If you have occasional Internet issues, your recording won’t have the technical issues including out-of-sync audio that your stream did. This makes video editing a lot easier since progressive audio desync won’t ruin things.
Recording losslessly—or almost
If you are, say, a YouTuber, who’s only recording, you should consider recording losslessly or at least in something better than your streaming settings.
Confusingly, this feature is only accessible under the Simple output mode.
Under Recording and Recording Quality from Same as stream to Indistinguishable Quality, Large File Size. Now you also won’t have to fiddle with bitrates and encoding presets for you recordings. You could also go with Lossless Quality, Tremendously Large File Size(!), but only if you have the storage space for it.
Hopefully this will be made available under Advanced eventually like the replay buffer, but this is a feature that’s been around for literally years, so you may have to settle for Simple output mode.
If you need the features of Advanced mode like multi-track audio, you can look up the settings used for Indistinguishable.
If you have an Intel CPU, they should come with an iGPU, an embedded GPU. They’re not great and use something called Quick Sync for encoding, so both performance and the rendering software is going to be lacking.
To find out more, read this iGPU OBS guide and this Linus video:
Beyond setting resolution, bitrate, and downscaling algorithm, in OBS, you can also change the preset for software encoding to improve video quality. The presets are parsed to ffmpeg which OBS uses for encoding. Well, technically everything uses ffmpeg for encoding.
The available presets are:
- veryfast (default)
A preset is a collection of options that will provide a certain encoding speed to compression ratio. A slower preset will provide better compression (compression is quality per filesize). This means that, for example, if you target a certain file size or constant bit rate, you will achieve better quality with a slower preset. Similarly, for constant quality encoding, you will simply save bitrate by choosing a slower preset.
The default in OBS is the
veryfast preset, but if you find yourself with CPU usage to spare, try a slower preset—but don’t pick one that drops you below your 60/30 FPS. If you’re using a streaming PC, it literally makes no sense to use a slower preset if your CPU can handle it just fine.
As for performance, the ffmpeg x.264 docs have this to say:
How do the different presets influence encoding time?
This depends on the source material, the target bitrate, and your hardware configuration. In general, the higher the bitrate, the more time needed for encoding.
Here is an example that shows the (normalized) encoding time for a two-pass encode of a 1080p video:
medium to slow, the time needed increases by about 40%. Going to
slowerinstead would result in about 100% more time needed (i.e. it will take twice as long). Compared to
veryslowrequires 280% of the original encoding time, with only minimal improvements over
slowerin terms of quality.
Using `fast` saves about 10% encoding time, `faster` 25%. `ultrafast` will save 55% at the expense of much lower quality.
Note that this refers to 2-pass encoding; for livestreaming, you’ll be using 1-pass encoding.
To learn more about this, I heartily recommend the OBS blog post.
The most in-depth guide to encoding quality is Stream Quality Report’s quality guide, especially because they actually test with bitrates around, both in 1080p and 720p.
Here’s their 720p chart:
If you encode in 720p60 around 6,000 kbps,
faster seems about optimal.
Read the full SQR article for all data and their 1080p chart.
When you think about getting a streaming PC, the preset should be what decides whether you go low-end or high-end. If you’re just going to use the default
veryfast, maybe you should just go with a CPU that’s just fast enough to run it at 1080p60 with Lanczos downscaling.
Always remember, the higher the bitrate, the less you have to worry about CPU presets. If you can record your 720p60 video in 25 Mbps instead of the usual 6 Mbps, you’re going to get a much better result just encoding that.
Furthermore, you choice is not strictly between a list of presets; you can also cherrypick individual options from slower presets to improve the quality of your encoding with a minimum detriment to performance.
I’ll talk more about encoding and how to wrangle ffmpeg in the command line in my video editing guide.
Tunes are additional settings, configurations, profiles, whatever in OBS that are not enabled by default. We won’t be using them either here.
You can optionally use
-tuneto change settings based upon the specifics of your input. Current tunings include:
film– use for high quality movie content; lowers deblocking
animation– good for cartoons; uses higher deblocking and more reference frames
grain– preserves the grain structure in old, grainy film material
stillimage– good for slideshow-like content
fastdecode– allows faster decoding by disabling certain filters
zerolatency– good for fast encoding and low-latency streaming
psnr– ignore this as it is only used for codec development
ssim– ignore this as it is only used for codec development
For example, if your input is animation then use the
animationtuning, or if you want to preserve grain in a film then use the
graintuning. If you are unsure of what to use or your input does not match any of tunings then omit the
-tuneoption. You can see a list of current tunings with
-tune help, and what settings they apply with
Oh yeah, there’s also something called profiles best described as a supported feature set with varying compatibility depending on what technology you’re working with. In increasing order of features and decreasing order of compatibility, the profile options are:
The most valuable part of the OBS blog post is its bitrate and preset comparison screenshots.
Notice how they screenshot example with both little movement and a lot of movement.
CPU process priority
When you do everything from one computer, you use the same CPU and GPU to handle all tasks: streaming4, video, gaming. If you use a secondary streaming PC, your main PC’s CPU or GPU no longer do the streaming and recording; the streaming PC handles this.
As a result, you find yourself balancing streaming vs gaming performance; if your PC can’t handle both at full load, you will have to decide between dropping frames for your stream or your game.
If you’ve got videogame FPS to spare, you can do what Gamers Nexus did and change OBS’s process priority to “High”.
Generally speaking, I wouldn’t touch CPU priority—and never on a one-PC setup.
On this note, always remember to set your FPS cap in-game, since there’s no need for you to do 120 frames per second on a 60 Hz monitor when your CPU (or GPU) working hard to encode your stream. After all, only your viewers can see the stream’s frame drops.
The Overwatch test
Did you pick the right settings? Is your Twitch stream looking good? How the hell are you supposed to tell?
When I finally changed my downscale setting from the default to the highest, Lanczos, I noticed the in-game chat text in Overwatch was suddenly completely legible; before, it was very hard to read.
So when I watch someone streaming Overwatch, I always notice that their streaming configuration is imperfect, because I struggle to read the in-game chat.
Now you know; hope I didn’t ruin any streams for you.
MediaInfo is one of the first things that go in your toolbox, especially for troubleshooting.
Here is what all our settings look like, including only the first of my audio channels:
Test your audio
Try listening to a song or podcast while recording in OBS. Now compare the original volume with the one in your recording.
There are many reasons why the audio might be completely different—check out the audio guide for that.
One might be that you have an audio interface (amp) like a Scarlett Solo that boosts up your headphone audio after receiving it from the computer. Viewers will only hear the original audio.
The simplest thing you can do is to just try turning down the amp’s headphone dial as much as possible while offsetting it by turning up your Windows volume. If you’re already at 70% volume in Windows, you’ll have to do something like boost OBS’s desktop audio in software with something like OBS’s mixer.
If you followed Jack’s guide, you should have a working overlay for your stream by now—assuming you want to use one.
The hierarchy in OBS Studio is:
- To switch between different stream keys or settings
- Scene collection
Sources, like the overlay, are basically just a bunch of layers, and Scenes as groups of layers.
My main Scene,
Game, currently consists of:
- Notifications, a BrowserSource (powered by Streamlabs)
- Overlay, a BrowserSource using my home-made overlay
- Check out Player.me for your own needs
- Game-X, a Game Capture for a regular game
- Game-Any, a game placeholder for any other game
- Background, an Image to display something absent an active game
If you want to be fancy, you can add an Intro and Outro scene.
When you go on to create another Scene, like my
Lounge, you will be re-using sources. In order to do so, create a new source and pick your existing one from the list below.
Pro tip: if you want to have a browser source, you might have to turn off hardware acceleration to avoid a black screen in most instances. If you change the setting with OBS open, you’ll also have to restart OBS.
Some games don’t support Game Capture due to anticheat, which means you’ll have to do a Window/Display capture instead.
Studio Mode for previews
I recommend using this feature mainly to make protecting your privacy easier. You never know exactly what’s going to be in the scene you’re switching to. It’s also good for maintaining a professional appearance, too.
One thing you should look out for is what effect your preview(s), with and without Studio Mode, has on your performance. If your computer or stream struggles, see if your preview(s) might have caused it.
You can also enable automatic scene switching, but I feel like it sets you up for an incident down the road.
Choosing a Twitch server
Under Stream, you’ll have en enter your stream key and pick a server. If you don’t live right next to one of the servers, it might be difficult for you to figure out which server to use.
To figure this out, download and run TwitchTest.
Only tick the regions that are close to your and see which server performs best. Here is what it looks like from Denmark:
Looks like the Swedish server is the best one for me.
Backups and troubleshooting
You might get an Error opening file for writing when trying to install or update OBS Studio—or re-installing to fix a bug like I did.
The solution is usually to give OBS Studio a fresh
obs-studio/ folder to install your settings in.
To do this, go to
%APPDATA% and look for
obs-studio/. Make a copy of the folder or rename it to something like
Install, or re-install, OBS Studio. Afterwards, copy these two from your
obs-studio-backup/ folder into the new one:
This should restore your original settings, as was the case when I did it.
But just copy the whole
obs-studio/ folder just in case.
Make sure to back up these files whereever you keep your backups—moving them to a Dropbox folder with bvckup is an easy way to keep it safe. You’ll also need your assets like banners, backgrounds, and so on, of course.
For other problems, you can also try updating your GPU driver or the AMD Advanced Media Framework encoder plugin, if you use it for encoding.
Running MSI Afterburner can also prevent your OBS from starting as it did with me.
If you get a black window for a source, a likely culprit is hardware acceleration. Both browsers and any web-based app which are essentially compartmentalized browsers that run independently use hardware acceleration, and you can usually either turn it off directly in the settings or with the shortcut flag
OBS also has a habit of running in the background, even though you closed it. So make sure it’s closed entirely before attempting re-installs, patches, and so on.
Resolutions something between 720p and 1080p mean additional transcoding to 720p or 1080p on a lot of platforms like YouTube. ↩︎
Twitch have since moved on from the “Source, High, Medium, Low, Mobile” approach of just lowering the bitrate to transcoding stream resolutions and frame rates from 1080p60 to 720p60, 720p30, 480p, etc.
This solves many problems with 1080p streaming, but the bitrate for the transcoded resolutions are extremely low to the point of being useless.
A Source+ option for people with the requisite bandwidth and CPU is probably the only real solution that would work for everyone. ↩︎
For more info about per-GPU NVENC capabilities, read [Nvidia’s NVENC support matric chart][nvenc-matric]. ↩︎
I’m just going to say “streaming” instead of “streaming and/or recording” for simplicity’s sake. ↩︎