Getting Started

Eyevinn Live Encoding is an RTMP-to-HLS live transcoding service. It accepts an RTMP push stream from any encoder or streaming software and outputs live HLS (and optionally MPEG-DASH) segments. You can serve the output directly or push it to a CDN origin such as AWS MediaPackage.

Prerequisites

  • An OSC account (sign up here)
  • A streaming source that can push RTMP (OBS, ffmpeg, hardware encoder, etc.)

Step 1: Create the encoder instance

Via web console

  1. Go to app.osaas.io/dashboard/service/eyevinn-live-encoding
  2. Click Create encoder
  3. Fill in the fields:
Field Default Description
name Short identifier for the instance, e.g. mystream
HlsOnly true Output HLS only. Set to false to also generate MPEG-DASH
StreamKey stream Stream key used in the RTMP URL
OutputUrl CDN origin push URL (e.g. AWS MediaPackage ingest URL). Leave empty to serve directly from the instance
  1. Click Create and wait for the instance to show status Running

Via CLI

npx -y @osaas/cli create eyevinn-live-encoding mystream \
  -o StreamKey="mykey" \
  -o HlsOnly="true"

Step 2: Push your stream

Once the instance is running, click it in the dashboard to see its Connection details. The RTMP ingest address is shown there in the form:

rtmp://<host>:<port>/live/<StreamKey>

In OBS or any RTMP-capable encoder: - Server: rtmp://<host>:<port>/live - Stream Key: the value you set for StreamKey (default: stream)

Stream key requirement: use alphanumeric characters only. Characters such as ^, [, {, } are not valid in RTMP URLs and will prevent the encoder from starting.

With ffmpeg:

ffmpeg -re -i input.mp4 \
  -c:v libx264 -preset fast -b:v 2500k \
  -c:a aac -b:a 128k \
  -f flv rtmp://<host>:<port>/live/stream

Step 3: Play the stream

The HLS playlist is available at:

https://<instance-url>/live/<StreamKey>/index.m3u8

Open the URL in a HLS-capable player or test it with the HLS Playlist Viewer.

MPEG-DASH playback

When HlsOnly is set to false, the encoder also produces an MPEG-DASH manifest alongside the HLS output. The DASH manifest is available at:

https://<instance-url>/live/<StreamKey>/index.mpd

The StreamKey serves a dual role: it identifies the ingest stream on the RTMP side and also acts as the path segment for both playback formats. With HlsOnly=false, both the HLS playlist and the DASH manifest are available under the same StreamKey path, so a single encoder instance can serve players that support either format.

Format URL pattern Condition
HLS https://<instance-url>/live/<StreamKey>/index.m3u8 Always available
MPEG-DASH https://<instance-url>/live/<StreamKey>/index.mpd Only when HlsOnly=false

Pushing to a CDN origin

To deliver the stream at scale, set OutputUrl to your CDN ingest endpoint:

npx -y @osaas/cli create eyevinn-live-encoding mystream \
  -o StreamKey="mykey" \
  -o OutputUrl="https://<username>:<password>@xxxxx.mediapackage.us-east-1.amazonaws.com/in/v2/<channel-id>/channel"

When OutputUrl is set, the encoder pushes the transcoded HLS segments to the origin automatically.

Resources