The development stage of video processing solutions may cause some problems. During creating video-on-demand software or a live streaming solution, it is necessary to decide what kind of services you will utilize to make your software work. Amazon Web Services or AWS are the ones that should be considered. It’s high time to discuss how AWS Media Services can be integrated during your media project creation and how custom web application development services can help you.
First of all, let’s define AWS Media Services. They are cloud solutions for video processing that give opportunities to process, store, and transmit video using Over-the-Top or OTT technology. Moreover, it’s important that the charge for services is made only when everything is applied and there is a chance to build a scalable solution for video content processing without substantial time delays.
AWS Media Services allow developers to use the following kit of solutions to create media apps and websites:
- AWS Elemental MediaConnect is a good service for safe video stream transmission.
- AWS Elemental MediaConvert is a service which processes video files and gives developers an opportunity to make streaming content in a video-on-demand format.
- AWS Elemental MediaLive is a service for live streaming that allows converting video content for live streaming.
- AWS Elemental MediaPackage is a service for preparation and protection of video content that is delivered from the web. It is able to create video streams with the help of different standards and formats(e.g. MPEG-DASH, SmoothStreaming, etc.) for different devices like TVs, mobile phones, personal computers, tablets, etc.
- AWS Elemental MediaStore is an AWS storage that allows making low reading and recording delays with a large number of requests. As a result, users receive high-quality services.
- AWS Elemental MediaTailor is a service that works in a real-time mode and gives an opportunity to implement advertising into the video content on a server side.
AWS Media Services makes it possible to create video-on-demand content for broadcasting. Media companies are provided with a possibility to expand the audience because of giving them web services utilizing OTT technology. In addition, AWS is able to affect price reduction on infrastructure and optimize the content delivery process for providers and broadcasters of media content.
There are two use cases of media services from Amazon that you are able to utilize for your project: creating live streaming and creating a content library in video-on-demand format. Let’s discuss them more precisely.
There are several parts of the process of video broadcasting:
- AWS Elemental MediaLive. A coding of video or audio streams utilizing different codecs, subtitles overlay and watermark adding.
- AWS MediaStorage. It is an optimized media content storage if it’s necessary to store live video stream record. From time to time it can work improperly, so according to Amazon, it’s better to use AWS S3.
- AWS Elemental Media Package. The recorded video stream can be distributed using various technologies, e.g. Apple HLS, MPEG-DASH, Microsoft Smooth Streaming, etc.
- AWS CloudFront. CDN service is able to accelerate delivery in different geographical regions.
The process of live streaming development consists of several parts:
In order to make live streaming for a media project, it is necessary to create a channel in AWS Elemental MediaPackage for the processing of recorded video stream. It is able to be done with using AWS SDK or utilizing developer’s console. Creating a channel requires indicating channel ID. Nowadays at the input AWS, Elemental MediaPackage can operate only as an HLT protocol. Moreover, it’s necessary to customize endpoints. They are addresses where a streaming video can be received. These options are supported:
- Apple HLS
- Microsoft Smooth
- CMAF or Common Media Application Format
After these steps, it is high time to move to customization of MediaLive. First of all, it is important to make the Input (video stream source). Now MediaLive is able to get a file (MP4), a stream sent through RTMP/RTP/HLS protocols or AWS MediaConnent.
Let’s consider the example. An Input that gets a record from the screen over OBS (Open Broadcaster Software) uses RTMP protocol. After that, it’s high time to create a video stream processing channel in MediaLive. In order to do it, it’s necessary to choose a name, create IAM role, select the Input made before, and create an output group. The output group means a destination for a converted media stream.
AWS MediaLive supports these kinds of output groups:
- Apple HLS;
- Archivation of a video stream to S3;
- RTMP (broadcasting of video stream to streaming services: YouTube, Twitch etc.);
- Microsoft Smooth;
By the way, there are opportunities to create your own output group or select necessary one utilizing a template.
I hope that you have understood everything about live streaming. So, it’s high time to look through a short guide on how to create a video-on-demand format for your media project.
AWS Elemental MediaConvert services are able to make a streaming on-demand video with the help of Amazon tools. As you already know MediaLive processes streaming video in real time, but MediaConvert integrates the videos from S3 storage and result is saved on S3.
An open source solution has several steps for developers to follow:
- A source file is uploaded to S3 with a note for archiving to AWS S3 Glacier.
- A source video is validated according to the metadata template for AWS MediaConvert. Moreover, all received data is saved to a database.
- Jobs for video processing are made on the basis of a profile.
- Video result is saved to S3.
- Information from S3 is cached in CloudFront for acceleration of delivery,
- CloudWatch is utilized to find errors.
Of course, the process of AWS Media Services integration is not simple. It is important to have specific skills and experience in order to integrate everything and achieve good results.
Building a Serverless Live-streaming Platform with React & AWS
Nader Dabit -
Deploy Your React App to ECS (Fargate)
Mubbashir Mustafa -
Developing, Testing and Deploying AWS Lambda Functions written in ClojureScript
Jochen Bedersdorfer -
Desplegar Vue app + AWS ECS
Luis Eduardo Jiménez Robles -