Skip to main content

Configure AWS MediaLive

Learn how to configure AWS MediaLive to work with the Videolinq platform

Updated over a week ago

Introduction

AWS MediaLive can be integrated with Videolinq through two distinct, equally supported workflows. In both cases, MediaLive is responsible for ingesting or distributing video streams, while Videolinq handles real-time caption creation or caption pass-through, depending on its placement in the chain.

This article explains how to configure MediaLive for each workflow, focusing on how inputs, channels, and outputs are configured so that MediaLive and Videolinq operate together reliably.

MediaLive Behavior Relevant to Videolinq

MediaLive is designed to ingest stable streams and distribute them at scale. It assumes that incoming streams already have consistent timestamps and does not attempt to correct or regenerate them. This behavior is important to understand because Videolinq relies on predictable audio and video timing when generating or carrying captions.

In both workflows described below, MediaLive should be treated as an encoding and distribution service, not as a timing repair or synchronization layer.

Scenario A

MediaLive Feeds Videolinq for Caption Creation

Workflow Description

In this workflow, MediaLive ingests a live RTMP stream from an on-premises encoder or a third-party source. MediaLive then forwards that stream to Videolinq over RTMP. Videolinq receives the live signal, generates captions in real time from the audio, and outputs captions such as inApp URL, TTML, or WebVTT. Videolinq then delivers those outputs to the configured destinations.

MediaLive may also be used in parallel to generate additional distribution outputs, such as HLS, depending on the customer’s requirements.

The logical flow is:

On-Prem or Third-Party Source --> MediaLive (RTMP ingest) --> Videolinq (caption creation) --> Caption outputs (RTMP, TTML, WebVTT, URLs) --> MediaLive or other distribution targets.

MediaLive Configuration Role

In this scenario, MediaLive’s role is to ingest the live signal and forward it to Videolinq in a stable, predictable form. MediaLive does not generate captions and does not modify caption data. Its responsibility is limited to encoding and stream forwarding.

The MediaLive channel is configured with an RTMP input from the source and an RTMP output directed to Videolinq. Encoding settings should be fixed and consistent so Videolinq receives a stable stream for caption generation.

Caption Generation and Outputs

Videolinq creates captions from the incoming RTMP stream received from MediaLive. These captions can be delivered as embedded captions, sidecar files such as TTML or WebVTT, or pushed to downstream URLs depending on the Videolinq workflow configuration.

MediaLive may also generate HLS outputs in parallel if required, but caption creation occurs entirely within Videolinq.

Scenario B

Videolinq Sends RTMP + Captions to MediaLive

Workflow Description

In this workflow, Videolinq receives the customer’s source stream first and generates captions before MediaLive is involved. Videolinq embeds captions directly into the video stream, either as in-stream CEA-608/708 or as open captions. Videolinq then pushes a fully captioned RTMP stream into MediaLive.

MediaLive receives this captioned RTMP stream and continues the distribution chain by generating RTMP outputs, HLS outputs, or other supported delivery formats.

The logical flow is:

Customer Source --> Videolinq (captions creation) --> MediaLive (RTMP ingest) --> output to RTMP or HLS/DASH for CDN distribution

MediaLive Configuration Role

In this scenario, MediaLive functions strictly as a downstream distribution and packaging layer. It ingests the RTMP stream produced by Videolinq and preserves the embedded captions as the stream is encoded and delivered to its outputs.

MediaLive does not create, modify, or reinterpret captions in this workflow. Its responsibility is to maintain the integrity of the captioned stream while generating the required distribution formats.

Caption Pass-Through and Distribution

Captions embedded by Videolinq remain in-band as the stream passes through MediaLive. RTMP outputs carry the captions forward to downstream platforms, and HLS outputs can preserve caption data depending on the packaging configuration.

Because caption creation is completed before MediaLive ingest, MediaLive operates entirely within its standard encoding and distribution model.

MediaLive Configuration

This procedure explains how to configure AWS MediaLive so it can interoperate with Videolinq in both supported workflows:

  • Scenario A: MediaLive ingests a source and sends RTMP to Videolinq for caption creation

  • Scenario B: Videolinq sends RTMP with captions into MediaLive, which continues distribution

The MediaLive configuration steps are largely identical. The main difference is who pushes RTMP into MediaLive and where the RTMP output points.

1. (Optional) Create a Security Group

(Only required if using VPC networking)

If your MediaLive input or outputs are placed inside a VPC, create a security group first.

  1. Open the EC2 / VPC console.

  2. Create a new Security Group in the target VPC.

  3. Add inbound rules allowing RTMP:

    • Protocol: TCP

    • Port: 1935

    • Source:

      • Scenario A: on-prem encoder public IP range

      • Scenario B: Videolinq egress IP range

  4. Add outbound rules allowing:

    • RTMP to external destinations

    • HTTPS to AWS services (S3, MediaPackage)

