Publishing Guide
Recommended encoder settings for streaming to Meshcast
Accountless WHIP publishing is available through the built-in Meshcast publisher and VDO.Ninja. Native OBS publishing requires a free registered account and its private Publishing Key. Registered accounts also enable RTMP, SRT, and HLS.
Quick Navigation
Recommended Settings
These settings work well for most streaming scenarios. Adjust based on your upload speed and content type.
Video Bitrate
Audio Bitrate
Keyframe Interval
Resolution
Bitrate by Resolution
| Resolution | Frame Rate | Video Bitrate | Total Bitrate |
|---|---|---|---|
| 1920x1080 (1080p) | 30 fps | 4,500 - 6,000 kbps | ~6.5 Mbps |
| 1920x1080 (1080p) | 60 fps | 6,000 - 9,000 kbps | ~9.5 Mbps |
| 1280x720 (720p) | 30 fps | 2,500 - 4,000 kbps | ~4.5 Mbps |
| 1280x720 (720p) | 60 fps | 3,500 - 5,000 kbps | ~5.5 Mbps |
| 854x480 (480p) | 30 fps | 1,000 - 2,000 kbps | ~2.5 Mbps |
Your upload speed should be at least 1.5x your total bitrate. For a 6 Mbps stream, you need at least 9 Mbps upload.
OBS Studio Setup
Choose the Service That Matches the URL
OBS uses different service interfaces for RTMP/SRT and WHIP. A Meshcast WHIP URL will not work while OBS is still set to the Custom RTMP interface.
- Go to Settings > Stream
- For RTMP or SRT, set Service to Custom
- For WebRTC, set Service to WHIP
- Copy the matching RTMP, SRT, or WHIP URL from your Meshcast dashboard
- Use your Publish Key (
pk_...) for publishing. Do not use the public Stream ID (st_...) in OBS.
rtmp://[server-ip]:1935/live/[publish-key]
In OBS, use rtmp://[server-ip]:1935/live as Server and paste the private pk_... Publishing Key into Stream Key. The combined dashboard URL shows both values together as rtmp://[server-ip]:1935/live/[publish-key].
Output Settings
- Go to Settings > Output
- Set Output Mode to Advanced
- Configure as shown below:
| Setting | Recommended Value |
|---|---|
| Video Encoder | H.264: x264, NVENC, Quick Sync, AMD, or Apple VT Hardware when available |
| Rate Control | CBR |
| Bitrate | 4500 kbps (for 1080p30) |
| Keyframe Interval | 2 seconds |
| B-frames | 0 (required for WebRTC/WHEP playback) |
| x264 CPU Usage Preset | veryfast; use superfast or ultrafast if the CPU is overloaded |
| Profile | high |
An RTMP or SRT connection can remain live—and OBS can say Streaming—while the Meshcast Viewer, Studio preview, or VDO.Ninja WHEP view stays black or loading if the H.264 stream contains B-frames. Set B-frames to 0 before publishing anything that will be watched through WebRTC/WHEP.
In Settings > Output > Advanced > Streaming, 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 when no B-frames field is shown. Stop and restart the OBS stream after changing the encoder.
OBS on Mac
Open Apple menu > About This Mac and check whether the computer lists a Chip (Apple silicon) or an Intel Processor. The available streaming encoders differ.
In Settings > Output, use Apple VT H264 Hardware Encoder. On macOS 13 or newer, select CBR, use a 2-second keyframe interval, and clear Use B-Frames. For WHIP, OBS may replace AAC with FFmpeg Opus; that change is for audio and does not mean H.264 video has switched away from Apple hardware. If OBS shows a WHIP Simulcast option, keep it at one layer when minimizing encoder load.
OBS does not provide reliable Apple VT hardware encoding for streaming on Intel Macs because the encoder lacks the constant-bitrate behavior expected by streaming services. WHIP may therefore require x264 software video encoding. If CPU use is too high, RTMP may be the more compatible choice; reduce output to 720p30, lower the bitrate, and try the superfast or ultrafast x264 preset. RTMP does not itself add Apple VT CBR support on Intel.
If you need viewers to watch in OBS Browser Source or across a wide range of browsers, use H.264 encoding (x264, NVENC H.264, Quick Sync H.264, AMD H.264, or Apple VT H.264).
HEVC/H.265 playback support varies by browser, operating system, hardware, and OBS release. H.264 remains the safest compatibility choice.
See our HEVC compatibility guide for more details.
Audio Settings
| Setting | Recommended Value |
|---|---|
| Audio Bitrate | 160 kbps |
| Audio Encoder | AAC for RTMP/SRT; Opus for WHIP |
| Sample Rate | 48 kHz |
| Channels | Stereo |
RTMP Publishing
RTMP is the most common streaming protocol, supported by OBS, Streamlabs, and most broadcast software.
URL Format
rtmp://[server-ip]:1935/live/[publish-key]
FFmpeg Example
ffmpeg -i input.mp4 \
-c:v libx264 -preset veryfast -bf 0 -b:v 4500k \
-maxrate 4500k -bufsize 9000k \
-g 60 -keyint_min 60 \
-c:a aac -b:a 160k \
-f flv rtmp://[server-ip]:1935/live/[publish-key]
Always set keyframe interval to 2 seconds (60 frames at 30fps, 120 frames at 60fps). This ensures smooth playback and segment creation for HLS.
SRT Publishing
SRT (Secure Reliable Transport) offers better reliability over unstable networks with built-in retransmission. It helps when occasional packets are lost, but it still needs enough upload bandwidth for the selected bitrate.
URL Format
srt://[server-ip]:8890?streamid=publish:[stream-id]:meshcast:[publish-key]&pkt_size=1316&latency=400000
SRT requires streamid=publish:[stream-id]:meshcast:[publish-key]. The public Stream ID starts with st_ and is the media path viewers watch; the Publish Key starts with pk_ and authenticates the publisher.
OBS and FFmpeg pass SRT URL options through FFmpeg, where latency is measured in microseconds. Use latency=200000 for 200 ms, latency=400000 for 400 ms, or latency=800000 for unstable mobile/Wi-Fi networks.
OBS SRT Setup
- Go to Settings > Stream
- Set Service to Custom
- For Server, enter the full SRT URL including
streamid,pkt_size, andlatency - Leave Stream Key empty because the Publish Key is already in the URL
FFmpeg SRT Example
ffmpeg -i input.mp4 \
-c:v libx264 -preset veryfast -bf 0 -b:v 4500k \
-g 60 -keyint_min 60 \
-c:a aac -b:a 160k \
-f mpegts "srt://[server-ip]:8890?streamid=publish:[stream-id]:meshcast:[publish-key]&pkt_size=1316&latency=400000"
SRT Latency Presets
| Network | URL Option | Tradeoff |
|---|---|---|
| Wired or strong LAN | latency=200000 | Lower delay, less time for retransmits |
| Normal internet uplink | latency=400000 | Good default for OBS publishing |
| Mobile, Wi-Fi, or congested uplink | latency=800000 | More smoothing, more end-to-end delay |
SRT vs RTMP
| Feature | RTMP | SRT |
|---|---|---|
| Error Correction | None | Built-in ARQ |
| Encryption | None in the dashboard RTMP URL | Optional AES with a configured passphrase; not enabled by the dashboard URL |
| Latency | 2-5 seconds | 0.5-2 seconds |
| Firewall Friendly | TCP 1935 | UDP 8890 |
| Best For | Standard streaming | Unreliable networks |
WebRTC/WHIP Publishing
WebRTC/WHIP offers the lowest publishing latency and is supported by current OBS releases as well as web browsers.
Browser Publishing
Use our built-in publisher at:
https://app.meshcast.io/studio
WHIP Endpoint
https://app.meshcast.io/api/gateway/whip/[publish-key]
OBS WHIP Setup
- Go to Settings > Stream
- Set Service to WHIP, not Custom
- Paste the complete dashboard WHIP URL into Server
- Paste the same
pk_...Publishing Key into Bearer Token - In Settings > Output, use an H.264 video encoder and Opus audio
- Set B-frames to
0(or clear Use B-Frames)
RTMP normally uses AAC audio, while WHIP uses Opus. If OBS says it must change to FFmpeg Opus, it is normally changing the audio encoder. On Apple-silicon Macs, video can remain on Apple VT H264 Hardware Encoder. Confirm the selected video encoder under Settings > Output.
WebRTC provides sub-second latency. Use it for interactive streams, interviews, or real-time applications.
Troubleshooting
Common Issues
| Problem | Cause | Solution |
|---|---|---|
| "Invalid stream key" | Wrong, expired, or public key used for publishing | Use the pk_... Publish Key from the dashboard |
| Connection drops | Bitrate too high for upload | Keep upload speed at least 1.5 times the total stream bitrate |
| Choppy playback | Wrong keyframe interval | Set keyframe interval to exactly 2 seconds |
| SRT rejected | Missing publish: prefix or wrong key type |
Use streamid=publish:st_...:meshcast:pk_... |
| No audio | Wrong audio codec | Use AAC for RTMP/SRT and Opus for WHIP |
| WHIP URL reports a channel or stream-key error in OBS | OBS is using the Custom RTMP interface or the public st_... Stream ID |
Set Service to WHIP and use the dashboard URL plus the private pk_... Publishing Key |
| High CPU on a Mac | OBS is using x264 software video encoding | On Apple silicon, select Apple VT H264 Hardware Encoder; on Intel, reduce resolution/FPS and try superfast or ultrafast x264 |
| High latency | VBR or large buffer | Use CBR, reduce buffer size |
| Video not showing in OBS Browser Source | HEVC/H.265 codec not supported | Use H.264 encoder instead of HEVC (see warning) |
| OBS says Streaming, but WebRTC/WHEP stays black or loading | The H.264 encoder is sending B-frames | Set B-frames or Max B-frames to 0, or clear Use B-Frames, then stop and restart the stream (see instructions) |
Testing Your Stream
- Start your stream with OBS or FFmpeg
- Check the Dashboard - your stream should appear as "Live"
- Open the viewer link in another browser/device
- Check telemetry for bitrate, packet loss, and latency
Contact support at steve@seguin.email with your account email, approximate failure time, OBS version, Mac chip/processor, and an OBS log. Do not send your full Publishing Key.