Integrating AWS Elastic Transcoder With NodeJS Application
Posted By : Vishal Yadav | 13-May-2020
Introduction
Elastic transcoding is a media transcoding service provided by AWS. It is highly scalable, cost-effective, and easy to use. It is used to convert media into a suitable format which is playable on different devices like smartphones, tablet, PC, smart tv, etc.
Elastic transcoder converts/transcode video into other formats based on PresetId. Before starting video transcoding, you have to set up an Elastic Transcoder on AWS and get PipelineID for it.
PresetId: AWS provides a list of transcoding formats likes HLS streaming, MPEG-DASH, Webm or you can simply transcode it to different resolutions. All these formats have a unique PresetId which can be used to initiate a transcoding job.
Prerequisites
- AWS IAM account with access to AWS Elastic transcoder
- NodeJS
- NPM
1. Install the AWS SDK for NodeJs and configure it.
//Install AWS SDK
npm I aws-sdk
//Create a S3 object and configure it as per credentials
const AWS = require('aws-sdk');
//Create a object that contains access keys
var credentials = {
accessKeyId: process.env.AWS_ACCESS_KEY,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY
};
//Create an Object to start the transcoding Job.
var Etrans = new AWS.ElasticTranscoder({
apiVersion: '2012–09–25', //Different API versions are provided by s3
region: 'us-east-1', //Bucket Region
credentials: credentials,
videoBucket: 'Bucket_Name',
});
2. Create a new transcoding job.
//Create a JSON object to be passed as parameter
var params = {
PipelineId: pipelineId, //PipelineId of Elastic transcoder
OutputKeyPrefix: newKey + '/',
Input: {
Key: srcKey, //Source path of video
FrameRate: 'auto',
Resolution: 'auto',
AspectRatio: 'auto',
Interlaced: 'auto',
Container: 'auto'
},
Outputs: [{
Key: 'transcoded/video',
PresetId: 'Preset_ID',
"SegmentDuration":'3', //Duration in segment on which transcoding is done as we chose HLS streaming
ThumbnailPattern: 'poster-{count}', //It is used to create snapshot of Video
}]
}
//To create a new Job
Etrans.createJob(params, function(err, data){
if (err)
{
console.log('error is :', err);
}
else {
console.log('data is',data);
}
})
3. Read the transcoding Job-status.
// Transcoding Job can take some time so you need to add ReadJob to check status.
Etrans.readJob({ Id: data.transcodeId }, (err, data) => {
if (err){
console.log(err);
reject(err);
}
else{
console.log(data)
}
})
Conclusion
The above code can be used to transcode any video stored on the s3 bucket into the required format. Basically, transcoding service is used to convert media into streaming formats.
Cookies are important to the proper functioning of a site. To improve your experience, we use cookies to remember log-in details and provide secure log-in, collect statistics to optimize site functionality, and deliver content tailored to your interests. Click Agree and Proceed to accept cookies and go directly to the site or click on View Cookie Settings to see detailed descriptions of the types of cookies and choose whether to accept certain cookies while on the site.
About Author
Vishal Yadav
Vishal is a highly skilled backend developer with extensive 3+ years experience in developing various blockchain platforms. He has a comprehensive understanding of the technologies and has hands-on expertise in Node.js, Ethereum, Layer 1 and Layer 2 solutions, smart contract development, and databases like MySQL and MongoDB. He has a proven track record of working on a range of blockchain-related projects, including token development, staking, governance, indexes, bridges, NFT, marketplace, ICO/IDO, and more. He is adept at managing trading bots, and developing centralized exchanges, and has a creative mind with excellent analytical skills.