With the increased adoption of online collaboration tools paired with an uptick in customers and employees who prefer attending meetings virtually, companies’ needs for live streaming platforms are more prevalent than ever. Businesses are on the lookout for simple live-streaming solutions that not only allow them to effectively interact and share information with employees and/or other audiences, but also meet their compliance requirements.
One of TrackIt’s clients was in need of a cloud-based live streaming platform to host its health & fitness related training programs. The company wanted a platform that could record live training sessions, and also expressed its need for a flexible audio chat room functionality that would allow its speakers to switch between two modes during live streaming sessions:
- Presentation Mode (audio chat disabled): the speaker alone can speak, viewers in the room are muted and cannot participate
- Interactive Mode (audio chat enabled): viewers in the chat room are unmuted and can interact with the speaker
“Video and rich media is becoming a de-rigeur component for businesses to communicate with their clients, partners and employees. Live streaming is now an easy reach for almost any company to use in its day-to-day business. We’re always ready to help the community, here’s how to meet with us.” Brad Winett, President, TrackIt
“TrackIt has developed and published a baseline how-to guide for those who would like to get started implementing their own live streaming capabilities. For our own clients, we start with this framework and build polished and fully customized production-ready solutions” Ludovic Francois, CEO, TrackIt
- Solution Architecture – Live Streaming Pipeline
- Tutorial Prerequisites
- AWS Services Used
- Amazon DynamoDB
- AWS Lambda
- Amazon API Gateway:
- AWS Elemental MediaLive:
- AWS Elemental MediaPackage
- Amazon S3 (Simple Storage Service)
- Amazon CloudFront:
- AWS Route 53:
- Other Services Used
- Streaming Software
- Deployment Prerequisites
Solution Architecture – Live Streaming Pipeline
- An AWS account
- Terraform CLI installed (version >= 0.12)
- AWS CLI installed
- Git CLI installed
This tutorial uses the Terraform CLI (command-line interface).
Terraform is an open-source infrastructure as code software tool that provides a consistent CLI workflow to manage hundreds of cloud services. Terraform codifies cloud APIs into declarative configuration files. Terraform works on macOS, FreeBSD, Linux, OpenBSD, Solaris, and Windows.
AWS Services Used
Amazon DynamoDB is a fully-managed proprietary NoSQL database service offered by AWS that supports key-value and document data structures
AWS Lambda is a serverless compute service that lets you run code without provisioning or managing servers, creating workload-aware cluster scaling logic, maintaining event integrations, or managing runtimes.
The lambda functions used in this tutorial are linked to other services in order to create, start, stop, delete live streams or set CloudFront distribution to a live stream.
Amazon API Gateway is a fully managed service that makes it easy for developers to create, publish, maintain, monitor, and secure APIs at any scale
API Gateway allows us to provide an API to handle live streams. The API will also trigger the lambda functions
AWS Elemental MediaLive is a broadcast-grade live video processing service. It lets you create high-quality video streams for delivery to broadcast televisions and internet-connected multiscreen devices, like connected TVs, tablets, smart phones, and set-top boxes.
AWS Elemental MediaPackage is a just-in-time video packaging and origination service that helps deliver highly secure, scalable, and reliable video streams to various playback devices and content delivery networks (CDNs).
Amazon S3 is an object storage service that offers industry-leading scalability, data availability, security, and performance.
S3 buckets are used in this tutorial to store live streams records in MPEG-TS format.
Amazon CloudFront is a fast content delivery network (CDN) service that securely delivers and cache data, videos, applications, and APIs to customers globally with low latency, high transfer speeds, all within a developer-friendly environment.
In this tutorial, CloudFront helps deliver live streams on a custom domain name.
AWS Route 53 is a highly available and scalable cloud Domain Name System (DNS) service.
Route53 helps deliver live streams on a specific address.
Other Services Used
Streaming software is used at the video source to ingest the live stream. We have used OBS (Open Broadcaster Software) in this tutorial.
Postman is an API client that makes it easy for developers to create, share, test and document APIs.
- You must have an archive S3 bucket.
- You must have AWS CLI installed
- You must have AWS credentials configured in AWS CLI
- You must have a MediaLive input security group (currently the input security group isn’t manageable by Terraform).
- If using AWS CloudFront, you must have an ACM certificate located in us-east-1 and also an AWS route53.
First, create a folder for the Terraform module and a main.tf file in order to use it.
If on Windows, use the following command :