RTMP to VDO.Ninja

Stream from OBS, MELD Studio, or any RTMP encoder directly into VDO.Ninja

In This Guide

How It Works

VDO.Ninja uses WebRTC, which is browser-native but incompatible with traditional streaming protocols like RTMP. Meshcast bridges this gap by:

OBS / Encoder
RTMP
Meshcast
Converts
VDO.Ninja
WebRTC

Your encoder sends RTMP to Meshcast servers, which convert it to WebRTC (WHEP) in real-time. VDO.Ninja then pulls the WebRTC stream like any other guest.

Benefits

Works with OBS, MELD, Wirecast, vMix, and other RTMP encoders, and avoids using a virtual camera. RTMP adds more delay than a direct VDO.Ninja WebRTC screen share, so use this workflow for compatibility—not for the absolute lowest latency.

Requirements

Step-by-Step Setup

  1. Copy Your RTMP Details

    Open the Meshcast dashboard and copy the complete RTMP URL. It looks like rtmp://host:1935/live/pk_example.

  2. Configure Your Encoder

    In OBS, open Settings > Stream and choose Custom. Put everything through /live in Server, then put the private pk_... value in Stream Key.

    Service

    Custom

    Server

    rtmp://[dashboard-host]:1935/live

    Stream Key

    pk_...

    Never use the public st_... Stream ID for publishing.

  3. Configure Output Settings

    Use H.264 video and AAC audio. These settings provide broad playback compatibility:

    Encoder

    H.264 (hardware if available)

    Rate Control

    CBR

    Bitrate

    2500-4000 kbps

    Keyframe

    2 seconds

    B-frames

    0

    VDO.Ninja receives this stream through WebRTC/WHEP, so H.264 B-frames must be disabled. In OBS, set B-frames or Max B-frames to 0; for Apple VT, clear Use B-Frames; for x264, use bframes=0 in Custom x264 Options. Stop and restart the stream after changing the encoder.

  4. Start Streaming

    Click "Start Streaming" in OBS. Your stream should show as "Live" in the Meshcast dashboard within seconds.

Viewing in VDO.Ninja

Once your stream is live on Meshcast, you can pull it into VDO.Ninja:

Method 1: Dashboard VDO.Ninja Watch Link (Recommended)

In the Meshcast dashboard, open Stream Links, choose Watch, and copy the VDO.Ninja View link. It uses the public st_... Stream ID. Never put the private pk_... Publishing Key in a watch link.

https://vdo.ninja/?whepplay=https%3A%2F%2Fapp.meshcast.io%2Fapi%2Fgateway%2Fwhep%2Fst_example

Method 2: OBS Browser Source

If adding to OBS as a browser source, use the Meshcast embed player:

https://app.meshcast.io/embed/st_example

Use the public st_... Stream ID here as well—never the private Publishing Key.

Method 3: Share the Feed into a VDO.Ninja Room (Advanced)

&whep and &whepplay play the source only for the person who opens the link. To make an external WHEP feed available to room peers, join as a room publisher using &whepshare= (also called &whepsrc=) with the URL-encoded WHEP URL.

https://vdo.ninja/?room=YOUR_ROOM&whepshare=https%3A%2F%2Fapp.meshcast.io%2Fapi%2Fgateway%2Fwhep%2Fst_example

See the VDO.Ninja WHEP Share guide for the advanced options.

Latency

RTMP adds ingest delay before WHEP playback, and actual end-to-end delay varies. For the lowest practical publishing delay, use WHIP when your encoder and hardware support it.

Use Cases

MELD Studio on Mac

MELD Studio doesn't have a virtual camera on Mac. If you prefer an encoder-based workflow instead of screen sharing, stream via RTMP to Meshcast:

  1. In MELD, go to Stream settings
  2. Add Meshcast as a custom RTMP destination
  3. Start streaming
  4. Pull the WHEP URL into VDO.Ninja

Multi-Camera Setups

Each separately published camera needs its own encoder output and Meshcast Publishing Key. Standard OBS sends one program output at a time; multiple simultaneous feeds require additional OBS instances or suitable multi-output tooling.

Remote Production

Remote contributors with an RTMP-capable encoder can publish through Meshcast, then you can add the resulting WHEP feed to your VDO.Ninja production. Network compatibility varies, so test each contributor's connection before going live.

Troubleshooting

Stream not appearing?

OBS says Streaming, but VDO.Ninja stays black or loading?

RTMP can be connected while WebRTC/WHEP playback rejects H.264 video containing B-frames. Set B-frames to 0 (or clear Use B-Frames), then stop and restart the OBS stream.

High latency?

Quality issues?

HEVC/H.265 not working in OBS Browser Source?

Important: HEVC Browser Compatibility

HEVC/H.265 playback depends on the OBS release, embedded browser, operating system, and hardware. A stream that works in one browser may fail in OBS Browser Source or on another device.

Solution: For the widest compatibility, use H.264. In OBS, choose an H.264 encoder such as Apple VT H.264, NVENC H.264, Quick Sync H.264, AMD H.264, or x264. Do not rely on a particular Chromium version alone.

Need Help?

Email steve@seguin.email with your account email, approximate failure time, OBS version, and a description of the issue. Do not send your full Publishing Key.