# AWS CDK MediaServices Reference Architectures
## Table of content
- [Introduction](#introduction)
- [Services](#services)
- [Prerequisites](#prerequisites)
- [Reference Architectures](#refarch)
- [License](#license)
## Introduction
The aim of this project is to provide a broader understanding of the media services as well as how to implement them to build media supply chain, media infrastructure and media application workflow.
## Services
This project will provide you with deployment samples for the following AWS services:
* AWS Elemental Connect (EMX)
* AWS Elemental MediaLive (EML)
* AWS Elemental MediaLive Statmux (EML-STX)
* AWS Elemental MediaLink (EMK)
* AWS Elemental MediaConvert (EMC)
* AWS Elemental MediaPackage (EMP)
* AWS Elemental MediaStore (EMS)
* AWS Elemental MediaTailor (EMT)
* AWS Elemental Channel Assembly (ECA)
* AWS Elemental Secure Packager and Encoder Key Exchange (SPEKE)
* Amazon Interactive Video Service (IVS)
Some examples will also demonstrate the integration of MediaServices with other AWS services through detailed use cases.
## Prerequisites
Before you start with this project make sure you are familiar with the following tools:
* AWS CLI v2
* AWS CDK
* AWS SDK for Python
## Reference Architectures
| Example | Type | Description |
|---------|------|-------------|
| [live encoding loop (LILO)](LILO/README.md) | Foundational | The live encoding loop example is intended to provide a live channel from a video file. |
| [Live OTT workflow (OTT)](OTT/README.md) | Advanced | Creating a highly configurable Live OTT streaming using MediaLive, MediaPackage and CloudFront. |
| [Live Ad insertion workflow (SSAI)](SSAI/README.md) | Advanced | Example to provide Dynamic Ad Insertion using MediaTailor. |
| [Sustainable Outputs from MediaLive (SUSTAINABILITY_LIVE)](SUSTAINABILITY_LIVE/README.md) | Professional | Sustainable code example to cover how to share encodes across multple outputs. |
| [MediaLive Private Networking Output (PRIVATE_LIVE)](PRIVATE_LIVE/README.md) | Professional | Sample code for sending an output from MediaLive via a VPC (and a private subnet). This could be to your own Origin solution running in your VPC. |
| [Live2VoD workflow (LIVE2VOD)](LIVE2VOD/README.md) | Professional | Example for demonstrating a Live2VoD workflow in CDK, which uses a REST API to initiate the Harvest with MediaPackage and EventBridge to capture the completition. |
| [Audio Only with EMP workflow (AUDIO_ONLY_EMP)](AUDIO_ONLY_EMP/README.md) | Professional | Example use case of using Elemental MediaLive & Elemental MediaPackage to create a simple audio only workflow. |
| [Monitoring your Live Workflow (LIVE_CW_MONITOR)](LIVE_CW_MONITOR/README.md) | Professional | Example of using CloudWatch dashboards to monitor your live workflow with CloudWatch metrics produced by MediaLive & MediaPackage. |
## Coming Soon
| Example | Type | Description |
|---------|------|-------------|
| Social Network Publication (SNP) | Foundational | This example is intended to provide a live channel to publish directly to social network platform using RTMP output. |
| Static packaging/origination (ORG) | Foundational | |
| Feeder (FDR) | Foundational | |
| Subscriber local (SBRL) | Foundational | |
| Subscriber remote (SBRR) | Foundational | |
| Live to archive workflow (L2A) | Advanced | |
| Live broadcast workflow (BSCT) | Advanced | |
| Live OTT workflow (OTT_SECURE) | Advanced | Creating a highly configurable Live OTT streaming using MediaLive, MediaPackage and CloudFront using Secure Media Delivery at the Edge Solution. |
| Ad insertion workflow (SSAI_SECURE) | Advanced | Example to provide Dynamic Ad Insertion using MediaTailor. This example provides an integration with the Secure Media Delivery at the Edge solution for a secure streaming. |
## License
This library is licensed under the MIT-0 License. See the LICENSE file.