For video it is not unusual that there is a need to tailor the stream for the device that is consuming it. The form factor, display size, and the bandwidth available for communicating with the device are all constraints that impact the user experience when viewing video. Providing video media that accommodates the display device or user selected preference will lead to an improved experience for the user.
An original, high-definition video file may be very large in resolution and file size. Trying to push it to a small phone or tablet display potentially via limited bandwidth may lead to a poor experience for the user. It is also desirable for the media stream to begin quickly as data is delivered rather than to require that the entire file be downloaded before playing begins. A high resolution (and thus large) media file may also result in excessive latency if the user attempts to slew through the file to reach a desired location again resulting in a poor user experience.
You can perform conversion functions on the media files to provide a more acceptable level of performance to your users but that will require some technical knowledge, storage and management of the original and new files.
Fortunately for us, instead of having to do this manually, Amazon has a web service that greatly simplifies this conversion process.
Amazon Elastic Transcoding Service
The Amazon Elastic Transcoder service can be used to transcode media files into formats that are appropriate for a variety of devices. The transcoding service uses S3 buckets as storage for file input and output. This enables you to maintain an archive bucket for your original media and then use the automated functions of the transcoding service to produce each of the output file types that are appropriate for your users.
Your website/delivery service can then be configured to determine the most appropriate file format to send to the user and to retrieve it from the associated bucket that the transcoding service sent the converted files to.
The transcoding service uses an Amazon Web Services (AWS) pipeline to orchestrate conversion jobs. You create the pipeline with where to find your input files and where to put the transcoded files along with a few other settings. Note that you have not yet specified what conversions that you want performed as this is done later in the process. The pipeline configuration also allows you to specify a notification mechanism for when jobs associated with it are completed. This is useful because depending on the configuration the processing may take a while (minutes at least for example).
To convert your media files you create an AWS transcoding job using the pipeline that corresponds to where your files are coming from and going to. As a part of the job configuration you will specify the files to use as input and what operations to perform on them. More than 20 output format choices enable you to select your choices without requiring you to be familiar with the aspects of video configuration. The transcoding job configuration supports multiple output formats so it may be possible to support all of your desired targets with a single transcoding job.
Device form factor, display size, network latency and available bandwidth available are all constraints that impact the user's video viewing experience. Being able to tailor or transcode the video to various formats that are better suited for constrained environments is an essential need for any media service that delivers video to the end user.
The Amazon Elastic Transcoder service is an important part of any media service where automated transcoding of video is required. In our next article, we are going to look at an architecture that leverages this service as well as AWS CloudFront Services and Amazon S3 Service to build your own video media streaming service.