async function extractAudio()

in source/lambda/extractaudio/extractaudio.js [235:338]


async function extractAudio(params) {
  console.log("extractAudio input params:", params);
  var mediaConvertEndpoint = await getMediaConvertEndpoint();
  console.log("endpoint: ", mediaConvertEndpoint);

  AWS.config.mediaconvert = { endpoint: mediaConvertEndpoint };

  var mediaConvertParams = {
    Queue: params.mediaConvertQueue,
    UserMetadata: {},
    Role: params.mediaConvertRole,
    Settings: {
      TimecodeConfig: {
        Source: "ZEROBASED",
      },
      OutputGroups: [
        {
          Name: "File Group",
          Outputs: [
            {
              ContainerSettings: {
                Container: "MP4",
                Mp4Settings: {},
              },
              AudioDescriptions: [
                {
                  AudioSourceName: "Audio Selector 1",
                  CodecSettings: {
                    Codec: "AAC",
                    AacSettings: {
                      Bitrate: 32000,
                      CodingMode: "CODING_MODE_2_0",
                      SampleRate: 24000,
                    },
                  },
                },
              ],
              Extension: "mp4",
              NameModifier: "_" + params.videoId,
            },
          ],
          OutputGroupSettings: {
            Type: "FILE_GROUP_SETTINGS",
            FileGroupSettings: {
              Destination:
                "s3://" +
                params.outputAudioBucket +
                "/" +
                params.outputAudioKeyPrefix +
                "/",
            },
          },
        },
      ],
      Inputs: [
        {
          AudioSelectors: {
            "Audio Selector 1": {
              DefaultSelection: "DEFAULT",
            },
          },
          VideoSelector: {},
          TimecodeSource: "ZEROBASED",
          FileInput: params.inputS3Path,
        },
      ],
    },
    AccelerationSettings: {
      Mode: "DISABLED",
    },
    StatusUpdateInterval: "SECONDS_60",
    Priority: 0,
  };

  console.log(
    "start to create media convert job, params: %j",
    mediaConvertParams
  );
  var endpointPromise;
  if (process.env.REGION === "cn-north-1") {
    endpointPromise = new AWS.MediaConvert({
      apiVersion: "2017-08-29",
      region: "cn-northwest-1",
    })
      .createJob(mediaConvertParams)
      .promise();
  } else {
    endpointPromise = new AWS.MediaConvert({ apiVersion: "2017-08-29" })
      .createJob(mediaConvertParams)
      .promise();
  }

  console.log("media convert job created");

  // Handle promise's fulfilled/rejected status
  await endpointPromise.then(
    function (data) {
      console.log("Job created! ", data);
    },
    function (err) {
      console.log("Error", err);
    }
  );
}