ThinkGrid Labs sought to adapt client videos to various resolutions, considering AWS services like Media Convert and Elastic Transcoder. However, the high cost of processing hundreds of videos led them to explore more affordable alternatives.
How we avoided AWS Media Convert & Elastic Transcoder
At Thinkgrid Labs, we had a requirement from one of our clients to transform uploaded videos and serve them in different resolutions based on the network bandwidth of users. Since we were familiar with AWS service, our default posture was to use an AWS service for this requirement to convert the video into multiple resolutions (360p , 480p , 1080p, etc.) Solutions services like AWS Element Media Convert and Amazon Elastic Transcoder options, however they seemed costly when trying to transform hundreds of uploaded videos.
What is Amazon Elastic Transcoder?
It is a scalable, cost-effective media transcoding solution which has a duration based price model where we need to pay for output durations. You would have to create a transcoding ‘job’ specifying the location of your media file and the method you want to use to transcode it. So in our case for a video of 10 mins, there will be 4 videos of 10 mins in 4 formats (40 mins). The cost would increase, directly proportional to the number of video formats we needed. This seems to be a good solution for a single format conversion.
What is AWS Element MediaConvert?
It is also a video transcoding service having the same pricing model as of Amazon Elastic Transcoder but having advanced transcoding features with on-demand rates starting at $0.0075/minute.
Loading code files...
Design we came up with
Overview
The uploaded video is renamed in the server with a unique name (taking uuid-123 as an example). The server then stores that video in the input-s3-bucket and then creates an entry in the database with the same name (we created https://output-s3-bucket.s3.bucket-region.amazonaws.com/uuid-123 for our usecase). As soon as the video is saved to the input-s3-bucket, the lambda function is triggered by the video object, and after being transcoded, it is saved to the “output-s3-bucket” with the same folder name i.e “uuid-123” (Examples can be seen below).
Videos stored in input-s3-bucket looks like this.
Videos stored in input-s3-bucket looks like this.
Videos stored in input-s3-bucket looks like this.
Loading lambda functions...
Thinkgrid Logo
Transforming Ideas into Innovative Digital Solutions
Contact Us
Company
Social
Resources
Get in touch with us
© 2026 Thinkgrid Labs. All rights reserved.