Publishing Guide
Recommended encoder settings for streaming to Meshcast
Start streaming without an account. Create a free account for RTMP/SRT/HLS. HLS embeds for free tiers are limited to meshcast.io / vdo.ninja.
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
Stream Settings
- Go to Settings > Stream
- Set Service to Custom
- Enter the Meshcast RTMP URL from your dashboard
- Use your Publish Key (
pk_...) for publishing. Do not use the public Stream ID (st_...) in OBS.
rtmp://[server-ip]:1935/[publish-key]
In OBS you can paste the full RTMP URL in the Server field and leave Stream Key empty, or use rtmp://[server-ip]:1935 as Server and paste the same pk_... Publish Key in Stream Key.
Output Settings
- Go to Settings > Output
- Set Output Mode to Advanced
- Configure as shown below:
| Setting | Recommended Value |
|---|---|
| Encoder | x264 or NVENC H.264 (see note below) |
| Rate Control | CBR |
| Bitrate | 4500 kbps (for 1080p30) |
| Keyframe Interval | 2 seconds |
| CPU Usage Preset | veryfast (or faster if CPU allows) |
| Profile | high |
| Tune | zerolatency (for low latency) |
If you need viewers to watch in OBS Browser Source or older browsers, use H.264 encoding (x264, NVENC H.264, AMF H.264).
HEVC/H.265 requires Chromium 137+ for WebRTC playback. OBS Browser Source currently uses Chromium ~127, which cannot decode HEVC streams.
See our HEVC compatibility guide for more details.
Audio Settings
| Setting | Recommended Value |
|---|---|
| Audio Bitrate | 160 kbps |
| Audio Encoder | AAC |
| 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/[publish-key]
FFmpeg Example
ffmpeg -i input.mp4 \
-c:v libx264 -preset veryfast -b:v 4500k \
-maxrate 4500k -bufsize 9000k \
-g 60 -keyint_min 60 \
-c:a aac -b:a 160k \
-f flv rtmp://[server-ip]:1935/[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 -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 (use RTMPS) | AES-128/256 |
| Latency | 2-5 seconds | 0.5-2 seconds |
| Firewall Friendly | TCP 1935 | UDP 8890 |
| Best For | Standard streaming | Unreliable networks |
WebRTC/WHIP Publishing
WebRTC offers the lowest latency (~500ms) and works directly from 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]
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 | Lower bitrate to 80% of upload speed |
| 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 codec (not MP3 or Opus for RTMP) |
| 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) |
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 stream key and a description of the issue.