Proper CMAF config for media convert

0

I am using AWS lambda to create a job for media convert (using python). I was convert an input video in CMAF H265 format, but I am unable to figure out the correct settings for this. The createJob function returns an error :

botocore.errorfactory.BadRequestException: An error occurred (BadRequestException) when calling the CreateJob operation: /outputGroups/0/outputs/0: Should match exactly one schema defined in "oneOf"

The error displayed in log files of lambda has only this information and does not mention the exact fields which are missing the validation. When i compare my config with the sdk code, I am unable to find the possible error. Please help here.

Since the error is in outputs, including the corresponding object:

{
            "ContainerSettings": {
              "Container": "CMFC",
                  "CmfcSettings": {
                       "IFrameOnlyManifest": "EXCLUDE"
              }
            },
            "VideoDescription": {
              "Width": 468,
              "ScalingBehavior": "DEFAULT",
              "Height": 264,
              "TimecodeInsertion": "DISABLED",
              "AntiAlias": "ENABLED",
              "Sharpness": 50,
              "CodecSettings": {
                "Codec": "H_265",
                "H265Settings": {
                  "InterlaceMode": "PROGRESSIVE",
                  "NumberReferenceFrames": 3,
                  "GopClosedCadence": 1,
                  "GopSize": 90,
                  "Slices": 1,
                  "GopBReference": "DISABLED",
                  "SlowPal": "DISABLED",
                  "SpatialAdaptiveQuantization": "ENABLED",
                  "TemporalAdaptiveQuantization": "ENABLED",
                  "FlickerAdaptiveQuantization": "DISABLED",
                  "FramerateControl": "INITIALIZE_FROM_SOURCE",
                  "RateControlMode": "QVBR",
                  "QvbrSettings": {
                    "QvbrQualityLevel": 7
                  },
                  "MaxBitrate": 500000,
                  "CodecProfile": "MAIN_HIGH",
                  "CodecLevel": "LEVEL_3",
                  "Telecine": "NONE",
                  "MinIInterval": 0,
                  "AdaptiveQuantization": "HIGH",
                  "SceneChangeDetect": "ENABLED",
                  "QualityTuningLevel": "SINGLE_PASS_HQ",
                  "FramerateConversionAlgorithm": "DUPLICATE_DROP",
                  "UnregisteredSeiTimecode": "DISABLED",
                  "GopSizeUnits": "FRAMES",
                  "ParControl": "INITIALIZE_FROM_SOURCE",
                  "NumberBFramesBetweenReferenceFrames": 2,
                  "WriteMp4PackagingType":"HEV1"
                }
              },
              "AfdSignaling": "NONE",
              "DropFrameTimecode": "ENABLED",
              "RespondToAfd": "NONE",
              "ColorMetadata": "INSERT"
            },
            "AudioDescriptions": [
              {
                "AudioTypeControl": "FOLLOW_INPUT",
                "CodecSettings": {
                  "Codec": "AAC",
                  "AacSettings": {
                    "AudioDescriptionBroadcasterMix": "NORMAL",
                    "Bitrate": 96000,
                    "RateControlMode": "CBR",
                    "CodecProfile": "LC",
                    "CodingMode": "CODING_MODE_2_0",
                    "RawFormat": "NONE",
                    "SampleRate": 48000,
                    "Specification": "MPEG4"
                  }
                },
                "LanguageCodeControl": "FOLLOW_INPUT"
              }
            ],
            "NameModifier": "_468"
          }
posta un anno fa372 visualizzazioni
1 Risposta
0

Hi there,

Looking at your Output config JSON, I see that you have MUXED the Video and Audio for your CMAF output. What that means is that you have included the Video and Audio under a single output. Currently it looks like this:

CMAF Output Group: |
                   . -> Output-1:|
                                 . ->Video-Data,
                                 . ->Audio-Data

