A Gentle Introduction to Amazon Elastic Transcoder
Storytime! I once had a project requirement where I was supposed to convert some of the videos taken by CCTV cameras to various images in a thumbnail format. The entire process was supposed to be automated, and because the camera captured videos frequently it was like a streaming input that needed to be processed as soon as it was captured. At first, it didn’t seem like a very complex project.
Implementing the Requirements
But, when I started coding I realized the complexity involved. First, I thought to write the processing logic in Java, but then later decided to move to another language. I was using AWS S3 to store the captured videos. Because they needed immediate processing as soon as they are stored in S3, I used the S3 notification feature. This is what the workflow looked like:
- CCTV captures video and stores in S3;
- S3 triggers a notification and puts the video object in SQS;
- My custom application that’s listening to the SQS picks up the object and converts it to a thumbnail (this can be any other format and not only thumbnail, of course).
This workflow was fine and it’s not the only way to accomplish this goal. But, the issues I faced are worth discussing – and let’s see how AWS Transcoder made my life easy.
- Writing the logic was a pain and as mentioned if tomorrow you are planning to use some other language to write the same, you need to spend more time reimplementing it.
- Changes in the video input type may force you to change your logic
- Processing the frequent videos seamlessly can be tricky.
- Moreover, using a message bus can result in extra overhead.
- Licensing of audio and video codecs also needs to be considered.
Introducing Amazon Elastic Transcoder
AWS Transcoder can be a life savior in these types of scenarios. AWS transcoding can be used to process and convert media files’ format, size, or quality. According to AWS:
AWS Transcoder is media transcoding in the cloud. It is designed to be a highly scalable, easy to use and a cost effective way for developers and businesses to convert (or “transcode”) media files from their source format into versions that will playback on devices like smartphones, tablets and PCs.
AWS Transcoder frees you from all kind of administration, scaling, performance tuning and managing of transcoding infrastructure. Moreover, it supports most of the popular output formats. Amazon Elastic Transcoder supports transcoding to the following output formats:
- HLS using a MPEG-2 TS container to house H.264 video and AAC or MP3 audio
- Smooth Streaming using an fmp4 container to house H.264 video and AAC audio
- XDCAM using MXF container using MPEG-2 video and PCM audio
- MP4 container with H.264 video and AAC or MP3 audio
- WebM container with VP8 video and Vorbis audio
- FLV container with H.264 video and AAC or MP3 audio
- MPG container with MPEG-2 video and MP2 audio
- MP3 container with MP3 audio
- MP4 container with AAC audio
- OGG container with Vorbis or FLAC audio
- OGA container with FLAC audio
- FLAC container with FLAC audio
- Animated GIF
The Three Major Components of AWS Elastic Transcoder
I am sure you might have started thinking about the complexity involved while using AWS Transcoder. But don’t worry, it’s very simple to use. At a very high level, AWS Transcoder:
- Grabs your input file from an S3 bucket.
- Processes it.
- Stores the transcoded file in a target S3 bucket.
The three major components of Amazon Elastic Transcoder are:
These pipelines are like queues that manage your jobs. Transcoder processes jobs in the order in which they’re added to the pipeline. Pipelines can be one of two types – standard priority jobs and high priority jobs. From the name itself it’s clear that if you want the file to be transcoded immediately you can place the job in high priority pipeline, otherwise, you can put it in a standard priority pipeline
While creating jobs you can specify the settings regarding the location of the input/output file. From the documentation:
You can configure Elastic Transcoder to notify you when the status of a job changes, including when Elastic Transcoder starts and finishes processing a job, and when Elastic Transcoder encounters a warning or error condition.
Presets can be considered as templates specify most of the settings for the transcoded media file. Amazon Elastic Transcoder has pre-defined presets for various devices that remove the need to find the right settings for different devices through trial and error. Some of the existing presets provided by AWS transcoder can be seen in below diagram
Now let’s get back to my original issue discussed at starting and see how Transcoder helped me to create thumbnails from a video file.
Follow the below link in YouTube to see how easy it is to use AWS transcoder to generate transcoded videos or thumbnail.
AWS Transcoder Pricing Details
Now, if you are confident that AWS Transcoder is right for your project, it’s very important to know about its pricing structure so that you don’t get last minute surprises with monthly bills, and this will also help you to be sure if you really want to go with this service or not. Here’s what you need to know:
- There is no minimum fee, you pay for only what you use
- AWS Transcoder offers monthly free usage tier, which comes with 20 minutes of free audio-only output per month, 20 minutes of free SD output per month and 10 minutes of free HD output per month
- The pricing changes from region to region. For example, in N. Virginia the price for transcoding normal videos to Standard definition can cost you $0.015 per minute and to high definition $0.030 per minute. More details for each region can be found here.
- Amazon S3 storage and data-transfer charges still apply for both input and output files.
- Amazon Elastic Transcoder does not charge for failed transcodes unless the number of failures becomes excessive
Now that you have a solid grasp of the basics of AWS Transcoder, why not take a course on the technical fundamentals of AWS from Cloud Academy? We offer a 7-day free trial to get your feet wet in this exciting and fast-growing industry, so be sure to sign up today and upgrade your cloud engineering skills. Let’s get started!