Publishing Guide

Recommended encoder settings for streaming to Meshcast

Free access

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

These settings work well for most streaming scenarios. Adjust based on your upload speed and content type.

Video Bitrate

2,500 - 6,000 kbps
Higher for fast motion content

Audio Bitrate

128 - 320 kbps
AAC for RTMP/SRT; Opus for WHIP

Keyframe Interval

2 seconds
Required for smooth playback

Resolution

1920x1080 max
720p works great for most uses

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
Upload Speed Requirement

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.

  1. Go to Settings > Stream
  2. For RTMP or SRT, set Service to Custom
  3. For WebRTC, set Service to WHIP
  4. Copy the matching RTMP, SRT, or WHIP URL from your Meshcast dashboard
  5. Use your Publish Key (pk_...) for publishing. Do not use the public Stream ID (st_...) in OBS.
RTMP URL 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

  1. Go to Settings > Output
  2. Set Output Mode to Advanced
  3. Configure as shown below:
Setting Recommended Value
Video EncoderH.264: x264, NVENC, Quick Sync, AMD, or Apple VT Hardware when available
Rate ControlCBR
Bitrate4500 kbps (for 1080p30)
Keyframe Interval2 seconds
B-frames0 (required for WebRTC/WHEP playback)
x264 CPU Usage Presetveryfast; use superfast or ultrafast if the CPU is overloaded
Profilehigh
Meshcast WebRTC/WHEP requires B-frames to be disabled

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.

Apple silicon (M1, M2, M3, M4, or newer)

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.

Intel iMac or MacBook

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.

Avoid HEVC/H.265 for Compatibility

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 Bitrate160 kbps
Audio EncoderAAC for RTMP/SRT; Opus for WHIP
Sample Rate48 kHz
ChannelsStereo

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]
Important: Keyframe Interval

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
Important: Stream ID Format

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.

SRT Latency Values

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

  1. Go to Settings > Stream
  2. Set Service to Custom
  3. For Server, enter the full SRT URL including streamid, pkt_size, and latency
  4. 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 LANlatency=200000Lower delay, less time for retransmits
Normal internet uplinklatency=400000Good default for OBS publishing
Mobile, Wi-Fi, or congested uplinklatency=800000More smoothing, more end-to-end delay

SRT vs RTMP

Feature RTMP SRT
Error CorrectionNoneBuilt-in ARQ
EncryptionNone in the dashboard RTMP URLOptional AES with a configured passphrase; not enabled by the dashboard URL
Latency2-5 seconds0.5-2 seconds
Firewall FriendlyTCP 1935UDP 8890
Best ForStandard streamingUnreliable 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

  1. Go to Settings > Stream
  2. Set Service to WHIP, not Custom
  3. Paste the complete dashboard WHIP URL into Server
  4. Paste the same pk_... Publishing Key into Bearer Token
  5. In Settings > Output, use an H.264 video encoder and Opus audio
  6. Set B-frames to 0 (or clear Use B-Frames)
About the FFmpeg Opus prompt

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.

Lowest Latency Option

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

  1. Start your stream with OBS or FFmpeg
  2. Check the Dashboard - your stream should appear as "Live"
  3. Open the viewer link in another browser/device
  4. Check telemetry for bitrate, packet loss, and latency
Need Help?

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.