Per CMAF architecture, this is an incorrect way of designing a CMAF stream. The correct way would be to produce the same Video and Audio parameters, but in their separate outputs. This should look something like this:

CMAF Output Group: |
                   . -> Output-1:|
                                 . ->Video-Data
                   . -> Output-2:|
                                 . ->Audio-Data

You may try the following Output JSON instead of the one shared above:

{
    "ContainerSettings": {
        "Container": "CMFC",
        "CmfcSettings": {
            "IFrameOnlyManifest": "EXCLUDE"
        }
    },
    "VideoDescription": {
        "Width": 468,
        "ScalingBehavior": "DEFAULT",
        "Height": 264,
        "TimecodeInsertion": "DISABLED",
        "AntiAlias": "ENABLED",
        "Sharpness": 50,
        "CodecSettings": {
            "Codec": "H_265",
            "H265Settings": {
                "InterlaceMode": "PROGRESSIVE",
                "NumberReferenceFrames": 3,
                "GopClosedCadence": 1,
                "GopSize": 90,
                "Slices": 1,
                "GopBReference": "DISABLED",
                "MaxBitrate": 500000,
                "SlowPal": "DISABLED",
                "SpatialAdaptiveQuantization": "ENABLED",
                "TemporalAdaptiveQuantization": "ENABLED",
                "FlickerAdaptiveQuantization": "DISABLED",
                "FramerateControl": "INITIALIZE_FROM_SOURCE",
                "RateControlMode": "QVBR",
                "QvbrSettings": {
                    "QvbrQualityLevel": 7
                },
                "CodecProfile": "MAIN_HIGH",
                "Telecine": "NONE",
                "MinIInterval": 0,
                "AdaptiveQuantization": "HIGH",
                "CodecLevel": "LEVEL_3",
                "SceneChangeDetect": "ENABLED",
                "QualityTuningLevel": "SINGLE_PASS_HQ",
                "FramerateConversionAlgorithm": "DUPLICATE_DROP",
                "UnregisteredSeiTimecode": "DISABLED",
                "GopSizeUnits": "FRAMES",
                "ParControl": "INITIALIZE_FROM_SOURCE",
                "NumberBFramesBetweenReferenceFrames": 2,
                "WriteMp4PackagingType": "HEV1"
            }
        },
        "AfdSignaling": "NONE",
        "DropFrameTimecode": "ENABLED",
        "RespondToAfd": "NONE",
        "ColorMetadata": "INSERT"
    },
    "NameModifier": "_468"
}, {
    "ContainerSettings": {
        "Container": "CMFC",
        "CmfcSettings": {
            "IFrameOnlyManifest": "EXCLUDE"
        }
    },
    "AudioDescriptions": [{
        "AudioTypeControl": "FOLLOW_INPUT",
        "AudioSourceName": "Audio Selector 1",
        "CodecSettings": {
            "Codec": "AAC",
            "AacSettings": {
                "AudioDescriptionBroadcasterMix": "NORMAL",
                "Bitrate": 96000,
                "RateControlMode": "CBR",
                "CodecProfile": "LC",
                "CodingMode": "CODING_MODE_2_0",
                "RawFormat": "NONE",
                "SampleRate": 48000,
                "Specification": "MPEG4"
            }
        },
        "LanguageCodeControl": "FOLLOW_INPUT"
    }],
    "NameModifier": "_468"
}
AWS
TECNICO DI SUPPORTO
con risposta un anno fa
  • Thank you so much. Let me try this out and update soon.

  • Thanks, A modification to the baove config, finally worked. But i realised, I was looking for generating fmp4 H265 HLS streams. I am a little confused if CMAF with a different config will be used or Apple HLS .

    Is there any documentation I can refer to for this. Apologies for the possibly noob question

Accesso non effettuato. Accedi per postare una risposta.

Una buona risposta soddisfa chiaramente la domanda, fornisce un feedback costruttivo e incoraggia la crescita professionale del richiedente.

Linee guida per rispondere alle domande