Question / Help Common mistakes and how to avoid them

BK-Morpheus

Active Member
Over the last weeks I was reading and posting in this forum a lot.
It seems that many people do the same mistakes over and over again, because they don't understand how game capture, scene rendering and video encoding works.
Maybe some one could make a sticky thread for the most common problems and how to avoid them.

I will try to give a guide-line with this thread.

1. Don't upload empty OBS log files
Here is the guide, how to create and upload your OBS log file: https://obsproject.com/forum/threads/please-post-a-log-with-your-issue-heres-how.23074/
If people provide their log file, they often use an empty one (sure it's not completely empty, but the recording/streaming attempt is missing).
Make sure to start your test recording/stream and don't forget to stop that recording/stream, before you upload the log file.

2. Bad quality, but why?
The quality of your recording/stream is influenced by many factors:
  • bitrate
  • content (details, contrast, movement)
  • resolution
  • frame rate
  • encoder (and it's encoder settings)
Of course, bitrate has a huge impact on the quality, but for streaming your bitrate will be limited in some way (upload speed, stream-service guideline, internet speed of your viewers etc.).

Your content can be very hungry for bitrate (shooters with many details and a lot of fast movement) or very compression-friendly (Hearthstone, League of Legends...).

That's why a setting that might look very good for one game, might look very blurry/pixelated in other games.
The higher the resolution and frame rate, the more bitrate is needed, to get decent quality.
Recommendation: Never use 1080p 60fps for streaming, if the content is bitrate-hungry.
In most scenarios you might have to test and decide if you prefer the smoothness of 720p 60fps or the less pixelated / blurry quality of 720p 30fps.

Encoder impact:
Depending on your CPU and GPU you can choose between x264 (CPU), Quicksync (integrated GPU), AMD AMF or VCE (don't know which one is the newer one) and Nvidia NVENC.

The GPU based encoders have on thing in common:
They have only a small impact on your gaming performance, but they are not efficient when it comes to encoding on low bitrates.
So GPU based encoders are ideal if you want to do local recordings, where Bitrate is not limitied (in that case I would choose quality based encoder settings like CRF/QCP instead of constant bitrate).

For streaming or lower bitrates in general, x264 will deliver better quality on Very Fast preset than the GPU based encoders, although actual Nvidia cards with Pascal architecture are not far behind.
If you have a fast processor or way more CPU cores than you game will utilize, you might be able to choose a slower x264 preset (faster or medium for example) to get even better encoding quality. Keep in mind, that "very fast" preset is the best compromise between CPU load and quality/efficiency. Switching down to "fast" preset will increase the CPU load quite drastically.
Don't expect wonders here. From my testing, the difference between "very fast" and "medium" is visible but not very impressive, where as the CPU load on my 8core 16thread Ryzen CPU will jump from barely noticeable to pretty high.

3. How to check your log file for ~4 common problems

If you are using Windows 10, check the beginning of your log file and make sure that you run OBS as an administrator, disable Game Bar and Game DVR:

Running as administrator: true
Aero is Enabled (Aero is always on for windows 8 and above)
Windows 10 Gaming Features:
Game Bar: Off
Game DVR Allowed: Yes
Game DVR: Off
Game DVR Background Recording: Off
Game Mode: Off

Google will tell you how to do that, but here is a guide:
https://support.steampowered.com/kb_article.php?ref=6239-DZCB-8600

Now scroll down or search your log for
"==== Recording Start" or "==== Streaming Start" and
"==== Recording Stop" or "==== Streaming Stop".

When you see "Total frames output", the interesting part begins.
After the Total frames output and Total drawn frames you might see one (or many) of the following lines:
  • Number of lagged frames due to rendering lag/stalls:
  • Number of skipped frames due to encoding lag:
  • Number of dropped frames due to insufficient bandwidth/connection stalls:

Theses lines only appear, if there were any rendering, encoding or bandwidth problems.
Short explanation, what component might cause this:
Rendering problem = GPU
Encoding problem = CPU (if you use x264)
Bandwidth problem = Internet


The next chapter will explain what might cause these problems and how to solve them.

4. Rendering, Encoding, Bandwidth problems
4.1 Rendering lag

OBS uses the GPU to render your scene, as the GPU can handle that task very fast. After that, the rendered frames will be encoded (for example via CPU by using x264 codec) into a video.
In order to do this without dropping frames, you need to make sure, that the GPU is not fully utilized already.
On older Windows versions, the GPU access behavior was slightly different. Maybe OBS had a higher GPU priority on Windows 7/8, I don't know for sure. But right now on Win10 Creator and Creator Fall Version you need to make sure, that your game is not eating up all GPU power.
You can check your GPU load by downloading GPU-Z and check the sensors.
If you change the Window focus from your game to OBS or any other window, most games automatically reduce their framerate, until you switch back into the game. Reports about "OBS framerate is ok, as long as the OBS window is in focus" often are just caused by using >90% GPU load while gaming.

So if your game is not already running on a CPU bottleneck, you need to limit your ingame fps.
Either by using Vsync, max fps settings in your game (or game config file) or by using tools like Rivatuner Statistics Server (which is part of MSI Afterbuner) or Nvidia Inspector.
Reducing ingame details or buying a high end GPU will not solve rendering lag, if you don't limit your fps.

Exception: If your GPU is way faster than your CPU or the game engine has a limited max fps, it's possible that you can't utilize 100% GPU (CPU bottleneck) and therefore you won't need vsync or an additional fps limit.
By the way: You can't see a CPU bottleneck by checking your CPU load. Even when a game is running on a CPU limit, there might be no core showing more than 60% load. This is because of how games can utilize threads and how Windows is trying to spread this load on all available cores.
The only fast way to check for a CPU bottleneck is watch your GPU load and test without fps limit. If the GPU is not utilized 96-100% then this game is running on a CPU limit (or fps cap of the engine).

4.2 Encoding lag
If you encounter encoding lags, your CPU can't handle your OBS settings and the game at the same time.
To reduce the CPU load of the encoder, you can do one or more of the following steps:
reduce OBS framerate
reduce OBS resolution
choose a faster x264 preset
switch to GPU based encoder (NVENC for example)
limit ingame fps (which you should do anyway, see "4.1 Rendering lag")

High bitrates and fast motion will also increase encoder load, but reducing bitrate or not moving in your game might not be a useful solution :-)

4.3 Bandwidth problems
This can be caused by choosing a higher bitrate than your upload speed can handle (don't forget that audio bitrate will be added on top of your video bitrate and your game, discord, teamspeak also needs some upload).
It can also be caused by problems with some Twitch servers, or some other nodes on your route to the server or simply by packet loss and ISP problems in general.
More details:
https://obsproject.com/wiki/Dropped-Frames-and-General-Connection-Issues


5. "Gaming" Monitor + 60Hz Monitor
Windows doesn't handle GPU accelerated programs on a multi-monitor setup with different refresh rates very well.

If you run a game on a 144Hz monitor for example and you have a second monitor with only 60Hz, this will work, as long as you use fullscreen mode in the game and you don't open a program with GPU acceleration on the 60Hz monitor at the same time.
GPU accelerated programs can be OBS with preview, web browser with youtube/twitch or other video content.
So maybe you need to disable hardware acceleration in your web browser and disable OBS preview, if you have those programs on your 60Hz monitor.

6. Problems with Sources and Devices/Drivers

Try to avoid window_capture or monitor_capture, if you can use game_capture, as game_capture will provide the best performance. Some programs will not work with game capture, so you need to switch to window or monitor capture but at least try game capture first.
Avoid having game capture, window capture and monitor capture or having multiple game capture sources in the same scene.
Did you know, that you don't need to configure game capture to use a specific game/process? It will hook whatever game it can find, so you only need one game source.

Tip: The multi adapter compatibility option for game capture is meant for computers with more than one GPU, not for systems with one GPU and multiple monitors :-)

Browser sources can cause problems as well. Try to use as few as possible and check your CPU+GPU load with and without those browser sources, to identify possible problems. You might find a "number of memory leaks" at the end of your OBS log file. This usually comes from browser sources and a few memory leaks are no problem. If you see a high amount (>70 for exampe) of memory leaks, check your browser sources.

If you encounter high CPU load, when starting OBS, without even recording/streaming and you already checked your browser sources, than it might be a device driver that causes this CPU load.
Remove webcam/capture card sources from OBS and see if it helps. If you can identify the device, that is causing the CPU load, you should check for driver updates and maybe reduce the webcam resolution (as 1080p for a small webcam picture in a 720p stream is not necessary).

7. New scene collection to identify problems
If you already have a big scene collection with many scenes and even more sources in those scenes and you encounter some problems, I suggest that you create a new scene collection that will start empty.
Just add one scene in there (game_capture for example) and test your recording/stream again.
If it is working fine, you can add your next source to the scene (maybe the webcam) and test again.
This way you can find out which source or filter might cause problems and remove or change it in your original scene collection.
 
Last edited:

BK-Morpheus

Active Member
bump...

It seems like 60% of new "problem/bug" threads are still releated to the basic mistakes (no ingame FPS limit = rendering lag in OBS etc.), that are described in this guide.
 
Going to bump this to put some additional notes to the OP and hopefully suggest this thread get pinned for future reference.

On 4.1, I've also learned that resolution barely has any impact against rendering lags. You can still get slightly less rendering lags at 640x360 in 60fps compared to 720p60/1080p60. However, rendering lags are reduced when rendering in 30 FPS than 60, if at all. This is assuming you got a mid-ranged GPU in this day and age.

About the same section (4.1), I tested a recording in 60fps with Fortnite (on an engine known to take all GPU power if you let it), I noticed a difference with the preview on and off on "Average time to render frame" which is the important stat to monitor to be honest.
 

BK-Morpheus

Active Member
I tested with and without preview as well, but did not notice any difference (maybe because I use two monitors, with the same refreshrate, so Point 5 is not an issue).
The preview itself usually doesn't increase the GPU usage, the rendering on the other hand does and it will be done, no matter if the preview is enabled or disabled.

What I find even more interesting, is that last time I tried to force the rendering lag by removing any fps limit and increasing graphics details (GPU load hitting 100%), OBS still maintained a stable framerate without rendering lag.
A few month back, It was reproducible. Back then, I did turn of MSI Afterburners Rivatuner Statistics Server (as this can interfere with OBS). It might also depend on the game itself and if it's running in exclusive fullscreen or borderless window mode.

Either way, for a single computer streaming setup it's always better to set a reasonable fps limit + graphics settings, so that the framerate is stable and neither CPU nor GPU will be maxed out.
 
Beautifully written @BK-Morpheus.
If I may add some links that can be of use:

Local Recordings:
JackOr's guide to recording using OBS Studio:
https://obsproject.com/forum/resour...lity-recording-and-multiple-audio-tracks.221/
Probably the best start for anybody to provide a good base for local recordings, whilst outdated (Was written for when OBS Studio was OBS MP) it is still very valid in every detail it provides.

Network/Bandwidth:
For network bandwidth issues, results from Speed/Bandwidth testing sites/utilities provide a general overview of your download/upload speed, not throughput quality to one server. To more accurately measure bandwidth capability for streaming, I suggest the below for Twitch users (YouTube unfortunately does not have a utility that I can find)
r1ch's TwitchTest utility:
https://r1ch.net/projects/twitchtest
A great little utility to gauge actual throughput of your network connection for streaming for the varying Twitch ingest servers.
r1ch's Twitch Analyzer utility:
https://r-1.ch/analyzer/
Another utility from r1ch to help you gauge actual performance of your (or someone else) Twitch broadcast channel, this one is browser based.

OBS log files:
A few minutes' worth of recording/streaming is really needed for a good analysis of what is going on, with the user uploading the logfile doing what they normally do in-game. Best way for a user uploading a log file to aid in troubleshooting is to find a 'benchmark' route, including heavy impacting areas (Lots of lighting/shadows/grass/debris/particles/reflections, etc) of the game they are trying to get OBS working properly with.
The best way to find a benchmark route is to leave the frame rate uncapped, find a specific area in the game where the frame rate drops to the minimum noted frame rate, then base the route around that area. Then the user should cap the fps value and record/stream that route for an OBS log file upload to aid in troubleshooting.
Sources:
Slideshow images/gifs, animated tipping jars, etc:
These are very expensive on performance when running in loop, consume system RAM and can seriously degrade performance of OBS if scenes are not setup correctly (You have too many animated sources in one scene) or have very limited system memory whilst streaming some games that are not optimized well, that utilize system memory a lot. When a user notices an issue it will most likely be hitching/stuttering when switching to the scene that has heavy usage of sources the first time, as they are loaded into system memory for fetching later.
Encoding:
When using h264 (GPU encoder) you can still receive high encoding issues if your CPU is near or running at 100% utilization.
Note:
There is a slight need to update (Already?!) your excellent guide, in part 6:
Multi-Adapter Compatibility is now displayed as SLI/Crossfire Capture Mode (Slow)

Would really like to see this thread of yours stickied!
 

Gozen

New Member
I wanted to also add my story to this thread as well, as everything listed here is great information. I too, would love to see this get stickied.

Thanks to BK-Morpheus for this post and to OG See OH Zee for keeping their guide here, https://docs.google.com/document/d/1P5E5SsauiKY-EVcWAThO4HAUY3CFM7KWfM40xd_qkQo/edit, updated as well.

I myself made a post related rendering lag/stalls a little over a a year ago: https://obsproject.com/forum/thread...gpu-core-usage-inconsistent-fps-in-obs.63115/.

I originally built my gaming/streaming PC back at the end of 2015.

Specs were:
Clean install of Windows 10 Pro 64-Bit (whatever the latest build was at the time)
i7-4790K
16 GB RAM
GTX 760
Elgato HD 60 Pro
Logitech C920 Webcam
One 1920x1080 (60 Hz) LCD TV connected via DVI to VGA
One 1920x1080 (60 Hz) HP monitor connected via DisplayPort

As both screens had a max refresh rate of 60 Hz, I would always enable V-Sync in game to avoid screen tearing. My target stream settings were 1280x720 at 60 FPS using the x264 encoder with the very fast preset at 3500 Kbps.

A few months later, I upgraded the GPU to a GTX 970, but the connected screens remained the same, thus I would always keep V-Sync enabled in-game where applicable. My in-game resolution was always set to 1920x1080. 1920x1080 is what I was also using for my base canvas resolution in OBS Studio.

In late 2016/early 2017 I noticed rendering lag/stalls when streaming PC games. It took me a while to figure out the cause of the issue, but I eventually discovered it was a browser source I had set for Warp World, https://warp.world/, that was the primary cause of my rendering lag/stalls. I normally would just click the eye icon next to the source to make it not visible. It wasn't until I went into the properties for this source where I found the option to shut down the browser source when it is not visible. By enabling that option and then having the source not visible, it corrected my issue.

Following this, I then decided to upgrade my one screen. I swapped out the TV for a 2560x1440 (165 Hz) G-Sync Dell monitor connected via DisplayPort. Thus, I was running one display in 165 Hz and the other display in 60 Hz.

Soon after this, I upgraded my GPU to a GTX 1080 as well. Not long after I got the GTX 1080 I upgraded once again to a GTX 1080 Ti. With these changes I began setting my in-game resolutions to 2560x1440. I also made sure to set 2560x1440 resolution in OBS Studio as my base canvas resolution. I had also stopped enabling V-Sync in any games.

Around the time of the new graphics cards, I decided to do some experimenting with, and have since been, using the NVENC encoder with the Blu-ray preset when streaming. I also increased my bitrate to 6000 Kbps while still using 1280x720 at 60 FPS as my target.

One issue I did run across with running 2 different refresh rates screens was how in some games the FPS would lock/lower to the refresh rate of my secondary monitor. I normally keep OBS Studio up on the second, 60 Hz, monitor and play my games in full screen on the 165 Hz monitor. From my testing, I only had this happen in PC games that did not have an in-game graphics option/setting for V-Sync. A couple of games that this applied to was Playdead's "Inside" and any of the Telltale Games series, such as "The Walking Dead". If I minimized OBS studio on my secondary monitor, the game's FPS would raise from 60 back to 165 on my primary monitor.

I eventually got a second Dell 165 Hz monitor which corrected that issue of running OBS and a game on displays with different refresh rates.

Later I changed my webcam to a Logitech C922. For the longest time, I never realized that I didn't properly set the properties on my webcam in OBS Studio and was always running it on the stock defaults. Through experimentation, I learned that running the webcam at 1920x1080 at 30 FPS, while in addition running a PC game in 2560x1440 with V-Sync disabled and/or no FPS cap enabled, would tax the GPU thus causing rendering lag/stalls. Nowadays I typically have the webcam set to 1280x720 at 30 FPS. I also have experimented with running it at 1280x720 at 60 FPS. Either way, when changing the webcam from 720p/30fps to either 720p/60fps or 1080p/30 fps, I can see CPU usage increase from OBS Studio and see GPU load increase.

For the most part, I find myself able to play many PC games at 2560x1440 at max or ultra-settings in full screen mode with no FPS cap in place and V-Sync disabled while not seeing any significant rendering lag/stalls in OBS studio. That is with me using NVENC as the encoder with my base canvas resolution set to 2560x1440 and my output resolution set to 1280x720 at 60 FPS. That is also with me running the Logitech C922 in OBS Studio at 1280x720 at 30 FPS.

If I do see significant rendering lag/stalls, as the guides/posts have stated, limiting or capping in-game FPS usually does the trick as it will lower the overall GPU load/usage thus allowing more room for OBS Studio to do its thing. It certainly also doesn't hurt though to try removing additional sources such as webcams or browser sources to see if that helps as well.

With having both of my monitors set with a refresh rate of 165 Hz, enabling V-Sync in games typically won't do much for me in term of lowering GPU load. It does, of course, depend on the game I am playing. I also don't really want to lower the refresh rate of the monitors to 60 Hz and then enable V-Sync in-game, as I feel like I'm not getting what I paid for out of my monitors plus I have read about how enabling V-Sync can produce input lag, albeit small. I have played around with Rivatuner Statistics Server as well to try lowering/capping in game frame rates, but this doesn't always play nice with OBS Studio and/or the game I am trying to play. Once again, I would like to get the most of out my GTX 1080 Ti card as well. Plus, it is still trial and error of trying to figure out what a good FPS cap would be per game while still allowing enough GPU resources for OBS Studio. I have no problem, and completely understand sacrificing frames while using OBS Studio to stream and or record, I just wish this process could be done automatically.

Another thing I do check for in any programs/apps I have running while I am gaming/streaming is to make sure "hardware acceleration" is disabled. Some programs that have this as a setting include Mozilla Firefox, Google Chrome, and Discord.

As I've seen listed in other posts, I would love to see a day where we Microsoft would allow us to set GPU priority for processes such as OBS Studio. This was we wouldn't have to worry with limiting or capping in game frame rates on our own.

Sorry for the rambling. Just thought I'd share all of this in case this information ever proves useful for someone else.

My current specs:
Windows 10 Pro 64-Bit (Current Build as of February 23, 2018)
i7-4790K
16 GB RAM
GTX 1080 Ti
Elgato HD 60 Pro
Logitech C922 Webcam
Two 2560x1440 (165 Hz) G-Sync Dell monitors connected via DisplayPort

TL;DR Version:
If you find that OBS Studio is unable to keep your target FPS, due to rendering lag/stalls, and regardless of whether you are actively streaming/recording or just monitoring the OBS Studio live preview, a few things worth checking or testing with:
-Completely removing (or making sure they are completely disabled not just hidden/not visible) any browser sources
-Completely removing (or making sure they are completely disabled not just hidden/not visible) any webcams or other video capture devices
-Enabling V-Sync in game with the intention of lowering your GPU load. If your monitor(s) have a high refresh rate set and you enable V-Sync, it may not do much to lessen the GPU load depending on the game.
-Enabling in-game FPS (frame rate) cap or limit if the game has such an option. If not, you will have to find another method to limit FPS.
-Disable hardware acceleration in any open programs/apps you have running when you have OBS Studio open.

One side note, I feel like OBS Studio captures better, in terms of rendering lag/stalls, when have G-Sync is disabled. As far as I'm aware, G-Sync can only be enabled on your primary monitor.
 

chalmotheyo

New Member
I can confirm image slideshows cause performance issues. Simply running an image slideshow with a lot of images in the directory (the images themselves were less than 100kb each) causes frame skipping in the OBS preview and of course the recorded/streamed video itself.

It's so bad that I have to make the slideshow into a video and then play the video instead. It's funny that causes no performance issues, whereas the image slide show does. Sigh.

I have a 4770K CPU with hyper threading and turbo mode enabled, a GTX 1080 and 16GB of system memory.
 
5. "Gaming" Monitor + 60Hz Monitor
Windows doesn't handle GPU accelerated programs on a multi-monitor setup with different refresh rates very well.

If you run a game on a 144Hz monitor for example and you have a second monitor with only 60Hz, this will work, as long as you use fullscreen mode in the game and you don't open a program with GPU acceleration on the 60Hz monitor at the same time.

Another issue I found is that if I'm sending my video via display port to my "gaming" monitor, but my sound via optical s/pdif to my mixamp pro TR, sound does not go through HDMI out of my second GPU display port to my streaming PC, thus no audio in the video source. And for some reason the avermedia GC570 even though it boasts a Line In port, it doesn't accept the output signal from the mixamp's stream stereo 3.5mm port...
 

Daryll

New Member
Over the last weeks I was reading and posting in this forum a lot.
It seems that many people do the same mistakes over and over again, because they don't understand how game capture, scene rendering and video encoding works.
Maybe some one could make a sticky thread for the most common problems and how to avoid them.

I will try to give a guide-line with this thread.

1. Don't upload empty OBS log files
Here is the guide, how to create and upload your OBS log file: https://obsproject.com/forum/threads/please-post-a-log-with-your-issue-heres-how.23074/
If people provide their log file, they often use an empty one (sure it's not completely empty, but the recording/streaming attempt is missing).
Make sure to start your test recording/stream and don't forget to stop that recording/stream, before you upload the log file.

2. Bad quality, but why?
The quality of your recording/stream is influenced by many factors:
  • bitrate
  • content (details, contrast, movement)
  • resolution
  • frame rate
  • encoder (and it's encoder settings)
Of course, bitrate has a huge impact on the quality, but for streaming your bitrate will be limited in some way (upload speed, stream-service guideline, internet speed of your viewers etc.).

Your content can be very hungry for bitrate (shooters with many details and a lot of fast movement) or very compression-friendly (Hearthstone, League of Legends...).

That's why a setting that might look very good for one game, might look very blurry/pixelated in other games.
The higher the resolution and frame rate, the more bitrate is needed, to get decent quality.
Recommendation: Never use 1080p 60fps for streaming, if the content is bitrate-hungry.
In most scenarios you might have to test and decide if you prefer the smoothness of 720p 60fps or the less pixelated / blurry quality of 720p 30fps.

Encoder impact:
Depending on your CPU and GPU you can choose between x264 (CPU), Quicksync (integrated GPU), AMD AMF or VCE (don't know which one is the newer one) and Nvidia NVENC.

The GPU based encoders have on thing in common:
They have only a small impact on your gaming performance, but they are not efficient when it comes to encoding on low bitrates.
So GPU based encoders are ideal if you want to do local recordings, where Bitrate is not limitied (in that case I would choose quality based encoder settings like CRF/QCP instead of constant bitrate).

For streaming or lower bitrates in general, x264 will deliver better quality on Very Fast preset than the GPU based encoders, although actual Nvidia cards with Pascal architecture are not far behind.
If you have a fast processor or way more CPU cores than you game will utilize, you might be able to choose a slower x264 preset (faster or medium for example) to get even better encoding quality. Keep in mind, that "very fast" preset is the best compromise between CPU load and quality/efficiency. Switching down to "fast" preset will increase the CPU load quite drastically.
Don't expect wonders here. From my testing, the difference between "very fast" and "medium" is visible but not very impressive, where as the CPU load on my 8core 16thread Ryzen CPU will jump from barely noticeable to pretty high.

3. How to check your log file for ~4 common problems
If you are using Windows 10, check the beginning of your log file and make sure that you run OBS as an administrator, disable Game Bar and Game DVR:

Running as administrator: true
Aero is Enabled (Aero is always on for windows 8 and above)
Windows 10 Gaming Features:
Game Bar: Off
Game DVR Allowed: Yes
Game DVR: Off
Game DVR Background Recording: Off
Game Mode: Off
Google will tell you how to do that, but here is a guide:
https://support.steampowered.com/kb_article.php?ref=6239-DZCB-8600

Now scroll down or search your log for
"==== Recording Start" or "==== Streaming Start" and
"==== Recording Stop" or "==== Streaming Stop".

When you see "Total frames output", the interesting part begins.
After the Total frames output and Total drawn frames you might see one (or many) of the following lines:
  • Number of lagged frames due to rendering lag/stalls:
  • Number of skipped frames due to encoding lag:
  • Number of dropped frames due to insufficient bandwidth/connection stalls:

Theses lines only appear, if there were any rendering, encoding or bandwidth problems.
Short explanation, what component might cause this:
Rendering problem = GPU
Encoding problem = CPU (if you use x264)
Bandwidth problem = Internet


The next chapter will explain what might cause these problems and how to solve them.

4. Rendering, Encoding, Bandwidth problems
4.1 Rendering lag

OBS uses the GPU to render your scene, as the GPU can handle that task very fast. After that, the rendered frames will be encoded (for example via CPU by using x264 codec) into a video.
In order to do this without dropping frames, you need to make sure, that the GPU is not fully utilized already.
On older Windows versions, the GPU access behavior was slightly different. Maybe OBS had a higher GPU priority on Windows 7/8, I don't know for sure. But right now on Win10 Creator and Creator Fall Version you need to make sure, that your game is not eating up all GPU power.
You can check your GPU load by downloading GPU-Z and check the sensors.
If you change the Window focus from your game to OBS or any other window, most games automatically reduce their framerate, until you switch back into the game. Reports about "OBS framerate is ok, as long as the OBS window is in focus" often are just caused by using >90% GPU load while gaming.

So if your game is not already running on a CPU bottleneck, you need to limit your ingame fps.
Either by using Vsync, max fps settings in your game (or game config file) or by using tools like Rivatuner Statistics Server (which is part of MSI Afterbuner) or Nvidia Inspector.
Reducing ingame details or buying a high end GPU will not solve rendering lag, if you don't limit your fps.

Exception: If your GPU is way faster than your CPU or the game engine has a limited max fps, it's possible that you can't utilize 100% GPU (CPU bottleneck) and therefore you won't need vsync or an additional fps limit.
By the way: You can't see a CPU bottleneck by checking your CPU load. Even when a game is running on a CPU limit, there might be no core showing more than 60% load. This is because of how games can utilize threads and how Windows is trying to spread this load on all available cores.
The only fast way to check for a CPU bottleneck is watch your GPU load and test without fps limit. If the GPU is not utilized 96-100% then this game is running on a CPU limit (or fps cap of the engine).

4.2 Encoding lag
If you encounter encoding lags, your CPU can't handle your OBS settings and the game at the same time.
To reduce the CPU load of the encoder, you can do one or more of the following steps:
reduce OBS framerate
reduce OBS resolution
choose a faster x264 preset
switch to GPU based encoder (NVENC for example)
limit ingame fps (which you should do anyway, see "4.1 Rendering lag")

High bitrates and fast motion will also increase encoder load, but reducing bitrate or not moving in your game might not be a useful solution :-)

4.3 Bandwidth problems
This can be caused by choosing a higher bitrate than your upload speed can handle (don't forget that audio bitrate will be added on top of your video bitrate and your game, discord, teamspeak also needs some upload).
It can also be caused by problems with some Twitch servers, or some other nodes on your route to the server or simply by packet loss and ISP problems in general.
More details:
https://obsproject.com/wiki/Dropped-Frames-and-General-Connection-Issues


5. "Gaming" Monitor + 60Hz Monitor
Windows doesn't handle GPU accelerated programs on a multi-monitor setup with different refresh rates very well.

If you run a game on a 144Hz monitor for example and you have a second monitor with only 60Hz, this will work, as long as you use fullscreen mode in the game and you don't open a program with GPU acceleration on the 60Hz monitor at the same time.
GPU accelerated programs can be OBS with preview, web browser with youtube/twitch or other video content.
So maybe you need to disable hardware acceleration in your web browser and disable OBS preview, if you have those programs on your 60Hz monitor.

6. Problems with Sources and Devices/Drivers
Try to avoid window_capture or monitor_capture, if you can use game_capture, as game_capture will provide the best performance. Some programs will not work with game capture, so you need to switch to window or monitor capture but at least try game capture first.
Avoid having game capture, window capture and monitor capture or having multiple game capture sources in the same scene.
Did you know, that you don't need to configure game capture to use a specific game/process? It will hook whatever game it can find, so you only need one game source.

Tip: The multi adapter compatibility option for game capture is meant for computers with more than one GPU, not for systems with one GPU and multiple monitors :-)

Browser sources can cause problems as well. Try to use as few as possible and check your CPU+GPU load with and without those browser sources, to identify possible problems. You might find a "number of memory leaks" at the end of your OBS log file. This usually comes from browser sources and a few memory leaks are no problem. If you see a high amount (>70 for exampe) of memory leaks, check your browser sources.

If you encounter high CPU load, when starting OBS, without even recording/streaming and you already checked your browser sources, than it might be a device driver that causes this CPU load.
Remove webcam/capture card sources from OBS and see if it helps. If you can identify the device, that is causing the CPU load, you should check for driver updates and maybe reduce the webcam resolution (as 1080p for a small webcam picture in a 720p stream is not necessary).

7. New scene collection to identify problems
If you already have a big scene collection with many scenes and even more sources in those scenes and you encounter some problems, I suggest that you create a new scene collection that will start empty.
Just add one scene in there (game_capture for example) and test your recording/stream again.
If it is working fine, you can add your next source to the scene (maybe the webcam) and test again.
This way you can find out which source or filter might cause problems and remove or change it in your original scene collection.


Hi,

I just want to ask regarding streaming warzone,

i used to get an encoding lag and rendering lag if i set my in game settings to fullscreen.

but if i change it to fullscreen borderless it does not give me any rendering and encoding lag.

can you give me any idea about on this issue?

Thank you.
 
Top