in src/handlers/provider-ace.ts [78:138]
export async function ProcessVideos(event: any) {
const s3Path = `s3://${event.bucketName}/${event.objectKey}`;
const input: AWS.MediaConvert.Types.Input = {
AudioSelectors: {
"Audio Selector 1": {
DefaultSelection: "NOT_DEFAULT",
Offset: 0,
ProgramSelection: 1,
SelectorType: "TRACK",
Tracks: [
1
]
}
},
FileInput: s3Path,
PsiControl: "USE_PSI"
};
const maxSize = 256;
const params: AWS.MediaConvert.Types.CreateJobRequest = {
JobTemplate: JOB_TEMPLATE_NAME,
Queue: MEDIA_CONVERT_QUEUE_ARN,
Role: MEDIA_CONVERT_ROLE_ARN,
Settings: {
Inputs: [input],
OutputGroups: [
{
Name: "File Group",
OutputGroupSettings: {
FileGroupSettings: {
Destination: `s3://${OUTPUT_BUCKET_NAME}/${event.assetId}/`
},
Type: "FILE_GROUP_SETTINGS"
}
}
]
},
UserMetadata: {
AssetId: event.assetId,
Bucket: OUTPUT_BUCKET_NAME,
Key: event.objectKey,
// UserMetadata is limited to 256 chars per field, but task token is 640 chars long
// https://docs.aws.amazon.com/mediaconvert/latest/ug/user-metadata-tags.html
StepFunctionTaskToken1: event.token.slice(0, maxSize),
StepFunctionTaskToken2: event.token.slice(maxSize, maxSize * 2),
StepFunctionTaskToken3: event.token.slice(maxSize * 2, maxSize * 3)
}
};
const createJobAPIResponse = await MediaConvert
.createJob(params)
.promise();
return {
Job: {
Id: createJobAPIResponse.Job?.Id,
Timing: createJobAPIResponse.Job?.Timing
}
};
}