Plain-language setup guide

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.

The short version

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

Avoid the hall-of-mirrors effect

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.

Apple silicon

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 Mac

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.

Recommended for the least fuss: OBS → Meshcast over RTMP

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

1

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.

2

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.

Example blue frameGuest link uses slot 1
Example purple frameGuest link uses slot 2
Example gold frameGuest link uses 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.

3

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.

Landscape seat
Portrait seat
  • 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.
4

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.

5

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.
Test the intended number of guests

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.

6

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.

Add destinations before starting OBS

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.

7

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.

  1. In OBS, open Settings → Stream.
  2. Choose Custom service.
  3. In Server, enter the URL through /live, such as rtmp://host:1935/live.
  4. In Stream Key, enter the private pk_... Publishing Key.
  5. Use H.264 video, AAC audio, CBR rate control, and a 2-second keyframe interval.
  6. For Meshcast Viewer, Studio preview, or VDO.Ninja WebRTC playback, set B-frames to 0. With Apple VT, clear Use B-Frames; with x264, use bframes=0 in Custom x264 Options.
  7. Click Start Streaming.
You do not need an RTMP Pull link for this setup

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

Quick fixes

The picture repeats inside itself

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.

A guest hears an echo

Use headphones and keep conversation audio inside VDO.Ninja. Never send the full OBS Program mix containing guest voices back into the room.

A guest enters the wrong frame

Give each seat its own invite with a unique &slot=N value, and check that the requested slot is free.

A phone guest looks tiny

Use a custom Mixer layout with a taller portrait slot. Use Cover or per-slot crop instead of the automatic mixed layout.

The Mac gets very hot

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.

OBS mentions FFmpeg when using WHIP

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.

OBS says Streaming, but WebRTC stays black

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.