Multiple Captures?

Jibsman

Member
I have a screen capture of a game, Elite Dangerous. The output is a nVidia surround 7680 x 1440 @ 144hz.
I have an OBS capture which captures the center screen only. This is working great, thanks to koala's help.

I would like to also be able to capture the entire 7680 x 1440 screen. Is it possible to have both? I created a separate scene, but the way to show the entire screen is to change the Settings, which changes the other capture. Seems like I can't have both?

Or I'm doing something wrong...
 

Jibsman

Member
Yeah I created a second capture, but the settings to capture all 3 screens changes the first capture.
The first capture Base Resolution is 1920 x 1080
The first capture Output resolution is also 1920 x 1080.
If i change the Base, there is no output resolution 1920 x 1080 available, and the whole capture gets screwed up.

Thanks tho...
 

AaronD

Active Member
I think you're still using the first capture twice. It's not actually separate.

Did you create it from scratch? Or did you copy/paste?
 

koala

Active Member
OBS is able to write one video only with one given resolution. To record simultaneously one 2560x1440 video and one 7680x1440, you need two instances of OBS running at the same time. One for each resolution. However, chances are good your CPU/GPU isn't powerful enough to support both and the game you're recording all at the same time.
 

AaronD

Active Member
I didn't see "recording" anywhere, so I assumed a single output with differently-framed captures of the same desktop in different scenes.

If "capture" actually means "recording", then yeah, you need a separate instance of OBS for each output size.
 

Jibsman

Member
Yes, recording. I can create a separate instance of OBS? This makes sense. Install it in a different directory perhaps?
 

Attachments

  • ED1.png
    ED1.png
    433.6 KB · Views: 139
  • ED1-Output.png
    ED1-Output.png
    75.6 KB · Views: 138
  • ED1-Video.png
    ED1-Video.png
    54.2 KB · Views: 139

AaronD

Active Member
Each instance of OBS can only use one profile and one scene collection. By changing both of them, you have almost a separate installation without actually installing again. I use the --multi and other flags on the command line, so that:
obs
becomes
obs --multi --profile "Profile Name 1" --collection "Scene Collection Name 1" obs --multi --profile "Profile Name 2" --collection "Scene Collection Name 2"
etc.

You can copy and modify the shortcut to add that on the end of each copy, or use a script that starts all of them like I do.

The names have to be in quotes. That prevents the spaces from being interpreted as separate flags that OBS doesn't recognize.

And the names have to match *exactly* what you called them in OBS. Not matching is the same as not specifying, which loads whatever it remembers using last. That could be the other instance, or something else, or just happen to be right by accident.

obs --help in a terminal (Command Prompt in Windows) to see all that you can do there. :-)
 

Jibsman

Member
Thanks AaronD! I will check this out. I did install another version on a separate drive and it seems to work. However the script method seems more elegant. I wonder, can you run both simultaneously or only one at a time with scripts?
 

AaronD

Active Member
On Linux (and I think Mac too), you can just put an & on the end, and it'll run that command in parallel with the rest of the script. And you can capture the process ID from that, so you can use it later in the same script to close it. That excerpt from my script is:
Bash:
echo
echo "Start OBS Master (feed to meeting)"
obs --verbose --unfiltered_log --disable-updater --multi --studio-mode --profile "$OBS_PROFILE" --collection "$OBS_PROFILE" --startvirtualcam > /dev/null &
PID_MASTER=$!
sleep 10

echo
echo "Start OBS Slave (local display and recording)"
obs --verbose --unfiltered_log --disable-updater --multi --studio-mode --profile "Meeting_Slave" --collection "Meeting_Slave" > /dev/null &
PID_SLAVE=$!
sleep 10
and a little bit later, to show a dialog box (*without* the & on the end) that waits for me to say, "I'm done":
Bash:
echo
echo
echo "Wait for Done..."
echo
zenity                              \
--info                              \
--width=350                         \
--title="DO NOT CLOSE THIS ! ! !"   \
--text="When the meeting is done:\n1. Hang it up\n2. Click OK here\n\nEverything else will clean up automatically."
echo
echo "Done, cleaning up:"
and finally:
Bash:
echo
echo "Close OBS Slave"
kill -TERM "$PID_SLAVE"
sleep 5

echo
echo "Close OBS Master"
kill -TERM "$PID_MASTER"
sleep 5
The echos are messages to the terminal, just so I can see what it's doing. Blank echos are empty lines for readability.

Windows doesn't have & on the end. It has a whole 'nother command just for that:
start "" "command to run in parallel" and "its arguments"
I have no idea how to grab the process ID from that and use it later to close the app, or if you even can. If you really need that, you might have to google it.
 

Suslik V

Active Member
There is "Source Record" plugin (new filter for the source):
It allows to record original size of the source.
So, if you have large source and placed it at the center of OBS smaller canvas (left and right parts lies outsize canvas), you adding Source Record to this source and if plugin works for you OK - you have two files at output, full sized from Source Record, and centered ("cropped") from OBS main output.

Of course, in the properties of the Source Record filter better to add something like: "_full_sized_source" to the end of the Filename Formatting pattern - otherwise it will be hard to find your new files among all others.

Source Record filter can be applied to a Group as well (that has reference copy of the original source) - this trick can be used to record two files with one OBS instance for sources of different sizes and different filters sets and from sources that can't has two digital outputs simultaneously (web cameras). If you wish, you can place the whole Group of original sources outside of the canvas - it still will be recorded by the plugin.
 

Jibsman

Member
Update: Of course as soon as I posted this I found I need to change directory to the executable first.
Hopefully all working now!

I finally got the opportunity to set this up. I'm creating a batch file (I used to be good at this...) to run 3 separate versions. I started with the first one. I created the profile, collection and scene in OBS. Closed it then ran the batch file which contains:

start "OBS64" "C:\Program Files\obs-studio\bin\64bit\obs64.exe" --multi --profile "WidescreenD" --collection "WideScreen Desktop" --scene "WideDT"

I'm getting some errors:
returns "Failed to find locale/en-us.ini in an error box
then
returns Failed to load locale in an error box.
I'm guessing I'm missing a "Start In" setting?
 

Jibsman

Member
I am able to start a fullscreen capture of the desktop and another of the game.
Capture = recording, not streaming.
I also wanted to capture just the center screen of the game, because the full 7680x1440 is very small to see specific things happening in the center screen.
The 1920x1080 capture is blank if the widescreen capture is running. I'm guessing I can't have two captures of the same app? Or is there some wizard to get around this...?
 

Attachments

  • 2OBS.png
    2OBS.png
    388.6 KB · Views: 45
Top