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, copy its URL from the dashboard. Your RTMP ingest URL is:

rtmp://<instance-ip>:1935/live/<StreamKey>

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

With ffmpeg:

ffmpeg -re -i input.mp4 \
  -c:v libx264 -preset fast -b:v 2500k \
  -c:a aac -b:a 128k \
  -f flv rtmp://<instance-ip>:1935/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.

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