in media/transcoder/src/main/java/com/example/transcoder/CreateJobWithStandaloneCaptions.java [56:161]
public static void createJobWithStandaloneCaptions(
String projectId,
String location,
String inputVideoUri,
String inputCaptionsUri,
String outputUri)
throws IOException {
// Initialize client that will be used to send requests. This client only needs to be created
// once, and can be reused for multiple requests.
try (TranscoderServiceClient transcoderServiceClient = TranscoderServiceClient.create()) {
VideoStream videoStream0 =
VideoStream.newBuilder()
.setH264(
VideoStream.H264CodecSettings.newBuilder()
.setBitrateBps(550000)
.setFrameRate(60)
.setHeightPixels(360)
.setWidthPixels(640))
.build();
AudioStream audioStream0 =
AudioStream.newBuilder().setCodec("aac").setBitrateBps(64000).build();
TextStream textStream0 =
TextStream.newBuilder()
.setCodec("webvtt")
.addMapping(
0,
TextMapping.newBuilder()
.setAtomKey("atom0")
.setInputKey("caption_input0")
.setInputTrack(0)
.build())
.build();
JobConfig config =
JobConfig.newBuilder()
.addInputs(Input.newBuilder().setKey("input0").setUri(inputVideoUri))
.addInputs(Input.newBuilder().setKey("caption_input0").setUri(inputCaptionsUri))
.addEditList(
0, // Index in the edit list
EditAtom.newBuilder()
.setKey("atom0")
.addInputs("input0")
.addInputs("caption_input0")
.build())
.setOutput(Output.newBuilder().setUri(outputUri))
.addElementaryStreams(
ElementaryStream.newBuilder()
.setKey("video_stream0")
.setVideoStream(videoStream0))
.addElementaryStreams(
ElementaryStream.newBuilder()
.setKey("audio_stream0")
.setAudioStream(audioStream0))
.addElementaryStreams(
ElementaryStream.newBuilder().setKey("vtt_stream0").setTextStream(textStream0))
.addMuxStreams(
0,
MuxStream.newBuilder()
.setKey("sd_hls_fmp4")
.setContainer("fmp4")
.addElementaryStreams("video_stream0")
.build())
.addMuxStreams(
1,
MuxStream.newBuilder()
.setKey("audio_hls_fmp4")
.setContainer("fmp4")
.addElementaryStreams("audio_stream0")
.build())
.addMuxStreams(
2,
MuxStream.newBuilder()
.setKey("text_vtt")
.setContainer("vtt")
.addElementaryStreams("vtt_stream0")
.setSegmentSettings(
SegmentSettings.newBuilder()
.setSegmentDuration(Duration.newBuilder().setSeconds(6).build())
.setIndividualSegments(true)
.build())
.build())
.addManifests(
0,
Manifest.newBuilder()
.setFileName("manifest.m3u8")
.setType(ManifestType.HLS)
.addMuxStreams("sd_hls_fmp4")
.addMuxStreams("audio_hls_fmp4")
.addMuxStreams("text_vtt")
.build())
.build();
CreateJobRequest createJobRequest =
CreateJobRequest.newBuilder()
.setJob(Job.newBuilder().setOutputUri(outputUri).setConfig(config).build())
.setParent(LocationName.of(projectId, location).toString())
.build();
// Send the job creation request and process the response.
Job job = transcoderServiceClient.createJob(createJobRequest);
System.out.println("Job: " + job.getName());
}
}