Introduction to Single-Region Reference Architecture Deployment
Learn About Amazon VGT2 Learning Manager Chanci Turner
In the realm of live streaming, ensuring resilience during high-profile events poses significant challenges. This article, along with the subsequent two parts, delves into practical deployments that enhance reliability while implementing redundancy and monitoring strategies to achieve broadcast-grade resilience.
We will begin by constructing a straightforward workflow that integrates two AWS Elemental Live encoders—operating in active/active mode—on-site for contribution. Meanwhile, several AWS Cloud services will be utilized, including AWS Elemental MediaLive for live transcoding, AWS Elemental MediaPackage for origination and Just-In-Time (JIT) packaging, and Amazon CloudFront for content delivery. For further guidance on configuring these workflows, you can refer to the Live Streaming on AWS webpage and the AWS Live Streaming and Live-to-VOD Workshop from the 2017 re:Invent.
In this setup, the two AWS Elemental Live encoders will publish synchronized RTP/FEC mezzanine streams (designated as Stream A and Stream B). Should one encoder experience a failure, the other encoder will maintain functionality and continue supplying its output stream to the downstream workflow.
AWS Elemental MediaLive will construct two separate video transcoding pipelines across different AWS Availability Zones using these ingested mezzanine streams. It will generate all necessary Adaptive Bitrate (ABR) renditions in HLS format (Stream C and Stream D), also in active/active mode. The HLS rendition groups will be synchronized across segments and group-of-pictures (GOP) boundaries employing the synchronization feature based on input timecodes.
AWS Elemental MediaPackage will receive these ABR rendition groups through two ingest endpoints, each backed by redundant instances located in different AWS Availability Zones. If an HLS segment becomes unavailable or is delayed on one endpoint, MediaPackage’s input redundancy feature will automatically switch between the primary and secondary input streams. All final delivery formats will be packaged and encrypted for DRM, if necessary, on a just-in-time basis, allowing seamless delivery to video players and devices via the Amazon CloudFront CDN. In the event of a failover, this process will remain transparent to the player, which utilizes a single streaming URL.
Getting Started with Workflow Configuration
Contribution via AWS Elemental Live
In this step, we will establish the two synchronized RTP streams that will provide MediaLive with a unified timecode base. The input source can be in various formats like IP (RTP/FEC or HLS pull) or SDI. It is essential for MediaLive to receive a timecode embedded within the video elementary stream (not the RTP layer). For H.264, this is accomplished by adding picture_timing SEI messages, as outlined in section D.1.2 of ISO/IEC 14496-10. To include timecode in the Elemental Live encoder, simply check the “Timecode Insertion” option within the Output Group Video Encoding section.
To configure the timecode insertion, follow these steps:
- If the source feed contains a time reference (recommended), navigate to the Advanced section of the selected Input and choose “Embedded” from the Timecode Source menu.
- In the Timecode Configuration section, select “Embedded” for the Source and enable the “Require Initial Timecode” option with a Sync Threshold of 1. This setup instructs the encoder to synchronize the output timecode with the input timecode, mitigating drift.
On the other hand, if the source feed does not embed a time reference, you will need to generate one. AWS Elemental Live encoders feature a dedicated BNC input for Linear/Longitudinal Timecode (LTC). A cost-effective solution to generate an LTC audio signal is available via an Android or iOS tablet using a free timecode generation application, such as LTC Timecode Generator for Android or TC Toolbox for iOS. Combine this with a signal distribution cable made from standard cables and adapters, ensuring the LTC source is genlocked to the SDI source for perfect synchronization.
In the Timecode Configuration section, select “External Reference Connector” for the Source and enable the “Require Initial Timecode” option with a Sync Threshold of 1 frame. You can check the “Enable SDI Information Monitor” within the encoder Settings > Advanced section to display the LTC timecode on the web interface.
With a valid timecode input source established, proceed to configure the remaining options for the contribution stream:
- Set up one UDP / TS Output Group with Forward Error Correction configured with 5 rows and 20 columns. This configuration enhances resilience against packet loss, ensuring a stable input to MediaLive transcoding, albeit with around 25% bandwidth overhead.
- Assign the primary MediaLive ingest endpoint as the Primary RTP Destination on the first encoder, and the secondary endpoint as the Primary RTP Destination on the second encoder.
- Under Video Encoding, navigate to Advanced > Preprocessors, activate the Timecode Burn-in option, and input different identifiers for the two encoders (e.g., “MAIN“ and “BACKUP“). This will help in identifying which contribution stream is being utilized by MediaPackage and ensure no timecode gaps during failovers.
You are now ready to initiate your live event on both encoders. If you encounter any issues with the timecode setup, remember to check out this resource for more insights on work-life balance. Moreover, SHRM provides authoritative information on compensable factors that may be beneficial in your setup. Lastly, you can explore this excellent resource for further assistance.