Question / Help Does having multiple Scenes & Sources impact quality?

Maveron

New Member
Hi,

Just out of curiosity i wanna ask the following, however, here's some overview first:

I got 4 Total scenes in my OBS Profile: -1.Intro, -2.Gaming(gameplay), -3.Break and -4.END

1, 2 and 4 all have static images with a looping background video

the gameplay scene hast multiple source added - game capture, monitor capture, etc - but only one of these active.
usually game capture is active while other sources are only backup, in case i wanna show something off the browers, or a game doesn't work well with game capture (or if i plan to alt-tab out frequently)

So heres my question. Could having multiple capture sources at the same time (even if only one of them is activated visible), or having an everlooping background video on a non-active scene impact my streaming quality/performance?

thx in advance - Maveron
 

c3r1c3

Member
1. Having sources per se doesn't effect stream quality, but if said sources have more motion in them then whatever they're covering up it can lead to more bitrate being used (for VBR) or fewer bits available (CBR) for other parts of the picture.

2. Having Game and Display capture in the same scene chews up more resources and can affect performance. Please don't do that.

3. Having sources (of any type) does consume system resources, including (but not limited to one type) CPU, GPU, system memory and/or GPU memory, so you'll want to minimize the sources you have to what you need/want for streaming and if your system can't handle it, reduce/simplify your sources (or upgrade your system).
 

BattleCrap

New Member
Mild necro bump here, but I have been trying to Google this for months and haven't found an answer.

The crux of the question is:

When you click on 'hide' for a source (i.e the little eyeball) and hide a source, does that hidden source still use PC resources ?

E.g - you have display capture source to use on occasion, for something where increased input lag doesn't matter (e.g showing a folder, and/or webpage briefly), and then you go back to what you were doing (say playing an online FPS game) and you click on the 'hide' for display capture source, does that display capture source still use PC resources while it is hidden ?

Also - How about the same example, but instead of using the 'hide' method, you instead switch to a scene that doesn't have a display capture source, are you still using up precious PC resources with having that un-selected scene sitting there with display capture inside it ?
 

PrinceVinc

Member
This is what I am actually wondering myself now that I play on 4k for the first time so I ran into my GPU limit that chockes out OBS fps.
 

wags407

New Member
I was wondering this same thing. This comes down to a more complex problem that I have been trying to solve, and one option was using Screen Switcher. So the question I have, is if I make 2 Scenes of the same 4 source live streams ( These all get streamed back out internally). Does the 2nd scene that is not active going to be chewing up resources??
 

JohneRandom

New Member
I was wondering the same thing myself.... That's how I found this post. Eyeballs off = no resources and Eyeballs on = resources used (ram, cpu, gpu)? I have only asked one question on this forum and never got a response... So, I just keep experimenting on my own. What I think I will do to find this answer is, to do an experiment with a clean slate. -- start with no scenes, no sources.... Look at the resource meters with no sources added.... add like 10 sources that I know are hardware intensive -- turn the eyeballs off, and see what happens with the resource meters. (resource meters being task manager - or whatever you use). I don't have time right now -- but, that's my game plan... unless someone pops in here with an answer.
 

Narcogen

Active Member
This is really easy.

Add a media source. UNcheck "restart playback when source becomes active".

Now unhide and unhide the source. You'll see that the video is still playing-- still being decoded, and so still using resources and RAM-- even when "hidden".

Being hidden prevents a source from appearing in the final render of a frame before encoding. All those sources still have to be ready in video memory to be added, because the instant you click the eyeball to unhide the source, they have to be ready to insert into the very next frame render without any delay.

I believe this also applies to sources in other scenes within the same collection. You can test this, if you have the NDI plugin installed, by adding a dedicated NDI output filter to an source in one scene, and then switching to another scene that doesn't even contain that source. Using an NDI monitor application or another instance of OBS with NDI on the network, you'll see that that source, and its NDI output, are active even when that source is not even part of the active scene, as long as you are in the same scene collection with that source.

So you can add a media source to a scene, give it an NDI output, then either hide that source or switch to an entirely different scene without that source in it, and you can continue to watch video playback on the NDI monitor application.
 
long time follow, first time post. I'd love to see tricks if anyone has 'em, for how to manage multiple feeds without eating all the resources. I found that after adding 4 NDIs from Skype and one nice webcam (and various random other little stuff) I'm already seeing some mild suffering in the machine and I don't know when it will become too much!

Workaround ideas I had:
1 It would be great if I could have a scene collection of all possible Skype guests with preset nicely sized windows, and I could switch to that collection, copy someone's Source, switch back, paste. But, it looks like I can't do that. Of course it also totally changes the screen when you change collections. Does it cancel the stream? Maybe!

2. It wouldn't be _super_ hard to write something that takes in the json file, comments out (?) or disables (?) or removes some sources, and/or puts others in. Then it's just a messy process of switching between scene collections I guess. (I don't know how else it would reload the json.) Has anyone made something like this?

But ideally there would be a feature to suspend some sources so they aren't eating resources.

Example: I have 10 performers all in a Skype meeting. One by one, I create 10 windows of exact matching dimensions and filters and choose each NDI source. Because this is a laborious process, I need to do it ahead of the actual performance. But, now I'm draining resources with 10 windows when I only need 1-3 at a time.

Anyone with insight about how to do this stuff more efficiently with an eye toward resource usage is super welcome to give me any thoughts. Thanks, and be well out there. We streamers are doing good things for the world right now! :)
 

Narcogen

Active Member
There's not a magic bullet for this. Any source you need available instantly needs to already be ready. If that's ten, it's ten. Even if any one scene only uses three at a time, if you've set up 10 sources in advance, there is a performance hit for those ten.

If, out of a total possible 10, you know for any one session which are the three you will need-- and ONLY those three-- then you can do this:

Make a "master" scene collection with all the sources you would ever need.

Before a session, duplicate that scene collection and delete all the scenes/sources in it that you know you won't need for that session.
 

ayawnimouse

New Member
actually @Narcogen, the ndi source being available is unique to that plugin, at least from what I've read about it and tested previously. I don't believe you can rely on that as your reason for claiming that all the scenes are still 'playing' even when disabled. OBS most definitely has code in it to handle a situation where you disable by clicking that eyeball on a media that is running (if you leave the "restart playback when source becomes active" checked. I have a ridiculous amount of video files waiting to be visible and they definitely are not affecting my stream in a negative way when they are all disabled, using ram? sure, but actually taking up cpu/gpu cycles - nope, not that I can see at least. if you want to test this yourself, make a crab ton of video sources with different videos in them, lets say 10, have them all 'restart playback when source becomes active' checked. now click the eyeball to hide each of the videos. Look at task manager.... take a screenshot, now click the eyeaball again to show all 10 of those videos, then look at task manager - holy smogies, its quite a difference, and most likely obs will struggle to get any frames depending on your setup - 10 videos is a lot of videos playing simultaneously. I can't say 100% that it doesn't use ANY cpu/gpu cycles but you could by creating a clean scene collection, and look at task manager (have everything you can on your comp off except obs) then add those 10 video sources, disable all of them with the eyeball, now check task manager.
 
Top