export async function ProcessVideos()

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
        }
    };
}