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.
Open the EC2 / VPC console.
Create a new Security Group in the target VPC.
Add inbound rules allowing RTMP:
Protocol: TCP
Port: 1935
Source:
Scenario A: on-prem encoder public IP range
Scenario B: Videolinq egress IP range
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
Click Create input.
Select RTMP (Push) as the input type.
Enter an input name that reflects the workflow:
rtmp-ingest-source(Scenario A)rtmp-ingest-videolinq(Scenario B)
If using a VPC:
Select the VPC and subnets
Attach the security group created earlier
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
Click Create channel.
Choose a channel class:
Standard for production (recommended)
Single Pipeline for testing or POCs
In Input attachments, attach the RTMP input created in Step 2.
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
Click Add output group.
Select RTMP.
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
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:
Click Add output group.
Select HLS.
Choose the destination:
S3 bucket, or
MediaPackage endpoint
Set segment duration (typically 4–6 seconds).
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
Review validation messages.
Click Create channel.
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:
Input health -
MediaLive input shows active video and audio.RTMP output state -
Output group shows publishing without errors.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.