in javav2/example_code/mediaconvert/src/main/java/com/example/mediaconvert/CreateJob.java [155:313]
public static String createMediaJob(MediaConvertClient mc, String mcRoleARN, String fileInput) {
String s3path = fileInput.substring(0, fileInput.lastIndexOf('/') + 1) + "javasdk/out/";
String fileOutput = s3path + "index";
String thumbsOutput = s3path + "thumbs/";
String mp4Output = s3path + "mp4/";
try {
// snippet-start:[mediaconvert.java.createjob.getendpointurl]
DescribeEndpointsResponse res = mc
.describeEndpoints(DescribeEndpointsRequest.builder().maxResults(20).build());
if (res.endpoints().size() <= 0) {
System.out.println("Cannot find MediaConvert service endpoint URL!");
System.exit(1);
}
String endpointURL = res.endpoints().get(0).url();
System.out.println("MediaConvert service URL: " + endpointURL);
System.out.println("MediaConvert role arn: " + mcRoleARN);
System.out.println("MediaConvert input file: " + fileInput);
System.out.println("MediaConvert output path: " + s3path);
// snippet-end:[mediaconvert.java.createjob.getendpointurl]
MediaConvertClient emc = MediaConvertClient.builder()
.region(Region.US_WEST_2)
.endpointOverride(URI.create(endpointURL))
.build();
// output group Preset HLS low profile
Output hlsLow = createOutput("hls_low", "_low", "_$dt$", 750000, 7, 1920, 1080, 640);
// output group Preset HLS media profile
Output hlsMedium = createOutput("hls_medium", "_medium", "_$dt$", 1200000, 7, 1920, 1080, 1280);
// output group Preset HLS high profole
Output hlsHigh = createOutput("hls_high", "_high", "_$dt$", 3500000, 8, 1920, 1080, 1920);
// snippet-start:[mediaconvert.java.createjob.create_hls_output]
OutputGroup appleHLS = OutputGroup.builder().name("Apple HLS").customName("Example")
.outputGroupSettings(OutputGroupSettings.builder().type(OutputGroupType.HLS_GROUP_SETTINGS)
.hlsGroupSettings(HlsGroupSettings.builder()
.directoryStructure(HlsDirectoryStructure.SINGLE_DIRECTORY)
.manifestDurationFormat(HlsManifestDurationFormat.INTEGER)
.streamInfResolution(HlsStreamInfResolution.INCLUDE)
.clientCache(HlsClientCache.ENABLED)
.captionLanguageSetting(HlsCaptionLanguageSetting.OMIT)
.manifestCompression(HlsManifestCompression.NONE)
.codecSpecification(HlsCodecSpecification.RFC_4281)
.outputSelection(HlsOutputSelection.MANIFESTS_AND_SEGMENTS)
.programDateTime(HlsProgramDateTime.EXCLUDE).programDateTimePeriod(600)
.timedMetadataId3Frame(HlsTimedMetadataId3Frame.PRIV).timedMetadataId3Period(10)
.destination(fileOutput).segmentControl(HlsSegmentControl.SEGMENTED_FILES)
.minFinalSegmentLength((double) 0).segmentLength(4).minSegmentLength(0).build())
.build())
.outputs(hlsLow, hlsMedium, hlsHigh).build();
// snippet-end:[mediaconvert.java.createjob.create_hls_output]
// snippet-start:[mediaconvert.java.createjob.create_file_output]
OutputGroup fileMp4 = OutputGroup.builder().name("File Group").customName("mp4")
.outputGroupSettings(OutputGroupSettings.builder().type(OutputGroupType.FILE_GROUP_SETTINGS)
.fileGroupSettings(FileGroupSettings.builder().destination(mp4Output).build()).build())
.outputs(Output.builder().extension("mp4")
.containerSettings(ContainerSettings.builder().container(ContainerType.MP4).build())
.videoDescription(VideoDescription.builder().width(1280).height(720)
.scalingBehavior(ScalingBehavior.DEFAULT).sharpness(50).antiAlias(AntiAlias.ENABLED)
.timecodeInsertion(VideoTimecodeInsertion.DISABLED)
.colorMetadata(ColorMetadata.INSERT).respondToAfd(RespondToAfd.NONE)
.afdSignaling(AfdSignaling.NONE).dropFrameTimecode(DropFrameTimecode.ENABLED)
.codecSettings(VideoCodecSettings.builder().codec(VideoCodec.H_264)
.h264Settings(H264Settings.builder()
.rateControlMode(H264RateControlMode.QVBR)
.parControl(H264ParControl.INITIALIZE_FROM_SOURCE)
.qualityTuningLevel(H264QualityTuningLevel.SINGLE_PASS)
.qvbrSettings(
H264QvbrSettings.builder().qvbrQualityLevel(8).build())
.codecLevel(H264CodecLevel.AUTO).codecProfile(H264CodecProfile.MAIN)
.maxBitrate(2400000)
.framerateControl(H264FramerateControl.INITIALIZE_FROM_SOURCE)
.gopSize(2.0).gopSizeUnits(H264GopSizeUnits.SECONDS)
.numberBFramesBetweenReferenceFrames(2).gopClosedCadence(1)
.gopBReference(H264GopBReference.DISABLED)
.slowPal(H264SlowPal.DISABLED).syntax(H264Syntax.DEFAULT)
.numberReferenceFrames(3).dynamicSubGop(H264DynamicSubGop.STATIC)
.fieldEncoding(H264FieldEncoding.PAFF)
.sceneChangeDetect(H264SceneChangeDetect.ENABLED).minIInterval(0)
.telecine(H264Telecine.NONE)
.framerateConversionAlgorithm(
H264FramerateConversionAlgorithm.DUPLICATE_DROP)
.entropyEncoding(H264EntropyEncoding.CABAC).slices(1)
.unregisteredSeiTimecode(H264UnregisteredSeiTimecode.DISABLED)
.repeatPps(H264RepeatPps.DISABLED)
.adaptiveQuantization(H264AdaptiveQuantization.HIGH)
.spatialAdaptiveQuantization(
H264SpatialAdaptiveQuantization.ENABLED)
.temporalAdaptiveQuantization(
H264TemporalAdaptiveQuantization.ENABLED)
.flickerAdaptiveQuantization(
H264FlickerAdaptiveQuantization.DISABLED)
.softness(0).interlaceMode(H264InterlaceMode.PROGRESSIVE).build())
.build())
.build())
.audioDescriptions(AudioDescription.builder()
.audioTypeControl(AudioTypeControl.FOLLOW_INPUT)
.languageCodeControl(AudioLanguageCodeControl.FOLLOW_INPUT)
.codecSettings(AudioCodecSettings.builder().codec(AudioCodec.AAC)
.aacSettings(AacSettings.builder().codecProfile(AacCodecProfile.LC)
.rateControlMode(AacRateControlMode.CBR)
.codingMode(AacCodingMode.CODING_MODE_2_0).sampleRate(44100)
.bitrate(160000).rawFormat(AacRawFormat.NONE)
.specification(AacSpecification.MPEG4)
.audioDescriptionBroadcasterMix(
AacAudioDescriptionBroadcasterMix.NORMAL)
.build())
.build())
.build())
.build())
.build();
// snippet-end:[mediaconvert.java.createjob.create_file_output]
// snippet-start:[mediaconvert.java.createjob.create_thumbnail_output]
OutputGroup thumbs = OutputGroup.builder().name("File Group").customName("thumbs")
.outputGroupSettings(OutputGroupSettings.builder().type(OutputGroupType.FILE_GROUP_SETTINGS)
.fileGroupSettings(FileGroupSettings.builder().destination(thumbsOutput).build()).build())
.outputs(Output.builder().extension("jpg")
.containerSettings(ContainerSettings.builder().container(ContainerType.RAW).build())
.videoDescription(VideoDescription.builder().scalingBehavior(ScalingBehavior.DEFAULT)
.sharpness(50).antiAlias(AntiAlias.ENABLED)
.timecodeInsertion(VideoTimecodeInsertion.DISABLED)
.colorMetadata(ColorMetadata.INSERT).dropFrameTimecode(DropFrameTimecode.ENABLED)
.codecSettings(VideoCodecSettings.builder().codec(VideoCodec.FRAME_CAPTURE)
.frameCaptureSettings(FrameCaptureSettings.builder().framerateNumerator(1)
.framerateDenominator(1).maxCaptures(10000000).quality(80).build())
.build())
.build())
.build())
.build();
// snippet-end:[mediaconvert.java.createjob.create_thumbnail_output]
Map<String, AudioSelector> audioSelectors = new HashMap<String, AudioSelector>();
audioSelectors.put("Audio Selector 1",
AudioSelector.builder().defaultSelection(AudioDefaultSelection.DEFAULT).offset(0).build());
JobSettings jobSettings = JobSettings.builder().inputs(Input.builder().audioSelectors(audioSelectors)
.videoSelector(
VideoSelector.builder().colorSpace(ColorSpace.FOLLOW).rotate(InputRotate.DEGREE_0).build())
.filterEnable(InputFilterEnable.AUTO).filterStrength(0).deblockFilter(InputDeblockFilter.DISABLED)
.denoiseFilter(InputDenoiseFilter.DISABLED).psiControl(InputPsiControl.USE_PSI)
.timecodeSource(InputTimecodeSource.EMBEDDED).fileInput(fileInput).build())
.outputGroups(appleHLS, thumbs, fileMp4).build();
CreateJobRequest createJobRequest = CreateJobRequest.builder().role(mcRoleARN).settings(jobSettings)
.build();
CreateJobResponse createJobResponse = emc.createJob(createJobRequest);
return createJobResponse.job().id();
} catch (MediaConvertException e) {
System.out.println(e.toString());
System.exit(0);
}
return "";
}