Host a Guest Panel on a Mac
Bring remote guests into OBS with VDO.Ninja, let them see the finished show, and send that show to streaming platforms through Meshcast.
VDO.Ninja brings in your guests. OBS makes the show. Meshcast sends the finished show to one or more destinations. Keep those jobs separate and the setup stays manageable.
The whole setup in one picture
Important: keep the Program-return feed out of the guest panel captured by OBS.
If OBS captures a panel that includes its own Program return, the picture repeats inside itself forever. Treat the Program return as a private confidence monitor for guests, not as another guest tile.
First, identify your Mac
For the best Virtual Camera compatibility, update to OBS 30 or newer and macOS 13 or newer. Then choose Apple menu → About This Mac and look for either “Chip” or “Processor.” Older combinations may still work, but application compatibility varies.
M1, M2, M3, M4 or newer
On current OBS and macOS 13 or newer, use Apple VT H264 Hardware Encoder. This keeps most video encoding work off the main processor. RTMP is still the easiest path; WHIP is also possible.
Intel iMac or MacBook
OBS normally uses the processor-heavy x264 encoder for streaming. Start at 720p, 30 fps, 2,500–3,500 Kbps with the veryfast preset. If OBS reports encoding lag, try superfast or ultrafast; these use less CPU but also reduce picture quality at the same bitrate.
RTMP uses H.264 video and AAC audio, works well with the usual OBS controls, and avoids the WHIP switch to Opus audio. On an Intel Mac, RTMP does not magically enable hardware encoding, but it is usually the simpler workflow.
Build the show step by step
Create the guest room
Open VDO.Ninja as the director and create your room. Send each guest their own invite link. Ask guests to wear headphones; this prevents their speakers from feeding the show back into their microphones.
Give every seat a number
In the VDO.Ninja Mixer, build the layout with numbered slots. Add &slotmode to the director link, or leave Assign a slot to new guests automatically enabled in the Mixer. Give regular guests a dedicated invite containing their preferred slot number, such as &slot=1, &slot=2, or &slot=3.
A slot number requests a preferred seat; it cannot guarantee an occupied seat. Do not give two people the same slot link. If a requested slot is already occupied, VDO.Ninja leaves the second person unassigned until you move them. If you later assign someone manually, VDO.Ninja remembers the director’s choice when that guest refreshes.
Optional: keep a separate return publisher out of the slots
A separate control-room or return publisher can use &slot=0 so it receives no seat in a slot-based layout. The director is already excluded from slots unless &showdirector is used. Always verify that the clean Scene/output link captured by OBS does not include the Program return.
Make portrait guests large enough
For a panel containing both landscape and phone-shaped video, use a custom Mixer layout instead of relying on the automatic Group Scene layout.
- Make the portrait slot taller or a little wider in the Mixer.
- Turn on Cover if you prefer a full frame with some cropping.
- Use the slot crop controls to trim empty space without shrinking the person.
- Save the layout, then test it with an actual phone before the show.
Add the guest panel to OBS
In the VDO.Ninja Mixer, copy the clean Scene/output link intended for OBS—not the Mixer control-page URL. In OBS, add a Browser Source, paste the Scene/output link, and set it to the same size as your OBS canvas—usually 1920 × 1080 or 1280 × 720.
In Browser Source properties, enable Control audio via OBS if it is shown. Confirm that the guest source moves an OBS audio meter, then make a short recording and listen to it.
One mixed Scene link is simpler and may reduce browser overhead. Avoid loading the same guest in more than one OBS source, because each duplicate view creates another connection.
Let guests see the finished Program
In the OBS Virtual Camera settings, choose Program, then start OBS Virtual Camera. In VDO.Ninja, enable Director will also be a performer and select OBS Virtual Camera as the director camera. Because performer mode can give the director a numbered slot, set the director/Program return to Unset in the Mixer and verify that it is not used by the Scene link captured in OBS. Add &broadcast to each guest invite link—not to the director or Scene link. Guests still send their camera and microphone to the director, but receive only the director’s Program video instead of every other guest’s video.
- Keep the director/Program return out of the Mixer layout captured by OBS.
- OBS Virtual Camera sends video only. For the simplest and safest setup, let VDO.Ninja carry the conversation audio normally and return only Program video.
- If guests must hear OBS clips or music, use a Mac virtual-audio device and create a media-only return bus that excludes all microphone and conversation audio, including the host and guests. Never return the full OBS Program audio mix.
Broadcast mode reduces the work on each guest’s device, but the director’s Mac must send the Program feed to every guest. CPU and upload use rise with the panel size. For a larger panel, test a shared Meshcast return workflow before the show.
Configure your destinations before going live
Open the Restream section of the Meshcast dashboard. For every platform, choose the same source Publishing Key and add the RTMP server and stream key supplied by that platform.
For Restream.io or another provider that is not named in the list, choose Custom and enter the RTMP or RTMPS URL and key that provider gives you. Availability and destination limits depend on your Meshcast account tier; see the Restreaming guide.
Meshcast loads the enabled destinations when the source stream starts. If you add or enable a destination while already live, stop and restart the OBS stream.
Send OBS to Meshcast
In the Meshcast dashboard, find the complete RTMP URL and the private Publishing Key. A complete URL looks like rtmp://host:1935/live/pk_example.
- In OBS, open Settings → Stream.
- Choose Custom service.
- In Server, enter the URL through
/live, such asrtmp://host:1935/live. - In Stream Key, enter the private
pk_...Publishing Key. - Use H.264 video, AAC audio, CBR rate control, and a 2-second keyframe interval.
- For Meshcast Viewer, Studio preview, or VDO.Ninja WebRTC playback, set B-frames to
0. With Apple VT, clear Use B-Frames; with x264, usebframes=0in Custom x264 Options. - Click Start Streaming.
When OBS goes live, Meshcast pushes the finished show outward to the destinations you configured.
Never share your private pk_... Publishing Key in chat, screenshots, or support messages.
Do one private test before the real show
- Every guest is wearing headphones.
- Each guest lands in the expected colored or numbered seat.
- The portrait guest is easy to see and is not awkwardly cropped.
- Guests can see the OBS Program return.
- The Program return itself does not appear as a tile in OBS.
- No guest hears their own delayed voice.
- OBS shows no skipped frames from encoding lag.
- A private or unlisted destination receives both picture and sound.
Quick fixes
Remove the Program return from the VDO.Ninja scene that OBS captures. Slot 0 is only an extra safeguard when the return joins as a separate publisher.
Use headphones and keep conversation audio inside VDO.Ninja. Never send the full OBS Program mix containing guest voices back into the room.
Give each seat its own invite with a unique &slot=N value, and check that the requested slot is free.
Use a custom Mixer layout with a taller portrait slot. Use Cover or per-slot crop instead of the automatic mixed layout.
Close unused browser tabs, lower OBS to 720p30, and try the superfast or ultrafast x264 preset. Apple-silicon Macs should use Apple VT H.264.
FFmpeg Opus is normally the audio encoder and uses far less CPU than x264 video encoding. On Apple silicon, H.264 video can still use Apple VT hardware. RTMP is simpler if you do not need WHIP.
Set H.264 B-frames to 0, or clear Use B-Frames, then stop and restart the OBS stream. RTMP can remain connected even when WebRTC/WHEP cannot play B-frames.
Helpful VDO.Ninja references
Assigning preferred guest slots, the Mixer App, broadcast mode for returning the Program to guests, and OBS Virtual Camera compatibility on macOS.