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:
RTMP
Converts
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.
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
- Meshcast account - A registered account is required; a free account is enough for RTMP ingest
- RTMP-capable encoder - OBS, MELD Studio, Streamlabs, FFmpeg, etc.
- Stable upload - At least 1.5 times the total stream bitrate
Step-by-Step Setup
-
Copy Your RTMP Details
Open the Meshcast dashboard and copy the complete RTMP URL. It looks like
rtmp://host:1935/live/pk_example. -
Configure Your Encoder
In OBS, open Settings > Stream and choose Custom. Put everything through
/livein Server, then put the privatepk_...value in Stream Key.Service
CustomServer
rtmp://[dashboard-host]:1935/liveStream Key
pk_...Never use the public
st_...Stream ID for publishing. -
Configure Output Settings
Use H.264 video and AAC audio. These settings provide broad playback compatibility:
Encoder
H.264 (hardware if available)Rate Control
CBRBitrate
2500-4000 kbpsKeyframe
2 secondsB-frames
0VDO.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, usebframes=0in Custom x264 Options. Stop and restart the stream after changing the encoder. -
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.
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:
- In MELD, go to Stream settings
- Add Meshcast as a custom RTMP destination
- Start streaming
- 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?
- Check your stream key is correct (copy/paste, don't type)
- Verify the stream shows as "Live" in Meshcast dashboard
- Open Stream Links again and use the server currently assigned by the dashboard. If it remains unavailable, contact support.
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?
- Use CBR rate control, not VBR
- Set keyframe interval to exactly 2 seconds
- Check View > Stats in OBS for dropped frames; lower the bitrate if your connection cannot keep up
- If your plan offers manual server selection, choose a healthy server closer to your location
Quality issues?
- Ensure your upload speed is at least 1.5x your bitrate
- Use 720p at 2500kbps for reliable quality
- Avoid 1080p60 unless you have 10+ Mbps upload
HEVC/H.265 not working in OBS Browser Source?
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.
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.