Last update:2026-04-15 18:50:18
This guide walks you through setting up low-latency live streaming with WebRTC playback. It covers two workflows:
| RTMP → WebRTC | End-to-End WebRTC | |
|---|---|---|
| Latency | Low (minor overhead from AAC-to-Opus transcoding) | Lowest |
| Encoder compatibility | Any RTMP encoder (OBS, FFmpeg, hardware encoders) | WHIP-compatible encoders, or OBS with a custom plugin |
| Setup complexity | Simpler — uses standard RTMP publishing | Requires WHIP configuration or plugin installation |
| Audio transcoding required | Yes — AAC to Opus (must be enabled by support) | No — Opus is used natively |
WebRTC playback requires your source stream to meet specific codec constraints. Configuring your encoder correctly from the start avoids playback failures and unnecessary transcoding.
Video Codec: H.264 without B-frames
WebRTC decodes frames in arrival order. B-frames (bi-directional predicted frames) require out-of-order decoding, which conflicts with WebRTC’s real-time jitter buffer and can cause playback errors or visual artifacts.
Audio Codec: Opus
The WebRTC specification requires Opus for audio. Modern browsers do not support other audio codecs in WebRTC sessions.
Pro Tip: If your source stream does not meet these requirements — for example, it includes B-frames or uses a non-Opus audio codec — the platform can transcode the stream to make it compatible. However, transcoding adds latency and may incur additional costs. This feature is not enabled by default. Contact our support team to enable it.
This workflow lets you publish with a standard RTMP encoder and deliver to viewers over WebRTC. It is the fastest path to WebRTC playback if you already have an RTMP-based publishing setup.
Warning: RTMP does not support the Opus audio codec. When using this workflow, your encoder must output AAC audio, and the platform will transcode it to Opus for WebRTC delivery. You must contact our support team to enable AAC-to-Opus transcoding before you begin. Without it, WebRTC playback will not have audio.
You must configure your encoder to produce a WebRTC-compatible video stream. The most critical setting is disabling B-frames.
The following steps use OBS Studio as an example:
bframes=0 to explicitly disable B-frames.For additional recommended encoder settings, refer to the image below.

rtmp://your-push-domain.com/appname/streamname
live).Warning: The appname value in your push URL must match an application name that has been configured in the Low Latency Streaming product console. If the application name does not exist in the console, stream ingest will be rejected.
For the lowest possible latency, use WebRTC for both publishing and playback. This eliminates the need for audio transcoding and reduces the end-to-end delivery path. We now support WHIP (WebRTC-HTTP Ingestion Protocol) — the modern industry standard as the ingest protocol. See the WHIP/WHEP Setup Guide for full configuration details.
Once your stream is live, use the following resources to verify playback. Test your stream instantly in any modern browser using the web demo player:
CDNetworks WebRTC Player — Enter your playback URL to preview the live stream with WebRTC delivery.