Simulcast a webinar with RTMP egress
Your webinar already runs on Orbit; RTMP egress is how the same broadcast also goes out on the platforms where your audience actually is. An RTMP egress takes the scheduled room’s composite video and pushes it, live, to an RTMP ingest that you own the credentials for: YouTube Live, LinkedIn Live, a corporate Vimeo account, or any self-hosted RTMP server. This guide walks the full lifecycle: provision the room, start one egress with several simultaneous destinations, stop it, and recover when a destination drops mid-show.What RTMP egress is
An egress is one outbound live push attached to one scheduled video room. Orbit renders the room composite once (the same layout a recording would use) and streams it as a single adaptive-bitrate RTMP push to every destination you list on that egress. Each egress has its own id, so you can run several egresses on one room and stop any one of them without touching the others or the room itself. Two related surfaces are easy to confuse with it:- Recording writes the composite to a file in your storage bucket. It can run next to an RTMP egress on the same room; stopping one never stops the other. See Bring your own storage for recordings.
- HLS/DASH playback is pull-based adaptive streaming for viewers Orbit serves. RTMP egress is the opposite direction: a push out to a third-party ingest you authenticate against, for audiences on platforms you do not operate.
Prerequisites
Before the first request below, you need:- A scheduled video room. The egress endpoints take the scheduled room id in the path. If you do not have one yet, follow Registration-gated video webinars up to the point where the room exists, then come back here.
- A broadcast destination for each platform. On each platform’s live
encoder setup page, copy the ingest URL and the stream key. YouTube gives
you
rtmps://a.rtmp.youtube.com/live2plus a key; LinkedIn and Vimeo hand you the equivalent pair. The URL must start withrtmp://orrtmps://and must include the ingest’s app path (the/live2part), not just the host. - An API key with the
video:writescope, held by a user with the owner or admin role. Starting a public stream is deliberately restricted to the host tier; other roles receive a 403. - A recording consent receipt, if your organization requires one. An
RTMP egress leaves a persistent recording on the destination platform, so
tenants in two-party-consent jurisdictions must pass
recording_consent_receipt_idon the start call, exactly as the in-app recording paths do.
Provision the scheduled room
RTMP egress never creates a room; it attaches to one. Create and schedule the room as usual (see Registration-gated video webinars) and note its id, for exampleroom_9f2c below. The room does not need to be
live when you start the egress; the push begins carrying content as soon as
the room session is producing video.
Start an egress
POST /api/v1/video/rooms-scheduled/{id}/egress/rtmp starts one egress. The
body splits each destination into rtmp_url and stream_key so the key is a
clearly labelled secret field:
layout picks the composite layout the destinations receive: grid,
speaker, single-speaker, picture-in-picture, sidebar, highlight, or
gallery. It defaults to speaker, which is usually right for a webinar
because it foregrounds the presenter.
The response returns the egress id plus every destination URL without its
key, so you can display them safely:
egress_id; it is the handle for the matching stop call later.
Simulcast to several platforms in one egress
A simulcast does not need one egress per platform. Pass the first destination asrtmp_url / stream_key and the rest in additional_destinations; the
composite is rendered once and fanned out to all of them inside the same
egress, so three platforms cost one render, not three. You may add up to four
additional destinations, five simultaneous destinations per egress in total,
and one egress may not list the same URL-plus-key destination twice.
The worked example below takes one scheduled webinar to YouTube Live,
LinkedIn Live, and a corporate Vimeo account at the same time:
backup_rtmp_url + backup_stream_key,
supplied together): if the primary ingest refuses the push at launch, the
egress starts against the backup instead of failing.
Lifecycle: stop one egress
DELETE /api/v1/video/rooms-scheduled/{id}/egress/rtmp/{egressId} stops exactly
that egress, including its whole fan-out when it simulcasts. The call is
idempotent, and it leaves every other egress, the room, and any recording
running untouched:
When an egress stops unintentionally
Three failures cover most incidents, and each has the same recovery: start a new egress with corrected destinations.- The destination refuses the push at launch. Usually a mistyped or
revoked stream key, or an ingest that was never armed on the platform side.
The start call fails rather than leaving a half-live stream; if you
supplied
backup_rtmp_url/backup_stream_key, the egress transparently starts against the backup and your broadcast survives. - The destination ends the stream mid-show. The platform rotated the key, an admin on the platform stopped the live event, or the account hit a platform-side limit. The egress reports the failed destination and stops pushing to it; verify the key on the platform, then POST a new egress to re-attach. Minutes you missed are not backfilled; live means live.
- The request was rejected before launch. A 422 at start is almost always
one of these: the URL does not begin with
rtmp://orrtmps://; the URL is a bare host with no ingest app path (rtmps://a.rtmp.youtube.com/live2is valid,rtmps://youtube.comis not); a backup URL was given without its key or vice versa; or two listed destinations are the same URL and key. A 403 means the caller lacks the owner/admin role or thevideo:writescope; a 503 means Orbit Media is not configured for the tenant, which your administrator enables.
Monitoring and history
Three surfaces tell you what your egresses are doing:- The start response gives you the
egress_idand the destination URLs (keys stripped), which is enough to drive a “live on” banner. - The room’s settings carry the active egress list: for each running egress, its id, ingest URL, start time, and who started it. Keys never appear there.
- The session history records the outcome after the room ends. Each finished session’s record includes its media metrics and egress status, so “did the LinkedIn leg actually run” is answerable after the fact; see Video room history for reading that trajectory.
Related guides
- Registration-gated video webinars — the room this guide attaches to.
- Video room history — per-session records, including what the egress did.
- Video engagement analytics — the in-room audience side of a webinar.
- WHEP guest player — embed low-latency viewing for guests who stay on your own site instead of a social platform.