There are ways to get multiple different outputs from a single copy of OBS, but I think it works well to dedicate a separate copy to each. For example, I've built a rig around an online meeting platform (
Jitsi, specifically, but it'll work just as well with Zoom, Skype, or anything else) that uses two copies of OBS:
- Master takes the cameras, videos, graphics, etc., and live-produces a feed to the meeting. Same as a live stream, except that it goes through the Virtual Camera to the meeting instead. Audio goes through OBS's Monitor and a loopback, so the meeting can pick it up as a "mic".
- Slavehas 3 scenes, and auto-produces the local display and recording:
- Window capture of the meeting, with audio from another loopback that is fed by the meeting
- Virtual Cam directly from Master, with audio from that loopback
- Same as #2 but with #1's audio ("voiceover")
The Master copy has a naming convention for its scenes that allows the
Advanced Scene Switcher plugin to know which mode to be in, which then does some auto-mixing of the audio (fade-up/down during the transitions) and sends the appropriate message to its counterpart in the Slave copy to coordinate that scene-switch and audio mix as well.
You can use the
--multi
switch on the command line to tell OBS not to complain about multiple instances, and the
--profile
and
--collection
switches to make it load those instead of whatever it had last.
obs --help
to see everything that you can do there.
My rig is managed by a script, because there's a lot more going on than just OBS, and there's no way I'm going to remember how to set it all up and tear it down nicely. Run the script, wait for it to finish, run the meeting, then tell the script to shut down, wait for that to finish, and done.