IVS Real-Time (Stages) Configuration

Configure AWS IVS Real-Time stages for live streaming with RTMPS ingest, WebRTC viewers, and broadcast tool support.

AWS IVS Real-Time uses WebRTC-based stages to support ultra-low-latency live streaming. Broadcasters push a stream via RTMPS (e.g. OBS), and viewers join the stage via the IVS Web Broadcast SDK. This guide covers the Nomad application settings and instructions for configuring common broadcast tools.

For AWS infrastructure setup (IAM, EventBridge, SNS), see the IVS Real-Time Infrastructure Guide in the infrastructure docs.

Application Configuration

IVS Real-Time settings live under application/ivsRealtimeSettings in the tenant configuration JSON. All keys must be camelCase — PascalCase keys are silently ignored by the deserializer.

FieldTypeDefaultDescription
isEnabledboolfalseMust be true to enable the IVS Real-Time provider
isRecordingEnabledboolfalseShow recording controls in the UI; required for composition recording
whipIngestEnabledboolfalseIf true, creates an RTMPS IngestConfiguration on stage creation so broadcasters can push via OBS or other RTMPS tools
tokenDurationMinutesint720Lifetime of generated participant tokens (for WebRTC viewers)
maxParticipantsint0Maximum simultaneous stage participants (0 = IVS default)
recordingModeint21 = AutoParticipant (per-participant files), 2 = Composite (mixed video)
broadcastToChannelEnabledboolfalseIf true, composition simultaneously broadcasts to an IVS Low-Latency channel

Example

{
  "application/ivsRealtimeSettings": {
    "isEnabled": true,
    "isRecordingEnabled": true,
    "whipIngestEnabled": true,
    "tokenDurationMinutes": 720,
    "maxParticipants": 0,
    "recordingMode": 2,
    "broadcastToChannelEnabled": false
  }
}

After updating config, Lambda containers must be recycled to pick up changes (run SnapStartVersionPublisherLambdaFunction or update a Lambda environment variable to force replacement).

Creating a Live Channel

  1. Ensure isEnabled: true in application/ivsRealtimeSettings and Lambda containers have been recycled.
  2. Create a Live Channel in the Nomad Admin UI with the IVS Real-Time provider.
  3. Nomad creates an IVS Stage and (if whipIngestEnabled: true) an RTMPS IngestConfiguration.
  4. The channel's Input Ingest Address (RTMPS server URL) and Stream Key appear in the property panel.

The stream key is permanent — it does not expire and does not need to be regenerated between streams.

Channel Status

EventStatus Change
Broadcaster connects and publishesIdle → Running
Broadcaster disconnectsRunning → Idle
Recording startedRecordingStatus → Recording
Recording stoppedRecordingStatus → Idle

Streaming with OBS Studio

IVS Real-Time requires H.264 video with no B-frames. This is the most common cause of connection failures — OBS must be configured with a compatible encoder profile.

Stream Settings

  1. Open Settings → Stream
  2. Set Service to Custom...
  3. Set Server to the channel's Input Ingest Address (e.g. rtmps://xxxx.global-contribute.live-video.net:443/app/)
  4. Set Stream Key to the channel's Stream Key

Encoder Settings (required)

Switch to Advanced output mode in Settings → Output, then configure the encoder:

SettingRequired ValueWhy
Encoderx264 or hardware H.264IVS Real-Time requires H.264
Profilebaseline or mainhigh profile enables B-frames by default
B-frames0IVS Real-Time rejects streams with B-frames
Tunezerolatency (recommended)Minimizes encoder latency
Keyframe Interval2 secondsRecommended for low-latency ingest

If OBS connects briefly then disconnects with no clear error, the encoder is almost certainly sending B-frames. Set B-frames to 0 and verify the profile is baseline or main.

You can also add bframes=0 in the x264 Options field as an explicit override.

Streaming with FFmpeg

ffmpeg -i input.mp4 \
  -c:v libx264 -profile:v baseline -tune zerolatency \
  -x264opts "bframes=0:keyint=60" \
  -b:v 3000k -maxrate 3000k -bufsize 6000k \
  -c:a aac -b:a 128k \
  -f flv "rtmps://STAGE_RTMPS_ENDPOINT/app/STREAM_KEY"

Key flags: -profile:v baseline disables B-frames; bframes=0 in -x264opts is an explicit safety net.

Streaming with Hardware Encoders (vMix, Wirecast, etc.)

Configure the RTMPS output with:

  • Protocol: RTMPS (not RTMP)
  • Server/URL: the channel's Input Ingest Address
  • Stream Key: the channel's Stream Key
  • Video Codec: H.264, Baseline or Main profile, B-frames disabled

Most broadcast SDKs and hardware encoders expose B-frame control in advanced codec settings.

Common Issues

Error / SymptomCauseFix
OBS disconnects immediatelyEncoder sending B-frames (B_FRAME_PRESENT)Set profile to Baseline/Main, B-frames = 0
"Cannot access specified channel" in OBSWrong server URL (e.g. using the WHIP URL)Use the RTMPS Input Ingest Address, not the WHIP endpoint
Channel stuck on Idle after stream startsEventBridge or Lambda delivery issueCheck with your Nomad administrator

Did this page help you?