Created
March 30, 2022 14:14
-
-
Save PiotrJander/b7c0da11eb0af3e9b93769734c87b4cc to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { CreateJobCommandInput } from "@aws-sdk/client-mediaconvert"; | |
export const getJobSetting = ( | |
fileInput: string, | |
outputPath: string, | |
userMetadata: { [key: string]: string }, | |
role: string | |
): CreateJobCommandInput => ({ | |
Queue: "Default", | |
UserMetadata: { | |
...userMetadata, | |
}, | |
Role: role, | |
Settings: { | |
TimecodeConfig: { | |
Source: "ZEROBASED", | |
}, | |
OutputGroups: [ | |
{ | |
Name: "File Group", | |
Outputs: [ | |
{ | |
Preset: "System-Generic_Hd_Mp4_Av1_Aac_16x9_640x360p_24Hz_250Kbps_Qvbr_Vq6", | |
}, | |
{ | |
ContainerSettings: { | |
Container: "RAW", | |
}, | |
VideoDescription: { | |
CodecSettings: { | |
Codec: "FRAME_CAPTURE", | |
FrameCaptureSettings: { | |
MaxCaptures: 1, | |
Quality: 80, | |
}, | |
}, | |
}, | |
Extension: "jpg", | |
}, | |
], | |
OutputGroupSettings: { | |
Type: "FILE_GROUP_SETTINGS", | |
FileGroupSettings: { | |
Destination: `${outputPath}/mp4/`, | |
}, | |
}, | |
}, | |
{ | |
Name: "Apple HLS", | |
Outputs: [ | |
{ | |
ContainerSettings: { | |
Container: "M3U8", | |
M3u8Settings: { | |
AudioFramesPerPes: 4, | |
PcrControl: "PCR_EVERY_PES_PACKET", | |
PmtPid: 480, | |
PrivateMetadataPid: 503, | |
ProgramNumber: 1, | |
PatInterval: 0, | |
PmtInterval: 0, | |
VideoPid: 481, | |
AudioPids: [482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], | |
}, | |
}, | |
VideoDescription: { | |
Width: 480, | |
ScalingBehavior: "DEFAULT", | |
Height: 270, | |
TimecodeInsertion: "DISABLED", | |
AntiAlias: "ENABLED", | |
Sharpness: 100, | |
CodecSettings: { | |
Codec: "H_264", | |
H264Settings: { | |
InterlaceMode: "PROGRESSIVE", | |
ParNumerator: 1, | |
NumberReferenceFrames: 3, | |
Syntax: "DEFAULT", | |
GopClosedCadence: 1, | |
HrdBufferInitialFillPercentage: 90, | |
GopSize: 3, | |
Slices: 1, | |
GopBReference: "ENABLED", | |
HrdBufferSize: 1000000, | |
MaxBitrate: 400000, | |
SlowPal: "DISABLED", | |
ParDenominator: 1, | |
SpatialAdaptiveQuantization: "ENABLED", | |
TemporalAdaptiveQuantization: "ENABLED", | |
FlickerAdaptiveQuantization: "ENABLED", | |
EntropyEncoding: "CABAC", | |
RateControlMode: "QVBR", | |
QvbrSettings: { | |
QvbrQualityLevel: 7, | |
}, | |
CodecProfile: "HIGH", | |
Telecine: "NONE", | |
MinIInterval: 0, | |
AdaptiveQuantization: "MEDIUM", | |
CodecLevel: "AUTO", | |
FieldEncoding: "PAFF", | |
SceneChangeDetect: "ENABLED", | |
QualityTuningLevel: "SINGLE_PASS_HQ", | |
UnregisteredSeiTimecode: "DISABLED", | |
GopSizeUnits: "SECONDS", | |
ParControl: "SPECIFIED", | |
NumberBFramesBetweenReferenceFrames: 5, | |
RepeatPps: "DISABLED", | |
DynamicSubGop: "ADAPTIVE", | |
}, | |
}, | |
AfdSignaling: "NONE", | |
DropFrameTimecode: "ENABLED", | |
RespondToAfd: "NONE", | |
ColorMetadata: "INSERT", | |
}, | |
AudioDescriptions: [ | |
{ | |
AudioTypeControl: "FOLLOW_INPUT", | |
AudioSourceName: "Audio Selector 1", | |
CodecSettings: { | |
Codec: "AAC", | |
AacSettings: { | |
AudioDescriptionBroadcasterMix: "NORMAL", | |
Bitrate: 64000, | |
RateControlMode: "CBR", | |
CodecProfile: "HEV1", | |
CodingMode: "CODING_MODE_2_0", | |
RawFormat: "NONE", | |
SampleRate: 48000, | |
Specification: "MPEG4", | |
}, | |
}, | |
LanguageCodeControl: "FOLLOW_INPUT", | |
AudioType: 0, | |
}, | |
], | |
NameModifier: "_Ott_Hls_Ts_Avc_Aac_16x9_480x270p_0.4Mbps_qvbr", | |
}, | |
{ | |
ContainerSettings: { | |
Container: "M3U8", | |
M3u8Settings: { | |
AudioFramesPerPes: 4, | |
PcrControl: "PCR_EVERY_PES_PACKET", | |
PmtPid: 480, | |
PrivateMetadataPid: 503, | |
ProgramNumber: 1, | |
PatInterval: 0, | |
PmtInterval: 0, | |
VideoPid: 481, | |
AudioPids: [482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], | |
}, | |
}, | |
VideoDescription: { | |
Width: 640, | |
ScalingBehavior: "DEFAULT", | |
Height: 360, | |
TimecodeInsertion: "DISABLED", | |
AntiAlias: "ENABLED", | |
Sharpness: 100, | |
CodecSettings: { | |
Codec: "H_264", | |
H264Settings: { | |
InterlaceMode: "PROGRESSIVE", | |
ParNumerator: 1, | |
NumberReferenceFrames: 3, | |
Syntax: "DEFAULT", | |
GopClosedCadence: 1, | |
HrdBufferInitialFillPercentage: 90, | |
GopSize: 3, | |
Slices: 1, | |
GopBReference: "ENABLED", | |
HrdBufferSize: 3750000, | |
MaxBitrate: 1500000, | |
SlowPal: "DISABLED", | |
ParDenominator: 1, | |
SpatialAdaptiveQuantization: "ENABLED", | |
TemporalAdaptiveQuantization: "ENABLED", | |
FlickerAdaptiveQuantization: "ENABLED", | |
EntropyEncoding: "CABAC", | |
RateControlMode: "QVBR", | |
QvbrSettings: { | |
QvbrQualityLevel: 7, | |
}, | |
CodecProfile: "HIGH", | |
Telecine: "NONE", | |
MinIInterval: 0, | |
AdaptiveQuantization: "MEDIUM", | |
CodecLevel: "AUTO", | |
FieldEncoding: "PAFF", | |
SceneChangeDetect: "ENABLED", | |
QualityTuningLevel: "SINGLE_PASS_HQ", | |
UnregisteredSeiTimecode: "DISABLED", | |
GopSizeUnits: "SECONDS", | |
ParControl: "SPECIFIED", | |
NumberBFramesBetweenReferenceFrames: 5, | |
RepeatPps: "DISABLED", | |
DynamicSubGop: "ADAPTIVE", | |
}, | |
}, | |
AfdSignaling: "NONE", | |
DropFrameTimecode: "ENABLED", | |
RespondToAfd: "NONE", | |
ColorMetadata: "INSERT", | |
}, | |
AudioDescriptions: [ | |
{ | |
AudioTypeControl: "FOLLOW_INPUT", | |
AudioSourceName: "Audio Selector 1", | |
CodecSettings: { | |
Codec: "AAC", | |
AacSettings: { | |
AudioDescriptionBroadcasterMix: "NORMAL", | |
Bitrate: 64000, | |
RateControlMode: "CBR", | |
CodecProfile: "HEV1", | |
CodingMode: "CODING_MODE_2_0", | |
RawFormat: "NONE", | |
SampleRate: 48000, | |
Specification: "MPEG4", | |
}, | |
}, | |
LanguageCodeControl: "FOLLOW_INPUT", | |
AudioType: 0, | |
}, | |
], | |
NameModifier: "_Ott_Hls_Ts_Avc_Aac_16x9_640x360p_1.5Mbps_qvbr", | |
}, | |
{ | |
ContainerSettings: { | |
Container: "M3U8", | |
M3u8Settings: { | |
AudioFramesPerPes: 4, | |
PcrControl: "PCR_EVERY_PES_PACKET", | |
PmtPid: 480, | |
PrivateMetadataPid: 503, | |
ProgramNumber: 1, | |
PatInterval: 0, | |
PmtInterval: 0, | |
VideoPid: 481, | |
AudioPids: [482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], | |
}, | |
}, | |
VideoDescription: { | |
Width: 960, | |
ScalingBehavior: "DEFAULT", | |
Height: 540, | |
TimecodeInsertion: "DISABLED", | |
AntiAlias: "ENABLED", | |
Sharpness: 100, | |
CodecSettings: { | |
Codec: "H_264", | |
H264Settings: { | |
InterlaceMode: "PROGRESSIVE", | |
ParNumerator: 1, | |
NumberReferenceFrames: 3, | |
Syntax: "DEFAULT", | |
GopClosedCadence: 1, | |
HrdBufferInitialFillPercentage: 90, | |
GopSize: 3, | |
Slices: 1, | |
GopBReference: "ENABLED", | |
HrdBufferSize: 8750000, | |
MaxBitrate: 3500000, | |
SlowPal: "DISABLED", | |
ParDenominator: 1, | |
SpatialAdaptiveQuantization: "ENABLED", | |
TemporalAdaptiveQuantization: "ENABLED", | |
FlickerAdaptiveQuantization: "ENABLED", | |
EntropyEncoding: "CABAC", | |
RateControlMode: "QVBR", | |
QvbrSettings: { | |
QvbrQualityLevel: 8, | |
}, | |
CodecProfile: "HIGH", | |
Telecine: "NONE", | |
MinIInterval: 0, | |
AdaptiveQuantization: "HIGH", | |
CodecLevel: "AUTO", | |
FieldEncoding: "PAFF", | |
SceneChangeDetect: "ENABLED", | |
QualityTuningLevel: "SINGLE_PASS_HQ", | |
UnregisteredSeiTimecode: "DISABLED", | |
GopSizeUnits: "SECONDS", | |
ParControl: "SPECIFIED", | |
NumberBFramesBetweenReferenceFrames: 5, | |
RepeatPps: "DISABLED", | |
DynamicSubGop: "ADAPTIVE", | |
}, | |
}, | |
AfdSignaling: "NONE", | |
DropFrameTimecode: "ENABLED", | |
RespondToAfd: "NONE", | |
ColorMetadata: "INSERT", | |
}, | |
AudioDescriptions: [ | |
{ | |
AudioTypeControl: "FOLLOW_INPUT", | |
AudioSourceName: "Audio Selector 1", | |
CodecSettings: { | |
Codec: "AAC", | |
AacSettings: { | |
AudioDescriptionBroadcasterMix: "NORMAL", | |
Bitrate: 96000, | |
RateControlMode: "CBR", | |
CodecProfile: "HEV1", | |
CodingMode: "CODING_MODE_2_0", | |
RawFormat: "NONE", | |
SampleRate: 48000, | |
Specification: "MPEG4", | |
}, | |
}, | |
LanguageCodeControl: "FOLLOW_INPUT", | |
AudioType: 0, | |
}, | |
], | |
NameModifier: "_Ott_Hls_Ts_Avc_Aac_16x9_960x540p_3.5Mbps_qvbr", | |
}, | |
{ | |
ContainerSettings: { | |
Container: "M3U8", | |
M3u8Settings: { | |
AudioFramesPerPes: 4, | |
PcrControl: "PCR_EVERY_PES_PACKET", | |
PmtPid: 480, | |
PrivateMetadataPid: 503, | |
ProgramNumber: 1, | |
PatInterval: 0, | |
PmtInterval: 0, | |
VideoPid: 481, | |
AudioPids: [482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], | |
}, | |
}, | |
VideoDescription: { | |
Width: 1280, | |
ScalingBehavior: "DEFAULT", | |
Height: 720, | |
TimecodeInsertion: "DISABLED", | |
AntiAlias: "ENABLED", | |
Sharpness: 100, | |
CodecSettings: { | |
Codec: "H_264", | |
H264Settings: { | |
InterlaceMode: "PROGRESSIVE", | |
ParNumerator: 1, | |
NumberReferenceFrames: 3, | |
Syntax: "DEFAULT", | |
GopClosedCadence: 1, | |
HrdBufferInitialFillPercentage: 90, | |
GopSize: 3, | |
Slices: 1, | |
GopBReference: "ENABLED", | |
HrdBufferSize: 15000000, | |
MaxBitrate: 6000000, | |
SlowPal: "DISABLED", | |
ParDenominator: 1, | |
SpatialAdaptiveQuantization: "ENABLED", | |
TemporalAdaptiveQuantization: "ENABLED", | |
FlickerAdaptiveQuantization: "ENABLED", | |
EntropyEncoding: "CABAC", | |
RateControlMode: "QVBR", | |
QvbrSettings: { | |
QvbrQualityLevel: 8, | |
}, | |
CodecProfile: "HIGH", | |
Telecine: "NONE", | |
MinIInterval: 0, | |
AdaptiveQuantization: "HIGH", | |
CodecLevel: "AUTO", | |
FieldEncoding: "PAFF", | |
SceneChangeDetect: "ENABLED", | |
QualityTuningLevel: "SINGLE_PASS_HQ", | |
UnregisteredSeiTimecode: "DISABLED", | |
GopSizeUnits: "SECONDS", | |
ParControl: "SPECIFIED", | |
NumberBFramesBetweenReferenceFrames: 5, | |
RepeatPps: "DISABLED", | |
DynamicSubGop: "ADAPTIVE", | |
}, | |
}, | |
AfdSignaling: "NONE", | |
DropFrameTimecode: "ENABLED", | |
RespondToAfd: "NONE", | |
ColorMetadata: "INSERT", | |
}, | |
AudioDescriptions: [ | |
{ | |
AudioTypeControl: "FOLLOW_INPUT", | |
AudioSourceName: "Audio Selector 1", | |
CodecSettings: { | |
Codec: "AAC", | |
AacSettings: { | |
AudioDescriptionBroadcasterMix: "NORMAL", | |
Bitrate: 96000, | |
RateControlMode: "CBR", | |
CodecProfile: "HEV1", | |
CodingMode: "CODING_MODE_2_0", | |
RawFormat: "NONE", | |
SampleRate: 48000, | |
Specification: "MPEG4", | |
}, | |
}, | |
LanguageCodeControl: "FOLLOW_INPUT", | |
AudioType: 0, | |
}, | |
], | |
NameModifier: "_Ott_Hls_Ts_Avc_Aac_16x9_1280x720p_6.0Mbps_qvbr", | |
}, | |
{ | |
ContainerSettings: { | |
Container: "M3U8", | |
M3u8Settings: { | |
AudioFramesPerPes: 4, | |
PcrControl: "PCR_EVERY_PES_PACKET", | |
PmtPid: 480, | |
PrivateMetadataPid: 503, | |
ProgramNumber: 1, | |
PatInterval: 0, | |
PmtInterval: 0, | |
VideoPid: 481, | |
AudioPids: [482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498], | |
}, | |
}, | |
VideoDescription: { | |
Width: 1920, | |
ScalingBehavior: "DEFAULT", | |
Height: 1080, | |
TimecodeInsertion: "DISABLED", | |
AntiAlias: "ENABLED", | |
Sharpness: 100, | |
CodecSettings: { | |
Codec: "H_264", | |
H264Settings: { | |
InterlaceMode: "PROGRESSIVE", | |
ParNumerator: 1, | |
NumberReferenceFrames: 3, | |
Syntax: "DEFAULT", | |
GopClosedCadence: 1, | |
HrdBufferInitialFillPercentage: 90, | |
GopSize: 3, | |
Slices: 1, | |
GopBReference: "ENABLED", | |
HrdBufferSize: 21250000, | |
MaxBitrate: 8500000, | |
SlowPal: "DISABLED", | |
ParDenominator: 1, | |
SpatialAdaptiveQuantization: "ENABLED", | |
TemporalAdaptiveQuantization: "ENABLED", | |
FlickerAdaptiveQuantization: "ENABLED", | |
EntropyEncoding: "CABAC", | |
RateControlMode: "QVBR", | |
QvbrSettings: { | |
QvbrQualityLevel: 9, | |
}, | |
CodecProfile: "HIGH", | |
Telecine: "NONE", | |
MinIInterval: 0, | |
AdaptiveQuantization: "HIGH", | |
CodecLevel: "AUTO", | |
FieldEncoding: "PAFF", | |
SceneChangeDetect: "ENABLED", | |
QualityTuningLevel: "SINGLE_PASS_HQ", | |
UnregisteredSeiTimecode: "DISABLED", | |
GopSizeUnits: "SECONDS", | |
ParControl: "SPECIFIED", | |
NumberBFramesBetweenReferenceFrames: 5, | |
RepeatPps: "DISABLED", | |
DynamicSubGop: "ADAPTIVE", | |
}, | |
}, | |
AfdSignaling: "NONE", | |
DropFrameTimecode: "ENABLED", | |
RespondToAfd: "NONE", | |
ColorMetadata: "INSERT", | |
}, | |
AudioDescriptions: [ | |
{ | |
AudioTypeControl: "FOLLOW_INPUT", | |
AudioSourceName: "Audio Selector 1", | |
CodecSettings: { | |
Codec: "AAC", | |
AacSettings: { | |
AudioDescriptionBroadcasterMix: "NORMAL", | |
Bitrate: 128000, | |
RateControlMode: "CBR", | |
CodecProfile: "LC", | |
CodingMode: "CODING_MODE_2_0", | |
RawFormat: "NONE", | |
SampleRate: 48000, | |
Specification: "MPEG4", | |
}, | |
}, | |
LanguageCodeControl: "FOLLOW_INPUT", | |
AudioType: 0, | |
}, | |
], | |
NameModifier: "_Ott_Hls_Ts_Avc_Aac_16x9_1920x1080p_8.5Mbps_qvbr", | |
}, | |
], | |
OutputGroupSettings: { | |
Type: "HLS_GROUP_SETTINGS", | |
HlsGroupSettings: { | |
ManifestDurationFormat: "INTEGER", | |
SegmentLength: 3, | |
TimedMetadataId3Period: 10, | |
CaptionLanguageSetting: "OMIT", | |
Destination: `${outputPath}/hls/`, | |
TimedMetadataId3Frame: "PRIV", | |
CodecSpecification: "RFC_4281", | |
OutputSelection: "MANIFESTS_AND_SEGMENTS", | |
ProgramDateTimePeriod: 600, | |
MinSegmentLength: 0, | |
DirectoryStructure: "SINGLE_DIRECTORY", | |
ProgramDateTime: "EXCLUDE", | |
SegmentControl: "SEGMENTED_FILES", | |
ManifestCompression: "NONE", | |
ClientCache: "ENABLED", | |
StreamInfResolution: "INCLUDE", | |
}, | |
}, | |
}, | |
], | |
AdAvailOffset: 0, | |
Inputs: [ | |
{ | |
AudioSelectors: { | |
"Audio Selector 1": { | |
Offset: 0, | |
DefaultSelection: "DEFAULT", | |
ProgramSelection: 1, | |
}, | |
}, | |
VideoSelector: { | |
ColorSpace: "FOLLOW", | |
Rotate: "DEGREE_0", | |
AlphaBehavior: "DISCARD", | |
}, | |
FilterEnable: "AUTO", | |
PsiControl: "USE_PSI", | |
FilterStrength: 0, | |
DeblockFilter: "DISABLED", | |
DenoiseFilter: "DISABLED", | |
TimecodeSource: "ZEROBASED", | |
FileInput: fileInput, | |
}, | |
], | |
}, | |
AccelerationSettings: { | |
Mode: "PREFERRED", | |
}, | |
StatusUpdateInterval: "SECONDS_60", | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Allowed extensions: