Amazon presents a comprehensive platform for compute, storage and digital data delivery. In a previous post we looked into the Amazon Elastic Transcoder service as a way to improve the end user video viewing experience.
Yet, transcoding the video is only part of the solution for improving the user experience. Another part is to have the file being streamed to the user's device be as geographically close to them as possible so as to reduce latency issues.
To accomplish this, there are several Amazon Web Services that can be easily integrated to deliver video to geographically distributed end users.
Amazon S3 Service
Amazon Simple Storage Service (S3) was one of the first Amazon web services. It provides simple web and API interfaces for storing and retrieving various types of unstructured data from anywhere that is web accessible.
By leveraging Amazon's inherent scaling and availability characteristics, the media files can be stored and retrieved from anywhere within the service and delivered to the consumer.
Amazon Elastic Transcoding Service
By using the transcoding service to create an orchestration pipeline for video conversion, multiple formats and resolutions can be made available. 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 job.
If your content is to be accessible from any location worldwide then latencies due to distance may be unacceptable to your audience. An alternative to your having to deal with media delivery is to use the AWS CloudFront service.
CloudFront consists of servers in numerous locations around the world that will enable your content to be delivered to requestors from the server location nearest to them resulting in a more responsive user experience. AWS provides a simple ability to configure and upload your media for automatic distribution to the various servers.
The following is a simple workflow for transcoding a movie and making it available via the CloudFront (CF) service. The basic steps are as follows:
- collect media files
- create S3 buckets to hold your original media and distribution media files
- upload media files to the original media bucket
- determine desired resulting media formats (standard 9x16 for example)
- create a pipeline specifying input/output buckets and notifications (if desired)
- create a transcoding job specifying the media formats to produce
- start the transcoding job
- get JWPlayer files (community edition works fine)
- generate some simple html that includes the JWPlayer
- create CF web distribution
- create CF media distribution
- include web and media distribution url to html
- upload JWPlayer to web distribution bucket
- upload html to distribution bucket
These services can be combined into an architecture for media service solution that allows users to upload their original video files for distribution. The uploaded files would then be automatically transcoded into various formats that are optimized for different devices and networks. The input processing can be configured to be an entirely automatic process that is triggered by the appearance of the file in the expected input buckets.
By allowing websites and mobile device applications to use responsive design techniques to retrieve their preferred media formats, you can deliver an improved video viewing user experience.