Save the security group. You will attach it when creating the MediaLive input.

2. Create an RTMP Input

Console: MediaLive → Inputs → Create input

  1. Click Create input.

  2. Select RTMP (Push) as the input type.

  3. Enter an input name that reflects the workflow:

    • rtmp-ingest-source (Scenario A)

    • rtmp-ingest-videolinq (Scenario B)

  4. If using a VPC:

    • Select the VPC and subnets

    • Attach the security group created earlier

  5. Create the input.

After creation, copy the RTMP ingest endpoint and stream key.

  • Scenario A: give this RTMP endpoint to the customer encoder.

  • Scenario B: configure Videolinq to push RTMP to this endpoint.

3. Create a MediaLive Channel

Console: MediaLive → Channels → Create channel

  1. Click Create channel.

  2. Choose a channel class:

    • Standard for production (recommended)

    • Single Pipeline for testing or POCs

  3. In Input attachments, attach the RTMP input created in Step 2.

  4. Leave CDI settings disabled.

    • RTMP workflows do not use CDI.

    • Enabling CDI without CDI inputs causes validation errors.

Proceed to encoder configuration.

4. Configure Encoder Settings (Video & Audio)

Screen: Channel → Encoder settings

Configure encoding in a fixed manner to support caption creation or caption pass-through.

For video:

  • Frame rate: fixed (match source, e.g., 25 / 29.97 / 30)

  • GOP structure: fixed

  • GOP size: 2 seconds is a common baseline

  • Scene-change GOP insertion: disabled

  • Rate control: CBR or constrained VBR

For audio:

  • Codec: AAC

  • Sample rate: 48 kHz

  • Channels: match source

These settings apply to both scenarios. The difference is not how MediaLive encodes, but where captions are generated or carried.

5. Add Output Groups

Screen: Channel → Output groups

You may configure one or both of the following output types.

5.1 Add an RTMP Output Group

  1. Click Add output group.

  2. Select RTMP.

  3. Configure the destination based on the scenario:

Scenario A (MediaLive → Videolinq)

  • Destination URL: Videolinq RTMP ingest URL

  • Stream key: provided by Videolinq

  • Output name: rtmp-to-videolinq

Scenario B (MediaLive → Distribution)

  • Destination URL: downstream RTMP endpoint

  • Stream key: downstream platform key

  • Output name: rtmp-to-distribution

  1. Assign the video and audio encodes created earlier.

MediaLive will either:

  • Feed Videolinq for caption creation (Scenario A), or

  • Distribute an already captioned stream (Scenario B).

5.2 (Optional) Add an HLS Output Group

If HLS delivery is required:

  1. Click Add output group.

  2. Select HLS.

  3. Choose the destination:

    • S3 bucket, or

    • MediaPackage endpoint

  4. Set segment duration (typically 4–6 seconds).

  5. Keep encoding settings consistent with RTMP outputs.

If the HLS output is delivered through Amazon CloudFront, CloudFront should point to the HLS origin (S3 or MediaPackage), not directly to MediaLive.

Caption behavior:

  • Scenario A: captions are generated and delivered by Videolinq

  • Scenario B: captions are preserved from the RTMP input provided by Videolinq

6. Create and Start the Channel

  1. Review validation messages.

  2. Click Create channel.

  3. Once created, click Start.

MediaLive will wait for the RTMP input to become active.

7. Connect the RTMP Sender

  • Scenario A:
    Configure the customer’s encoder to push RTMP to the MediaLive input endpoint.

  • Scenario B:
    Configure Videolinq to push RTMP to the MediaLive input endpoint, with captions enabled (CEA-608/708 or open captions).

Once RTMP is flowing, MediaLive outputs should become active automatically.

8. Validate The Operation

Confirm the following:

  1. Input health -
    MediaLive input shows active video and audio.

  2. RTMP output state -
    Output group shows publishing without errors.

  3. HLS delivery (if enabled) -
    Playlists and segments are generated and accessible at the destination.

At this point, MediaLive is fully configured to operate with Videolinq under either workflow.

Summary

  • Scenario A, MediaLive ingests the live source and forwards it to Videolinq so captions can be generated from the signal. Videolinq produces the caption outputs, while MediaLive may also provide supporting distribution outputs if required.

  • Scenario B, Videolinq produces a captioned RTMP stream first, and MediaLive receives that stream and continues distribution without altering caption data.

In both cases, correct MediaLive configuration focuses on stable RTMP ingest, fixed encoding behavior, and appropriate output group setup so Videolinq and MediaLive operate together as intended.

Did this answer your question?