All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.gcp.transcoder.kotlin.JobTemplateArgs.kt Maven / Gradle / Ivy

@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.gcp.transcoder.kotlin

import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.gcp.transcoder.JobTemplateArgs.builder
import com.pulumi.gcp.transcoder.kotlin.inputs.JobTemplateConfigArgs
import com.pulumi.gcp.transcoder.kotlin.inputs.JobTemplateConfigArgsBuilder
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Pair
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.Map
import kotlin.jvm.JvmName

/**
 * Transcoding Job Template Resource
 * To get more information about JobTemplate, see:
 * * [API documentation](https://cloud.google.com/transcoder/docs/reference/rest/v1/projects.locations.jobTemplates)
 * * How-to Guides
 *     * [Transcoder](https://cloud.google.com/transcoder/docs/)
 * ## Example Usage
 * ### Transcoder Job Template Basic
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 * const _default = new gcp.transcoder.JobTemplate("default", {
 *     jobTemplateId: "example-job-template",
 *     location: "us-central1",
 *     config: {
 *         inputs: [{
 *             key: "input0",
 *         }],
 *         editLists: [{
 *             key: "atom0",
 *             inputs: ["input0"],
 *             startTimeOffset: "0s",
 *         }],
 *         adBreaks: [{
 *             startTimeOffset: "3.500s",
 *         }],
 *         elementaryStreams: [
 *             {
 *                 key: "video-stream0",
 *                 videoStream: {
 *                     h264: {
 *                         widthPixels: 640,
 *                         heightPixels: 360,
 *                         bitrateBps: 550000,
 *                         frameRate: 60,
 *                         pixelFormat: "yuv420p",
 *                         rateControlMode: "vbr",
 *                         crfLevel: 21,
 *                         gopDuration: "3s",
 *                         vbvSizeBits: 550000,
 *                         vbvFullnessBits: 495000,
 *                         entropyCoder: "cabac",
 *                         profile: "high",
 *                         preset: "veryfast",
 *                     },
 *                 },
 *             },
 *             {
 *                 key: "video-stream1",
 *                 videoStream: {
 *                     h264: {
 *                         widthPixels: 1280,
 *                         heightPixels: 720,
 *                         bitrateBps: 550000,
 *                         frameRate: 60,
 *                         pixelFormat: "yuv420p",
 *                         rateControlMode: "vbr",
 *                         crfLevel: 21,
 *                         gopDuration: "3s",
 *                         vbvSizeBits: 2500000,
 *                         vbvFullnessBits: 2250000,
 *                         entropyCoder: "cabac",
 *                         profile: "high",
 *                         preset: "veryfast",
 *                     },
 *                 },
 *             },
 *             {
 *                 key: "audio-stream0",
 *                 audioStream: {
 *                     codec: "aac",
 *                     bitrateBps: 64000,
 *                     channelCount: 2,
 *                     channelLayouts: [
 *                         "fl",
 *                         "fr",
 *                     ],
 *                     sampleRateHertz: 48000,
 *                 },
 *             },
 *         ],
 *         muxStreams: [
 *             {
 *                 key: "sd",
 *                 fileName: "sd.mp4",
 *                 container: "mp4",
 *                 elementaryStreams: [
 *                     "video-stream0",
 *                     "audio-stream0",
 *                 ],
 *             },
 *             {
 *                 key: "hd",
 *                 fileName: "hd.mp4",
 *                 container: "mp4",
 *                 elementaryStreams: [
 *                     "video-stream1",
 *                     "audio-stream0",
 *                 ],
 *             },
 *         ],
 *     },
 *     labels: {
 *         label: "key",
 *     },
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_gcp as gcp
 * default = gcp.transcoder.JobTemplate("default",
 *     job_template_id="example-job-template",
 *     location="us-central1",
 *     config={
 *         "inputs": [{
 *             "key": "input0",
 *         }],
 *         "edit_lists": [{
 *             "key": "atom0",
 *             "inputs": ["input0"],
 *             "start_time_offset": "0s",
 *         }],
 *         "ad_breaks": [{
 *             "start_time_offset": "3.500s",
 *         }],
 *         "elementary_streams": [
 *             {
 *                 "key": "video-stream0",
 *                 "video_stream": {
 *                     "h264": {
 *                         "width_pixels": 640,
 *                         "height_pixels": 360,
 *                         "bitrate_bps": 550000,
 *                         "frame_rate": 60,
 *                         "pixel_format": "yuv420p",
 *                         "rate_control_mode": "vbr",
 *                         "crf_level": 21,
 *                         "gop_duration": "3s",
 *                         "vbv_size_bits": 550000,
 *                         "vbv_fullness_bits": 495000,
 *                         "entropy_coder": "cabac",
 *                         "profile": "high",
 *                         "preset": "veryfast",
 *                     },
 *                 },
 *             },
 *             {
 *                 "key": "video-stream1",
 *                 "video_stream": {
 *                     "h264": {
 *                         "width_pixels": 1280,
 *                         "height_pixels": 720,
 *                         "bitrate_bps": 550000,
 *                         "frame_rate": 60,
 *                         "pixel_format": "yuv420p",
 *                         "rate_control_mode": "vbr",
 *                         "crf_level": 21,
 *                         "gop_duration": "3s",
 *                         "vbv_size_bits": 2500000,
 *                         "vbv_fullness_bits": 2250000,
 *                         "entropy_coder": "cabac",
 *                         "profile": "high",
 *                         "preset": "veryfast",
 *                     },
 *                 },
 *             },
 *             {
 *                 "key": "audio-stream0",
 *                 "audio_stream": {
 *                     "codec": "aac",
 *                     "bitrate_bps": 64000,
 *                     "channel_count": 2,
 *                     "channel_layouts": [
 *                         "fl",
 *                         "fr",
 *                     ],
 *                     "sample_rate_hertz": 48000,
 *                 },
 *             },
 *         ],
 *         "mux_streams": [
 *             {
 *                 "key": "sd",
 *                 "file_name": "sd.mp4",
 *                 "container": "mp4",
 *                 "elementary_streams": [
 *                     "video-stream0",
 *                     "audio-stream0",
 *                 ],
 *             },
 *             {
 *                 "key": "hd",
 *                 "file_name": "hd.mp4",
 *                 "container": "mp4",
 *                 "elementary_streams": [
 *                     "video-stream1",
 *                     "audio-stream0",
 *                 ],
 *             },
 *         ],
 *     },
 *     labels={
 *         "label": "key",
 *     })
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Gcp = Pulumi.Gcp;
 * return await Deployment.RunAsync(() =>
 * {
 *     var @default = new Gcp.Transcoder.JobTemplate("default", new()
 *     {
 *         JobTemplateId = "example-job-template",
 *         Location = "us-central1",
 *         Config = new Gcp.Transcoder.Inputs.JobTemplateConfigArgs
 *         {
 *             Inputs = new[]
 *             {
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigInputArgs
 *                 {
 *                     Key = "input0",
 *                 },
 *             },
 *             EditLists = new[]
 *             {
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigEditListArgs
 *                 {
 *                     Key = "atom0",
 *                     Inputs = new[]
 *                     {
 *                         "input0",
 *                     },
 *                     StartTimeOffset = "0s",
 *                 },
 *             },
 *             AdBreaks = new[]
 *             {
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigAdBreakArgs
 *                 {
 *                     StartTimeOffset = "3.500s",
 *                 },
 *             },
 *             ElementaryStreams = new[]
 *             {
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamArgs
 *                 {
 *                     Key = "video-stream0",
 *                     VideoStream = new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamVideoStreamArgs
 *                     {
 *                         H264 = new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamVideoStreamH264Args
 *                         {
 *                             WidthPixels = 640,
 *                             HeightPixels = 360,
 *                             BitrateBps = 550000,
 *                             FrameRate = 60,
 *                             PixelFormat = "yuv420p",
 *                             RateControlMode = "vbr",
 *                             CrfLevel = 21,
 *                             GopDuration = "3s",
 *                             VbvSizeBits = 550000,
 *                             VbvFullnessBits = 495000,
 *                             EntropyCoder = "cabac",
 *                             Profile = "high",
 *                             Preset = "veryfast",
 *                         },
 *                     },
 *                 },
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamArgs
 *                 {
 *                     Key = "video-stream1",
 *                     VideoStream = new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamVideoStreamArgs
 *                     {
 *                         H264 = new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamVideoStreamH264Args
 *                         {
 *                             WidthPixels = 1280,
 *                             HeightPixels = 720,
 *                             BitrateBps = 550000,
 *                             FrameRate = 60,
 *                             PixelFormat = "yuv420p",
 *                             RateControlMode = "vbr",
 *                             CrfLevel = 21,
 *                             GopDuration = "3s",
 *                             VbvSizeBits = 2500000,
 *                             VbvFullnessBits = 2250000,
 *                             EntropyCoder = "cabac",
 *                             Profile = "high",
 *                             Preset = "veryfast",
 *                         },
 *                     },
 *                 },
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamArgs
 *                 {
 *                     Key = "audio-stream0",
 *                     AudioStream = new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamAudioStreamArgs
 *                     {
 *                         Codec = "aac",
 *                         BitrateBps = 64000,
 *                         ChannelCount = 2,
 *                         ChannelLayouts = new[]
 *                         {
 *                             "fl",
 *                             "fr",
 *                         },
 *                         SampleRateHertz = 48000,
 *                     },
 *                 },
 *             },
 *             MuxStreams = new[]
 *             {
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigMuxStreamArgs
 *                 {
 *                     Key = "sd",
 *                     FileName = "sd.mp4",
 *                     Container = "mp4",
 *                     ElementaryStreams = new[]
 *                     {
 *                         "video-stream0",
 *                         "audio-stream0",
 *                     },
 *                 },
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigMuxStreamArgs
 *                 {
 *                     Key = "hd",
 *                     FileName = "hd.mp4",
 *                     Container = "mp4",
 *                     ElementaryStreams = new[]
 *                     {
 *                         "video-stream1",
 *                         "audio-stream0",
 *                     },
 *                 },
 *             },
 *         },
 *         Labels =
 *         {
 *             { "label", "key" },
 *         },
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/transcoder"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := transcoder.NewJobTemplate(ctx, "default", &transcoder.JobTemplateArgs{
 * 			JobTemplateId: pulumi.String("example-job-template"),
 * 			Location:      pulumi.String("us-central1"),
 * 			Config: &transcoder.JobTemplateConfigArgs{
 * 				Inputs: transcoder.JobTemplateConfigInputTypeArray{
 * 					&transcoder.JobTemplateConfigInputTypeArgs{
 * 						Key: pulumi.String("input0"),
 * 					},
 * 				},
 * 				EditLists: transcoder.JobTemplateConfigEditListArray{
 * 					&transcoder.JobTemplateConfigEditListArgs{
 * 						Key: pulumi.String("atom0"),
 * 						Inputs: pulumi.StringArray{
 * 							pulumi.String("input0"),
 * 						},
 * 						StartTimeOffset: pulumi.String("0s"),
 * 					},
 * 				},
 * 				AdBreaks: transcoder.JobTemplateConfigAdBreakArray{
 * 					&transcoder.JobTemplateConfigAdBreakArgs{
 * 						StartTimeOffset: pulumi.String("3.500s"),
 * 					},
 * 				},
 * 				ElementaryStreams: transcoder.JobTemplateConfigElementaryStreamArray{
 * 					&transcoder.JobTemplateConfigElementaryStreamArgs{
 * 						Key: pulumi.String("video-stream0"),
 * 						VideoStream: &transcoder.JobTemplateConfigElementaryStreamVideoStreamArgs{
 * 							H264: &transcoder.JobTemplateConfigElementaryStreamVideoStreamH264Args{
 * 								WidthPixels:     pulumi.Int(640),
 * 								HeightPixels:    pulumi.Int(360),
 * 								BitrateBps:      pulumi.Int(550000),
 * 								FrameRate:       pulumi.Int(60),
 * 								PixelFormat:     pulumi.String("yuv420p"),
 * 								RateControlMode: pulumi.String("vbr"),
 * 								CrfLevel:        pulumi.Int(21),
 * 								GopDuration:     pulumi.String("3s"),
 * 								VbvSizeBits:     pulumi.Int(550000),
 * 								VbvFullnessBits: pulumi.Int(495000),
 * 								EntropyCoder:    pulumi.String("cabac"),
 * 								Profile:         pulumi.String("high"),
 * 								Preset:          pulumi.String("veryfast"),
 * 							},
 * 						},
 * 					},
 * 					&transcoder.JobTemplateConfigElementaryStreamArgs{
 * 						Key: pulumi.String("video-stream1"),
 * 						VideoStream: &transcoder.JobTemplateConfigElementaryStreamVideoStreamArgs{
 * 							H264: &transcoder.JobTemplateConfigElementaryStreamVideoStreamH264Args{
 * 								WidthPixels:     pulumi.Int(1280),
 * 								HeightPixels:    pulumi.Int(720),
 * 								BitrateBps:      pulumi.Int(550000),
 * 								FrameRate:       pulumi.Int(60),
 * 								PixelFormat:     pulumi.String("yuv420p"),
 * 								RateControlMode: pulumi.String("vbr"),
 * 								CrfLevel:        pulumi.Int(21),
 * 								GopDuration:     pulumi.String("3s"),
 * 								VbvSizeBits:     pulumi.Int(2500000),
 * 								VbvFullnessBits: pulumi.Int(2250000),
 * 								EntropyCoder:    pulumi.String("cabac"),
 * 								Profile:         pulumi.String("high"),
 * 								Preset:          pulumi.String("veryfast"),
 * 							},
 * 						},
 * 					},
 * 					&transcoder.JobTemplateConfigElementaryStreamArgs{
 * 						Key: pulumi.String("audio-stream0"),
 * 						AudioStream: &transcoder.JobTemplateConfigElementaryStreamAudioStreamArgs{
 * 							Codec:        pulumi.String("aac"),
 * 							BitrateBps:   pulumi.Int(64000),
 * 							ChannelCount: pulumi.Int(2),
 * 							ChannelLayouts: pulumi.StringArray{
 * 								pulumi.String("fl"),
 * 								pulumi.String("fr"),
 * 							},
 * 							SampleRateHertz: pulumi.Int(48000),
 * 						},
 * 					},
 * 				},
 * 				MuxStreams: transcoder.JobTemplateConfigMuxStreamArray{
 * 					&transcoder.JobTemplateConfigMuxStreamArgs{
 * 						Key:       pulumi.String("sd"),
 * 						FileName:  pulumi.String("sd.mp4"),
 * 						Container: pulumi.String("mp4"),
 * 						ElementaryStreams: pulumi.StringArray{
 * 							pulumi.String("video-stream0"),
 * 							pulumi.String("audio-stream0"),
 * 						},
 * 					},
 * 					&transcoder.JobTemplateConfigMuxStreamArgs{
 * 						Key:       pulumi.String("hd"),
 * 						FileName:  pulumi.String("hd.mp4"),
 * 						Container: pulumi.String("mp4"),
 * 						ElementaryStreams: pulumi.StringArray{
 * 							pulumi.String("video-stream1"),
 * 							pulumi.String("audio-stream0"),
 * 						},
 * 					},
 * 				},
 * 			},
 * 			Labels: pulumi.StringMap{
 * 				"label": pulumi.String("key"),
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.gcp.transcoder.JobTemplate;
 * import com.pulumi.gcp.transcoder.JobTemplateArgs;
 * import com.pulumi.gcp.transcoder.inputs.JobTemplateConfigArgs;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         var default_ = new JobTemplate("default", JobTemplateArgs.builder()
 *             .jobTemplateId("example-job-template")
 *             .location("us-central1")
 *             .config(JobTemplateConfigArgs.builder()
 *                 .inputs(JobTemplateConfigInputArgs.builder()
 *                     .key("input0")
 *                     .build())
 *                 .editLists(JobTemplateConfigEditListArgs.builder()
 *                     .key("atom0")
 *                     .inputs("input0")
 *                     .startTimeOffset("0s")
 *                     .build())
 *                 .adBreaks(JobTemplateConfigAdBreakArgs.builder()
 *                     .startTimeOffset("3.500s")
 *                     .build())
 *                 .elementaryStreams(
 *                     JobTemplateConfigElementaryStreamArgs.builder()
 *                         .key("video-stream0")
 *                         .videoStream(JobTemplateConfigElementaryStreamVideoStreamArgs.builder()
 *                             .h264(JobTemplateConfigElementaryStreamVideoStreamH264Args.builder()
 *                                 .widthPixels(640)
 *                                 .heightPixels(360)
 *                                 .bitrateBps(550000)
 *                                 .frameRate(60)
 *                                 .pixelFormat("yuv420p")
 *                                 .rateControlMode("vbr")
 *                                 .crfLevel(21)
 *                                 .gopDuration("3s")
 *                                 .vbvSizeBits(550000)
 *                                 .vbvFullnessBits(495000)
 *                                 .entropyCoder("cabac")
 *                                 .profile("high")
 *                                 .preset("veryfast")
 *                                 .build())
 *                             .build())
 *                         .build(),
 *                     JobTemplateConfigElementaryStreamArgs.builder()
 *                         .key("video-stream1")
 *                         .videoStream(JobTemplateConfigElementaryStreamVideoStreamArgs.builder()
 *                             .h264(JobTemplateConfigElementaryStreamVideoStreamH264Args.builder()
 *                                 .widthPixels(1280)
 *                                 .heightPixels(720)
 *                                 .bitrateBps(550000)
 *                                 .frameRate(60)
 *                                 .pixelFormat("yuv420p")
 *                                 .rateControlMode("vbr")
 *                                 .crfLevel(21)
 *                                 .gopDuration("3s")
 *                                 .vbvSizeBits(2500000)
 *                                 .vbvFullnessBits(2250000)
 *                                 .entropyCoder("cabac")
 *                                 .profile("high")
 *                                 .preset("veryfast")
 *                                 .build())
 *                             .build())
 *                         .build(),
 *                     JobTemplateConfigElementaryStreamArgs.builder()
 *                         .key("audio-stream0")
 *                         .audioStream(JobTemplateConfigElementaryStreamAudioStreamArgs.builder()
 *                             .codec("aac")
 *                             .bitrateBps(64000)
 *                             .channelCount(2)
 *                             .channelLayouts(
 *                                 "fl",
 *                                 "fr")
 *                             .sampleRateHertz(48000)
 *                             .build())
 *                         .build())
 *                 .muxStreams(
 *                     JobTemplateConfigMuxStreamArgs.builder()
 *                         .key("sd")
 *                         .fileName("sd.mp4")
 *                         .container("mp4")
 *                         .elementaryStreams(
 *                             "video-stream0",
 *                             "audio-stream0")
 *                         .build(),
 *                     JobTemplateConfigMuxStreamArgs.builder()
 *                         .key("hd")
 *                         .fileName("hd.mp4")
 *                         .container("mp4")
 *                         .elementaryStreams(
 *                             "video-stream1",
 *                             "audio-stream0")
 *                         .build())
 *                 .build())
 *             .labels(Map.of("label", "key"))
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   default:
 *     type: gcp:transcoder:JobTemplate
 *     properties:
 *       jobTemplateId: example-job-template
 *       location: us-central1
 *       config:
 *         inputs:
 *           - key: input0
 *         editLists:
 *           - key: atom0
 *             inputs:
 *               - input0
 *             startTimeOffset: 0s
 *         adBreaks:
 *           - startTimeOffset: 3.500s
 *         elementaryStreams:
 *           - key: video-stream0
 *             videoStream:
 *               h264:
 *                 widthPixels: 640
 *                 heightPixels: 360
 *                 bitrateBps: 550000
 *                 frameRate: 60
 *                 pixelFormat: yuv420p
 *                 rateControlMode: vbr
 *                 crfLevel: 21
 *                 gopDuration: 3s
 *                 vbvSizeBits: 550000
 *                 vbvFullnessBits: 495000
 *                 entropyCoder: cabac
 *                 profile: high
 *                 preset: veryfast
 *           - key: video-stream1
 *             videoStream:
 *               h264:
 *                 widthPixels: 1280
 *                 heightPixels: 720
 *                 bitrateBps: 550000
 *                 frameRate: 60
 *                 pixelFormat: yuv420p
 *                 rateControlMode: vbr
 *                 crfLevel: 21
 *                 gopDuration: 3s
 *                 vbvSizeBits: 2.5e+06
 *                 vbvFullnessBits: 2.25e+06
 *                 entropyCoder: cabac
 *                 profile: high
 *                 preset: veryfast
 *           - key: audio-stream0
 *             audioStream:
 *               codec: aac
 *               bitrateBps: 64000
 *               channelCount: 2
 *               channelLayouts:
 *                 - fl
 *                 - fr
 *               sampleRateHertz: 48000
 *         muxStreams:
 *           - key: sd
 *             fileName: sd.mp4
 *             container: mp4
 *             elementaryStreams:
 *               - video-stream0
 *               - audio-stream0
 *           - key: hd
 *             fileName: hd.mp4
 *             container: mp4
 *             elementaryStreams:
 *               - video-stream1
 *               - audio-stream0
 *       labels:
 *         label: key
 * ```
 * 
 * ### Transcoder Job Template Overlays
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 * const _default = new gcp.transcoder.JobTemplate("default", {
 *     jobTemplateId: "example-job-template",
 *     location: "us-central1",
 *     config: {
 *         inputs: [{
 *             key: "input0",
 *             uri: "gs://example/example.mp4",
 *         }],
 *         output: {
 *             uri: "gs://example/outputs/",
 *         },
 *         editLists: [{
 *             key: "atom0",
 *             inputs: ["input0"],
 *             startTimeOffset: "0s",
 *         }],
 *         adBreaks: [{
 *             startTimeOffset: "3.500s",
 *         }],
 *         overlays: [{
 *             animations: [{
 *                 animationFade: {
 *                     fadeType: "FADE_IN",
 *                     startTimeOffset: "1.500s",
 *                     endTimeOffset: "3.500s",
 *                     xy: {
 *                         x: 1,
 *                         y: 0.5,
 *                     },
 *                 },
 *             }],
 *             image: {
 *                 uri: "gs://example/overlay.png",
 *             },
 *         }],
 *         elementaryStreams: [
 *             {
 *                 key: "video-stream0",
 *                 videoStream: {
 *                     h264: {
 *                         widthPixels: 640,
 *                         heightPixels: 360,
 *                         bitrateBps: 550000,
 *                         frameRate: 60,
 *                         pixelFormat: "yuv420p",
 *                         rateControlMode: "vbr",
 *                         crfLevel: 21,
 *                         gopDuration: "3s",
 *                         vbvSizeBits: 550000,
 *                         vbvFullnessBits: 495000,
 *                         entropyCoder: "cabac",
 *                         profile: "high",
 *                         preset: "veryfast",
 *                     },
 *                 },
 *             },
 *             {
 *                 key: "video-stream1",
 *                 videoStream: {
 *                     h264: {
 *                         widthPixels: 1280,
 *                         heightPixels: 720,
 *                         bitrateBps: 550000,
 *                         frameRate: 60,
 *                         pixelFormat: "yuv420p",
 *                         rateControlMode: "vbr",
 *                         crfLevel: 21,
 *                         gopDuration: "3s",
 *                         vbvSizeBits: 2500000,
 *                         vbvFullnessBits: 2250000,
 *                         entropyCoder: "cabac",
 *                         profile: "high",
 *                         preset: "veryfast",
 *                     },
 *                 },
 *             },
 *             {
 *                 key: "audio-stream0",
 *                 audioStream: {
 *                     codec: "aac",
 *                     bitrateBps: 64000,
 *                     channelCount: 2,
 *                     channelLayouts: [
 *                         "fl",
 *                         "fr",
 *                     ],
 *                     sampleRateHertz: 48000,
 *                 },
 *             },
 *         ],
 *         muxStreams: [
 *             {
 *                 key: "sd",
 *                 fileName: "sd.mp4",
 *                 container: "mp4",
 *                 elementaryStreams: [
 *                     "video-stream0",
 *                     "audio-stream0",
 *                 ],
 *             },
 *             {
 *                 key: "hd",
 *                 fileName: "hd.mp4",
 *                 container: "mp4",
 *                 elementaryStreams: [
 *                     "video-stream1",
 *                     "audio-stream0",
 *                 ],
 *             },
 *         ],
 *     },
 *     labels: {
 *         label: "key",
 *     },
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_gcp as gcp
 * default = gcp.transcoder.JobTemplate("default",
 *     job_template_id="example-job-template",
 *     location="us-central1",
 *     config={
 *         "inputs": [{
 *             "key": "input0",
 *             "uri": "gs://example/example.mp4",
 *         }],
 *         "output": {
 *             "uri": "gs://example/outputs/",
 *         },
 *         "edit_lists": [{
 *             "key": "atom0",
 *             "inputs": ["input0"],
 *             "start_time_offset": "0s",
 *         }],
 *         "ad_breaks": [{
 *             "start_time_offset": "3.500s",
 *         }],
 *         "overlays": [{
 *             "animations": [{
 *                 "animation_fade": {
 *                     "fade_type": "FADE_IN",
 *                     "start_time_offset": "1.500s",
 *                     "end_time_offset": "3.500s",
 *                     "xy": {
 *                         "x": 1,
 *                         "y": 0.5,
 *                     },
 *                 },
 *             }],
 *             "image": {
 *                 "uri": "gs://example/overlay.png",
 *             },
 *         }],
 *         "elementary_streams": [
 *             {
 *                 "key": "video-stream0",
 *                 "video_stream": {
 *                     "h264": {
 *                         "width_pixels": 640,
 *                         "height_pixels": 360,
 *                         "bitrate_bps": 550000,
 *                         "frame_rate": 60,
 *                         "pixel_format": "yuv420p",
 *                         "rate_control_mode": "vbr",
 *                         "crf_level": 21,
 *                         "gop_duration": "3s",
 *                         "vbv_size_bits": 550000,
 *                         "vbv_fullness_bits": 495000,
 *                         "entropy_coder": "cabac",
 *                         "profile": "high",
 *                         "preset": "veryfast",
 *                     },
 *                 },
 *             },
 *             {
 *                 "key": "video-stream1",
 *                 "video_stream": {
 *                     "h264": {
 *                         "width_pixels": 1280,
 *                         "height_pixels": 720,
 *                         "bitrate_bps": 550000,
 *                         "frame_rate": 60,
 *                         "pixel_format": "yuv420p",
 *                         "rate_control_mode": "vbr",
 *                         "crf_level": 21,
 *                         "gop_duration": "3s",
 *                         "vbv_size_bits": 2500000,
 *                         "vbv_fullness_bits": 2250000,
 *                         "entropy_coder": "cabac",
 *                         "profile": "high",
 *                         "preset": "veryfast",
 *                     },
 *                 },
 *             },
 *             {
 *                 "key": "audio-stream0",
 *                 "audio_stream": {
 *                     "codec": "aac",
 *                     "bitrate_bps": 64000,
 *                     "channel_count": 2,
 *                     "channel_layouts": [
 *                         "fl",
 *                         "fr",
 *                     ],
 *                     "sample_rate_hertz": 48000,
 *                 },
 *             },
 *         ],
 *         "mux_streams": [
 *             {
 *                 "key": "sd",
 *                 "file_name": "sd.mp4",
 *                 "container": "mp4",
 *                 "elementary_streams": [
 *                     "video-stream0",
 *                     "audio-stream0",
 *                 ],
 *             },
 *             {
 *                 "key": "hd",
 *                 "file_name": "hd.mp4",
 *                 "container": "mp4",
 *                 "elementary_streams": [
 *                     "video-stream1",
 *                     "audio-stream0",
 *                 ],
 *             },
 *         ],
 *     },
 *     labels={
 *         "label": "key",
 *     })
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Gcp = Pulumi.Gcp;
 * return await Deployment.RunAsync(() =>
 * {
 *     var @default = new Gcp.Transcoder.JobTemplate("default", new()
 *     {
 *         JobTemplateId = "example-job-template",
 *         Location = "us-central1",
 *         Config = new Gcp.Transcoder.Inputs.JobTemplateConfigArgs
 *         {
 *             Inputs = new[]
 *             {
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigInputArgs
 *                 {
 *                     Key = "input0",
 *                     Uri = "gs://example/example.mp4",
 *                 },
 *             },
 *             Output = new Gcp.Transcoder.Inputs.JobTemplateConfigOutputArgs
 *             {
 *                 Uri = "gs://example/outputs/",
 *             },
 *             EditLists = new[]
 *             {
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigEditListArgs
 *                 {
 *                     Key = "atom0",
 *                     Inputs = new[]
 *                     {
 *                         "input0",
 *                     },
 *                     StartTimeOffset = "0s",
 *                 },
 *             },
 *             AdBreaks = new[]
 *             {
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigAdBreakArgs
 *                 {
 *                     StartTimeOffset = "3.500s",
 *                 },
 *             },
 *             Overlays = new[]
 *             {
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigOverlayArgs
 *                 {
 *                     Animations = new[]
 *                     {
 *                         new Gcp.Transcoder.Inputs.JobTemplateConfigOverlayAnimationArgs
 *                         {
 *                             AnimationFade = new Gcp.Transcoder.Inputs.JobTemplateConfigOverlayAnimationAnimationFadeArgs
 *                             {
 *                                 FadeType = "FADE_IN",
 *                                 StartTimeOffset = "1.500s",
 *                                 EndTimeOffset = "3.500s",
 *                                 Xy = new Gcp.Transcoder.Inputs.JobTemplateConfigOverlayAnimationAnimationFadeXyArgs
 *                                 {
 *                                     X = 1,
 *                                     Y = 0.5,
 *                                 },
 *                             },
 *                         },
 *                     },
 *                     Image = new Gcp.Transcoder.Inputs.JobTemplateConfigOverlayImageArgs
 *                     {
 *                         Uri = "gs://example/overlay.png",
 *                     },
 *                 },
 *             },
 *             ElementaryStreams = new[]
 *             {
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamArgs
 *                 {
 *                     Key = "video-stream0",
 *                     VideoStream = new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamVideoStreamArgs
 *                     {
 *                         H264 = new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamVideoStreamH264Args
 *                         {
 *                             WidthPixels = 640,
 *                             HeightPixels = 360,
 *                             BitrateBps = 550000,
 *                             FrameRate = 60,
 *                             PixelFormat = "yuv420p",
 *                             RateControlMode = "vbr",
 *                             CrfLevel = 21,
 *                             GopDuration = "3s",
 *                             VbvSizeBits = 550000,
 *                             VbvFullnessBits = 495000,
 *                             EntropyCoder = "cabac",
 *                             Profile = "high",
 *                             Preset = "veryfast",
 *                         },
 *                     },
 *                 },
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamArgs
 *                 {
 *                     Key = "video-stream1",
 *                     VideoStream = new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamVideoStreamArgs
 *                     {
 *                         H264 = new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamVideoStreamH264Args
 *                         {
 *                             WidthPixels = 1280,
 *                             HeightPixels = 720,
 *                             BitrateBps = 550000,
 *                             FrameRate = 60,
 *                             PixelFormat = "yuv420p",
 *                             RateControlMode = "vbr",
 *                             CrfLevel = 21,
 *                             GopDuration = "3s",
 *                             VbvSizeBits = 2500000,
 *                             VbvFullnessBits = 2250000,
 *                             EntropyCoder = "cabac",
 *                             Profile = "high",
 *                             Preset = "veryfast",
 *                         },
 *                     },
 *                 },
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamArgs
 *                 {
 *                     Key = "audio-stream0",
 *                     AudioStream = new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamAudioStreamArgs
 *                     {
 *                         Codec = "aac",
 *                         BitrateBps = 64000,
 *                         ChannelCount = 2,
 *                         ChannelLayouts = new[]
 *                         {
 *                             "fl",
 *                             "fr",
 *                         },
 *                         SampleRateHertz = 48000,
 *                     },
 *                 },
 *             },
 *             MuxStreams = new[]
 *             {
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigMuxStreamArgs
 *                 {
 *                     Key = "sd",
 *                     FileName = "sd.mp4",
 *                     Container = "mp4",
 *                     ElementaryStreams = new[]
 *                     {
 *                         "video-stream0",
 *                         "audio-stream0",
 *                     },
 *                 },
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigMuxStreamArgs
 *                 {
 *                     Key = "hd",
 *                     FileName = "hd.mp4",
 *                     Container = "mp4",
 *                     ElementaryStreams = new[]
 *                     {
 *                         "video-stream1",
 *                         "audio-stream0",
 *                     },
 *                 },
 *             },
 *         },
 *         Labels =
 *         {
 *             { "label", "key" },
 *         },
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/transcoder"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := transcoder.NewJobTemplate(ctx, "default", &transcoder.JobTemplateArgs{
 * 			JobTemplateId: pulumi.String("example-job-template"),
 * 			Location:      pulumi.String("us-central1"),
 * 			Config: &transcoder.JobTemplateConfigArgs{
 * 				Inputs: transcoder.JobTemplateConfigInputTypeArray{
 * 					&transcoder.JobTemplateConfigInputTypeArgs{
 * 						Key: pulumi.String("input0"),
 * 						Uri: pulumi.String("gs://example/example.mp4"),
 * 					},
 * 				},
 * 				Output: &transcoder.JobTemplateConfigOutputTypeArgs{
 * 					Uri: pulumi.String("gs://example/outputs/"),
 * 				},
 * 				EditLists: transcoder.JobTemplateConfigEditListArray{
 * 					&transcoder.JobTemplateConfigEditListArgs{
 * 						Key: pulumi.String("atom0"),
 * 						Inputs: pulumi.StringArray{
 * 							pulumi.String("input0"),
 * 						},
 * 						StartTimeOffset: pulumi.String("0s"),
 * 					},
 * 				},
 * 				AdBreaks: transcoder.JobTemplateConfigAdBreakArray{
 * 					&transcoder.JobTemplateConfigAdBreakArgs{
 * 						StartTimeOffset: pulumi.String("3.500s"),
 * 					},
 * 				},
 * 				Overlays: transcoder.JobTemplateConfigOverlayArray{
 * 					&transcoder.JobTemplateConfigOverlayArgs{
 * 						Animations: transcoder.JobTemplateConfigOverlayAnimationArray{
 * 							&transcoder.JobTemplateConfigOverlayAnimationArgs{
 * 								AnimationFade: &transcoder.JobTemplateConfigOverlayAnimationAnimationFadeArgs{
 * 									FadeType:        pulumi.String("FADE_IN"),
 * 									StartTimeOffset: pulumi.String("1.500s"),
 * 									EndTimeOffset:   pulumi.String("3.500s"),
 * 									Xy: &transcoder.JobTemplateConfigOverlayAnimationAnimationFadeXyArgs{
 * 										X: pulumi.Float64(1),
 * 										Y: pulumi.Float64(0.5),
 * 									},
 * 								},
 * 							},
 * 						},
 * 						Image: &transcoder.JobTemplateConfigOverlayImageArgs{
 * 							Uri: pulumi.String("gs://example/overlay.png"),
 * 						},
 * 					},
 * 				},
 * 				ElementaryStreams: transcoder.JobTemplateConfigElementaryStreamArray{
 * 					&transcoder.JobTemplateConfigElementaryStreamArgs{
 * 						Key: pulumi.String("video-stream0"),
 * 						VideoStream: &transcoder.JobTemplateConfigElementaryStreamVideoStreamArgs{
 * 							H264: &transcoder.JobTemplateConfigElementaryStreamVideoStreamH264Args{
 * 								WidthPixels:     pulumi.Int(640),
 * 								HeightPixels:    pulumi.Int(360),
 * 								BitrateBps:      pulumi.Int(550000),
 * 								FrameRate:       pulumi.Int(60),
 * 								PixelFormat:     pulumi.String("yuv420p"),
 * 								RateControlMode: pulumi.String("vbr"),
 * 								CrfLevel:        pulumi.Int(21),
 * 								GopDuration:     pulumi.String("3s"),
 * 								VbvSizeBits:     pulumi.Int(550000),
 * 								VbvFullnessBits: pulumi.Int(495000),
 * 								EntropyCoder:    pulumi.String("cabac"),
 * 								Profile:         pulumi.String("high"),
 * 								Preset:          pulumi.String("veryfast"),
 * 							},
 * 						},
 * 					},
 * 					&transcoder.JobTemplateConfigElementaryStreamArgs{
 * 						Key: pulumi.String("video-stream1"),
 * 						VideoStream: &transcoder.JobTemplateConfigElementaryStreamVideoStreamArgs{
 * 							H264: &transcoder.JobTemplateConfigElementaryStreamVideoStreamH264Args{
 * 								WidthPixels:     pulumi.Int(1280),
 * 								HeightPixels:    pulumi.Int(720),
 * 								BitrateBps:      pulumi.Int(550000),
 * 								FrameRate:       pulumi.Int(60),
 * 								PixelFormat:     pulumi.String("yuv420p"),
 * 								RateControlMode: pulumi.String("vbr"),
 * 								CrfLevel:        pulumi.Int(21),
 * 								GopDuration:     pulumi.String("3s"),
 * 								VbvSizeBits:     pulumi.Int(2500000),
 * 								VbvFullnessBits: pulumi.Int(2250000),
 * 								EntropyCoder:    pulumi.String("cabac"),
 * 								Profile:         pulumi.String("high"),
 * 								Preset:          pulumi.String("veryfast"),
 * 							},
 * 						},
 * 					},
 * 					&transcoder.JobTemplateConfigElementaryStreamArgs{
 * 						Key: pulumi.String("audio-stream0"),
 * 						AudioStream: &transcoder.JobTemplateConfigElementaryStreamAudioStreamArgs{
 * 							Codec:        pulumi.String("aac"),
 * 							BitrateBps:   pulumi.Int(64000),
 * 							ChannelCount: pulumi.Int(2),
 * 							ChannelLayouts: pulumi.StringArray{
 * 								pulumi.String("fl"),
 * 								pulumi.String("fr"),
 * 							},
 * 							SampleRateHertz: pulumi.Int(48000),
 * 						},
 * 					},
 * 				},
 * 				MuxStreams: transcoder.JobTemplateConfigMuxStreamArray{
 * 					&transcoder.JobTemplateConfigMuxStreamArgs{
 * 						Key:       pulumi.String("sd"),
 * 						FileName:  pulumi.String("sd.mp4"),
 * 						Container: pulumi.String("mp4"),
 * 						ElementaryStreams: pulumi.StringArray{
 * 							pulumi.String("video-stream0"),
 * 							pulumi.String("audio-stream0"),
 * 						},
 * 					},
 * 					&transcoder.JobTemplateConfigMuxStreamArgs{
 * 						Key:       pulumi.String("hd"),
 * 						FileName:  pulumi.String("hd.mp4"),
 * 						Container: pulumi.String("mp4"),
 * 						ElementaryStreams: pulumi.StringArray{
 * 							pulumi.String("video-stream1"),
 * 							pulumi.String("audio-stream0"),
 * 						},
 * 					},
 * 				},
 * 			},
 * 			Labels: pulumi.StringMap{
 * 				"label": pulumi.String("key"),
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.gcp.transcoder.JobTemplate;
 * import com.pulumi.gcp.transcoder.JobTemplateArgs;
 * import com.pulumi.gcp.transcoder.inputs.JobTemplateConfigArgs;
 * import com.pulumi.gcp.transcoder.inputs.JobTemplateConfigOutputArgs;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         var default_ = new JobTemplate("default", JobTemplateArgs.builder()
 *             .jobTemplateId("example-job-template")
 *             .location("us-central1")
 *             .config(JobTemplateConfigArgs.builder()
 *                 .inputs(JobTemplateConfigInputArgs.builder()
 *                     .key("input0")
 *                     .uri("gs://example/example.mp4")
 *                     .build())
 *                 .output(JobTemplateConfigOutputArgs.builder()
 *                     .uri("gs://example/outputs/")
 *                     .build())
 *                 .editLists(JobTemplateConfigEditListArgs.builder()
 *                     .key("atom0")
 *                     .inputs("input0")
 *                     .startTimeOffset("0s")
 *                     .build())
 *                 .adBreaks(JobTemplateConfigAdBreakArgs.builder()
 *                     .startTimeOffset("3.500s")
 *                     .build())
 *                 .overlays(JobTemplateConfigOverlayArgs.builder()
 *                     .animations(JobTemplateConfigOverlayAnimationArgs.builder()
 *                         .animationFade(JobTemplateConfigOverlayAnimationAnimationFadeArgs.builder()
 *                             .fadeType("FADE_IN")
 *                             .startTimeOffset("1.500s")
 *                             .endTimeOffset("3.500s")
 *                             .xy(JobTemplateConfigOverlayAnimationAnimationFadeXyArgs.builder()
 *                                 .x(1)
 *                                 .y(0.5)
 *                                 .build())
 *                             .build())
 *                         .build())
 *                     .image(JobTemplateConfigOverlayImageArgs.builder()
 *                         .uri("gs://example/overlay.png")
 *                         .build())
 *                     .build())
 *                 .elementaryStreams(
 *                     JobTemplateConfigElementaryStreamArgs.builder()
 *                         .key("video-stream0")
 *                         .videoStream(JobTemplateConfigElementaryStreamVideoStreamArgs.builder()
 *                             .h264(JobTemplateConfigElementaryStreamVideoStreamH264Args.builder()
 *                                 .widthPixels(640)
 *                                 .heightPixels(360)
 *                                 .bitrateBps(550000)
 *                                 .frameRate(60)
 *                                 .pixelFormat("yuv420p")
 *                                 .rateControlMode("vbr")
 *                                 .crfLevel(21)
 *                                 .gopDuration("3s")
 *                                 .vbvSizeBits(550000)
 *                                 .vbvFullnessBits(495000)
 *                                 .entropyCoder("cabac")
 *                                 .profile("high")
 *                                 .preset("veryfast")
 *                                 .build())
 *                             .build())
 *                         .build(),
 *                     JobTemplateConfigElementaryStreamArgs.builder()
 *                         .key("video-stream1")
 *                         .videoStream(JobTemplateConfigElementaryStreamVideoStreamArgs.builder()
 *                             .h264(JobTemplateConfigElementaryStreamVideoStreamH264Args.builder()
 *                                 .widthPixels(1280)
 *                                 .heightPixels(720)
 *                                 .bitrateBps(550000)
 *                                 .frameRate(60)
 *                                 .pixelFormat("yuv420p")
 *                                 .rateControlMode("vbr")
 *                                 .crfLevel(21)
 *                                 .gopDuration("3s")
 *                                 .vbvSizeBits(2500000)
 *                                 .vbvFullnessBits(2250000)
 *                                 .entropyCoder("cabac")
 *                                 .profile("high")
 *                                 .preset("veryfast")
 *                                 .build())
 *                             .build())
 *                         .build(),
 *                     JobTemplateConfigElementaryStreamArgs.builder()
 *                         .key("audio-stream0")
 *                         .audioStream(JobTemplateConfigElementaryStreamAudioStreamArgs.builder()
 *                             .codec("aac")
 *                             .bitrateBps(64000)
 *                             .channelCount(2)
 *                             .channelLayouts(
 *                                 "fl",
 *                                 "fr")
 *                             .sampleRateHertz(48000)
 *                             .build())
 *                         .build())
 *                 .muxStreams(
 *                     JobTemplateConfigMuxStreamArgs.builder()
 *                         .key("sd")
 *                         .fileName("sd.mp4")
 *                         .container("mp4")
 *                         .elementaryStreams(
 *                             "video-stream0",
 *                             "audio-stream0")
 *                         .build(),
 *                     JobTemplateConfigMuxStreamArgs.builder()
 *                         .key("hd")
 *                         .fileName("hd.mp4")
 *                         .container("mp4")
 *                         .elementaryStreams(
 *                             "video-stream1",
 *                             "audio-stream0")
 *                         .build())
 *                 .build())
 *             .labels(Map.of("label", "key"))
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   default:
 *     type: gcp:transcoder:JobTemplate
 *     properties:
 *       jobTemplateId: example-job-template
 *       location: us-central1
 *       config:
 *         inputs:
 *           - key: input0
 *             uri: gs://example/example.mp4
 *         output:
 *           uri: gs://example/outputs/
 *         editLists:
 *           - key: atom0
 *             inputs:
 *               - input0
 *             startTimeOffset: 0s
 *         adBreaks:
 *           - startTimeOffset: 3.500s
 *         overlays:
 *           - animations:
 *               - animationFade:
 *                   fadeType: FADE_IN
 *                   startTimeOffset: 1.500s
 *                   endTimeOffset: 3.500s
 *                   xy:
 *                     x: 1
 *                     y: 0.5
 *             image:
 *               uri: gs://example/overlay.png
 *         elementaryStreams:
 *           - key: video-stream0
 *             videoStream:
 *               h264:
 *                 widthPixels: 640
 *                 heightPixels: 360
 *                 bitrateBps: 550000
 *                 frameRate: 60
 *                 pixelFormat: yuv420p
 *                 rateControlMode: vbr
 *                 crfLevel: 21
 *                 gopDuration: 3s
 *                 vbvSizeBits: 550000
 *                 vbvFullnessBits: 495000
 *                 entropyCoder: cabac
 *                 profile: high
 *                 preset: veryfast
 *           - key: video-stream1
 *             videoStream:
 *               h264:
 *                 widthPixels: 1280
 *                 heightPixels: 720
 *                 bitrateBps: 550000
 *                 frameRate: 60
 *                 pixelFormat: yuv420p
 *                 rateControlMode: vbr
 *                 crfLevel: 21
 *                 gopDuration: 3s
 *                 vbvSizeBits: 2.5e+06
 *                 vbvFullnessBits: 2.25e+06
 *                 entropyCoder: cabac
 *                 profile: high
 *                 preset: veryfast
 *           - key: audio-stream0
 *             audioStream:
 *               codec: aac
 *               bitrateBps: 64000
 *               channelCount: 2
 *               channelLayouts:
 *                 - fl
 *                 - fr
 *               sampleRateHertz: 48000
 *         muxStreams:
 *           - key: sd
 *             fileName: sd.mp4
 *             container: mp4
 *             elementaryStreams:
 *               - video-stream0
 *               - audio-stream0
 *           - key: hd
 *             fileName: hd.mp4
 *             container: mp4
 *             elementaryStreams:
 *               - video-stream1
 *               - audio-stream0
 *       labels:
 *         label: key
 * ```
 * 
 * ### Transcoder Job Template Encryptions
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 * const encryptionKey = new gcp.secretmanager.Secret("encryption_key", {
 *     secretId: "transcoder-encryption-key",
 *     replication: {
 *         auto: {},
 *     },
 * });
 * const encryptionKeySecretVersion = new gcp.secretmanager.SecretVersion("encryption_key", {
 *     secret: encryptionKey.name,
 *     secretData: "4A67F2C1B8E93A4F6D3E7890A1BC23DF",
 * });
 * const _default = new gcp.transcoder.JobTemplate("default", {
 *     jobTemplateId: "example-job-template",
 *     location: "us-central1",
 *     config: {
 *         elementaryStreams: [
 *             {
 *                 key: "es_video",
 *                 videoStream: {
 *                     h264: {
 *                         profile: "main",
 *                         heightPixels: 600,
 *                         widthPixels: 800,
 *                         bitrateBps: 1000000,
 *                         frameRate: 60,
 *                     },
 *                 },
 *             },
 *             {
 *                 key: "es_audio",
 *                 audioStream: {
 *                     codec: "aac",
 *                     channelCount: 2,
 *                     bitrateBps: 160000,
 *                 },
 *             },
 *         ],
 *         encryptions: [
 *             {
 *                 id: "aes-128",
 *                 secretManagerKeySource: {
 *                     secretVersion: encryptionKeySecretVersion.name,
 *                 },
 *                 drmSystems: {
 *                     clearkey: {},
 *                 },
 *                 aes128: {},
 *             },
 *             {
 *                 id: "cenc",
 *                 secretManagerKeySource: {
 *                     secretVersion: encryptionKeySecretVersion.name,
 *                 },
 *                 drmSystems: {
 *                     widevine: {},
 *                 },
 *                 mpegCenc: {
 *                     scheme: "cenc",
 *                 },
 *             },
 *             {
 *                 id: "cbcs",
 *                 secretManagerKeySource: {
 *                     secretVersion: encryptionKeySecretVersion.name,
 *                 },
 *                 drmSystems: {
 *                     widevine: {},
 *                 },
 *                 mpegCenc: {
 *                     scheme: "cbcs",
 *                 },
 *             },
 *         ],
 *         muxStreams: [
 *             {
 *                 key: "ts_aes128",
 *                 container: "ts",
 *                 elementaryStreams: [
 *                     "es_video",
 *                     "es_audio",
 *                 ],
 *                 segmentSettings: {
 *                     segmentDuration: "6s",
 *                 },
 *                 encryptionId: "aes-128",
 *             },
 *             {
 *                 key: "fmp4_cenc_video",
 *                 container: "fmp4",
 *                 elementaryStreams: ["es_video"],
 *                 segmentSettings: {
 *                     segmentDuration: "6s",
 *                 },
 *                 encryptionId: "cenc",
 *             },
 *             {
 *                 key: "fmp4_cenc_audio",
 *                 container: "fmp4",
 *                 elementaryStreams: ["es_audio"],
 *                 segmentSettings: {
 *                     segmentDuration: "6s",
 *                 },
 *                 encryptionId: "cenc",
 *             },
 *             {
 *                 key: "fmp4_cbcs_video",
 *                 container: "fmp4",
 *                 elementaryStreams: ["es_video"],
 *                 segmentSettings: {
 *                     segmentDuration: "6s",
 *                 },
 *                 encryptionId: "cbcs",
 *             },
 *             {
 *                 key: "fmp4_cbcs_audio",
 *                 container: "fmp4",
 *                 elementaryStreams: ["es_audio"],
 *                 segmentSettings: {
 *                     segmentDuration: "6s",
 *                 },
 *                 encryptionId: "cbcs",
 *             },
 *         ],
 *         manifests: [
 *             {
 *                 fileName: "manifest_aes128.m3u8",
 *                 type: "HLS",
 *                 muxStreams: ["ts_aes128"],
 *             },
 *             {
 *                 fileName: "manifest_cenc.mpd",
 *                 type: "DASH",
 *                 muxStreams: [
 *                     "fmp4_cenc_video",
 *                     "fmp4_cenc_audio",
 *                 ],
 *             },
 *             {
 *                 fileName: "manifest_cbcs.mpd",
 *                 type: "DASH",
 *                 muxStreams: [
 *                     "fmp4_cbcs_video",
 *                     "fmp4_cbcs_audio",
 *                 ],
 *             },
 *         ],
 *     },
 *     labels: {
 *         label: "key",
 *     },
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_gcp as gcp
 * encryption_key = gcp.secretmanager.Secret("encryption_key",
 *     secret_id="transcoder-encryption-key",
 *     replication={
 *         "auto": {},
 *     })
 * encryption_key_secret_version = gcp.secretmanager.SecretVersion("encryption_key",
 *     secret=encryption_key.name,
 *     secret_data="4A67F2C1B8E93A4F6D3E7890A1BC23DF")
 * default = gcp.transcoder.JobTemplate("default",
 *     job_template_id="example-job-template",
 *     location="us-central1",
 *     config={
 *         "elementary_streams": [
 *             {
 *                 "key": "es_video",
 *                 "video_stream": {
 *                     "h264": {
 *                         "profile": "main",
 *                         "height_pixels": 600,
 *                         "width_pixels": 800,
 *                         "bitrate_bps": 1000000,
 *                         "frame_rate": 60,
 *                     },
 *                 },
 *             },
 *             {
 *                 "key": "es_audio",
 *                 "audio_stream": {
 *                     "codec": "aac",
 *                     "channel_count": 2,
 *                     "bitrate_bps": 160000,
 *                 },
 *             },
 *         ],
 *         "encryptions": [
 *             {
 *                 "id": "aes-128",
 *                 "secret_manager_key_source": {
 *                     "secret_version": encryption_key_secret_version.name,
 *                 },
 *                 "drm_systems": {
 *                     "clearkey": {},
 *                 },
 *                 "aes128": {},
 *             },
 *             {
 *                 "id": "cenc",
 *                 "secret_manager_key_source": {
 *                     "secret_version": encryption_key_secret_version.name,
 *                 },
 *                 "drm_systems": {
 *                     "widevine": {},
 *                 },
 *                 "mpeg_cenc": {
 *                     "scheme": "cenc",
 *                 },
 *             },
 *             {
 *                 "id": "cbcs",
 *                 "secret_manager_key_source": {
 *                     "secret_version": encryption_key_secret_version.name,
 *                 },
 *                 "drm_systems": {
 *                     "widevine": {},
 *                 },
 *                 "mpeg_cenc": {
 *                     "scheme": "cbcs",
 *                 },
 *             },
 *         ],
 *         "mux_streams": [
 *             {
 *                 "key": "ts_aes128",
 *                 "container": "ts",
 *                 "elementary_streams": [
 *                     "es_video",
 *                     "es_audio",
 *                 ],
 *                 "segment_settings": {
 *                     "segment_duration": "6s",
 *                 },
 *                 "encryption_id": "aes-128",
 *             },
 *             {
 *                 "key": "fmp4_cenc_video",
 *                 "container": "fmp4",
 *                 "elementary_streams": ["es_video"],
 *                 "segment_settings": {
 *                     "segment_duration": "6s",
 *                 },
 *                 "encryption_id": "cenc",
 *             },
 *             {
 *                 "key": "fmp4_cenc_audio",
 *                 "container": "fmp4",
 *                 "elementary_streams": ["es_audio"],
 *                 "segment_settings": {
 *                     "segment_duration": "6s",
 *                 },
 *                 "encryption_id": "cenc",
 *             },
 *             {
 *                 "key": "fmp4_cbcs_video",
 *                 "container": "fmp4",
 *                 "elementary_streams": ["es_video"],
 *                 "segment_settings": {
 *                     "segment_duration": "6s",
 *                 },
 *                 "encryption_id": "cbcs",
 *             },
 *             {
 *                 "key": "fmp4_cbcs_audio",
 *                 "container": "fmp4",
 *                 "elementary_streams": ["es_audio"],
 *                 "segment_settings": {
 *                     "segment_duration": "6s",
 *                 },
 *                 "encryption_id": "cbcs",
 *             },
 *         ],
 *         "manifests": [
 *             {
 *                 "file_name": "manifest_aes128.m3u8",
 *                 "type": "HLS",
 *                 "mux_streams": ["ts_aes128"],
 *             },
 *             {
 *                 "file_name": "manifest_cenc.mpd",
 *                 "type": "DASH",
 *                 "mux_streams": [
 *                     "fmp4_cenc_video",
 *                     "fmp4_cenc_audio",
 *                 ],
 *             },
 *             {
 *                 "file_name": "manifest_cbcs.mpd",
 *                 "type": "DASH",
 *                 "mux_streams": [
 *                     "fmp4_cbcs_video",
 *                     "fmp4_cbcs_audio",
 *                 ],
 *             },
 *         ],
 *     },
 *     labels={
 *         "label": "key",
 *     })
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Gcp = Pulumi.Gcp;
 * return await Deployment.RunAsync(() =>
 * {
 *     var encryptionKey = new Gcp.SecretManager.Secret("encryption_key", new()
 *     {
 *         SecretId = "transcoder-encryption-key",
 *         Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs
 *         {
 *             Auto = null,
 *         },
 *     });
 *     var encryptionKeySecretVersion = new Gcp.SecretManager.SecretVersion("encryption_key", new()
 *     {
 *         Secret = encryptionKey.Name,
 *         SecretData = "4A67F2C1B8E93A4F6D3E7890A1BC23DF",
 *     });
 *     var @default = new Gcp.Transcoder.JobTemplate("default", new()
 *     {
 *         JobTemplateId = "example-job-template",
 *         Location = "us-central1",
 *         Config = new Gcp.Transcoder.Inputs.JobTemplateConfigArgs
 *         {
 *             ElementaryStreams = new[]
 *             {
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamArgs
 *                 {
 *                     Key = "es_video",
 *                     VideoStream = new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamVideoStreamArgs
 *                     {
 *                         H264 = new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamVideoStreamH264Args
 *                         {
 *                             Profile = "main",
 *                             HeightPixels = 600,
 *                             WidthPixels = 800,
 *                             BitrateBps = 1000000,
 *                             FrameRate = 60,
 *                         },
 *                     },
 *                 },
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamArgs
 *                 {
 *                     Key = "es_audio",
 *                     AudioStream = new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamAudioStreamArgs
 *                     {
 *                         Codec = "aac",
 *                         ChannelCount = 2,
 *                         BitrateBps = 160000,
 *                     },
 *                 },
 *             },
 *             Encryptions = new[]
 *             {
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigEncryptionArgs
 *                 {
 *                     Id = "aes-128",
 *                     SecretManagerKeySource = new Gcp.Transcoder.Inputs.JobTemplateConfigEncryptionSecretManagerKeySourceArgs
 *                     {
 *                         SecretVersion = encryptionKeySecretVersion.Name,
 *                     },
 *                     DrmSystems = new Gcp.Transcoder.Inputs.JobTemplateConfigEncryptionDrmSystemsArgs
 *                     {
 *                         Clearkey = null,
 *                     },
 *                     Aes128 = null,
 *                 },
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigEncryptionArgs
 *                 {
 *                     Id = "cenc",
 *                     SecretManagerKeySource = new Gcp.Transcoder.Inputs.JobTemplateConfigEncryptionSecretManagerKeySourceArgs
 *                     {
 *                         SecretVersion = encryptionKeySecretVersion.Name,
 *                     },
 *                     DrmSystems = new Gcp.Transcoder.Inputs.JobTemplateConfigEncryptionDrmSystemsArgs
 *                     {
 *                         Widevine = null,
 *                     },
 *                     MpegCenc = new Gcp.Transcoder.Inputs.JobTemplateConfigEncryptionMpegCencArgs
 *                     {
 *                         Scheme = "cenc",
 *                     },
 *                 },
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigEncryptionArgs
 *                 {
 *                     Id = "cbcs",
 *                     SecretManagerKeySource = new Gcp.Transcoder.Inputs.JobTemplateConfigEncryptionSecretManagerKeySourceArgs
 *                     {
 *                         SecretVersion = encryptionKeySecretVersion.Name,
 *                     },
 *                     DrmSystems = new Gcp.Transcoder.Inputs.JobTemplateConfigEncryptionDrmSystemsArgs
 *                     {
 *                         Widevine = null,
 *                     },
 *                     MpegCenc = new Gcp.Transcoder.Inputs.JobTemplateConfigEncryptionMpegCencArgs
 *                     {
 *                         Scheme = "cbcs",
 *                     },
 *                 },
 *             },
 *             MuxStreams = new[]
 *             {
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigMuxStreamArgs
 *                 {
 *                     Key = "ts_aes128",
 *                     Container = "ts",
 *                     ElementaryStreams = new[]
 *                     {
 *                         "es_video",
 *                         "es_audio",
 *                     },
 *                     SegmentSettings = new Gcp.Transcoder.Inputs.JobTemplateConfigMuxStreamSegmentSettingsArgs
 *                     {
 *                         SegmentDuration = "6s",
 *                     },
 *                     EncryptionId = "aes-128",
 *                 },
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigMuxStreamArgs
 *                 {
 *                     Key = "fmp4_cenc_video",
 *                     Container = "fmp4",
 *                     ElementaryStreams = new[]
 *                     {
 *                         "es_video",
 *                     },
 *                     SegmentSettings = new Gcp.Transcoder.Inputs.JobTemplateConfigMuxStreamSegmentSettingsArgs
 *                     {
 *                         SegmentDuration = "6s",
 *                     },
 *                     EncryptionId = "cenc",
 *                 },
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigMuxStreamArgs
 *                 {
 *                     Key = "fmp4_cenc_audio",
 *                     Container = "fmp4",
 *                     ElementaryStreams = new[]
 *                     {
 *                         "es_audio",
 *                     },
 *                     SegmentSettings = new Gcp.Transcoder.Inputs.JobTemplateConfigMuxStreamSegmentSettingsArgs
 *                     {
 *                         SegmentDuration = "6s",
 *                     },
 *                     EncryptionId = "cenc",
 *                 },
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigMuxStreamArgs
 *                 {
 *                     Key = "fmp4_cbcs_video",
 *                     Container = "fmp4",
 *                     ElementaryStreams = new[]
 *                     {
 *                         "es_video",
 *                     },
 *                     SegmentSettings = new Gcp.Transcoder.Inputs.JobTemplateConfigMuxStreamSegmentSettingsArgs
 *                     {
 *                         SegmentDuration = "6s",
 *                     },
 *                     EncryptionId = "cbcs",
 *                 },
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigMuxStreamArgs
 *                 {
 *                     Key = "fmp4_cbcs_audio",
 *                     Container = "fmp4",
 *                     ElementaryStreams = new[]
 *                     {
 *                         "es_audio",
 *                     },
 *                     SegmentSettings = new Gcp.Transcoder.Inputs.JobTemplateConfigMuxStreamSegmentSettingsArgs
 *                     {
 *                         SegmentDuration = "6s",
 *                     },
 *                     EncryptionId = "cbcs",
 *                 },
 *             },
 *             Manifests = new[]
 *             {
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigManifestArgs
 *                 {
 *                     FileName = "manifest_aes128.m3u8",
 *                     Type = "HLS",
 *                     MuxStreams = new[]
 *                     {
 *                         "ts_aes128",
 *                     },
 *                 },
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigManifestArgs
 *                 {
 *                     FileName = "manifest_cenc.mpd",
 *                     Type = "DASH",
 *                     MuxStreams = new[]
 *                     {
 *                         "fmp4_cenc_video",
 *                         "fmp4_cenc_audio",
 *                     },
 *                 },
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigManifestArgs
 *                 {
 *                     FileName = "manifest_cbcs.mpd",
 *                     Type = "DASH",
 *                     MuxStreams = new[]
 *                     {
 *                         "fmp4_cbcs_video",
 *                         "fmp4_cbcs_audio",
 *                     },
 *                 },
 *             },
 *         },
 *         Labels =
 *         {
 *             { "label", "key" },
 *         },
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager"
 * 	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/transcoder"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		encryptionKey, err := secretmanager.NewSecret(ctx, "encryption_key", &secretmanager.SecretArgs{
 * 			SecretId: pulumi.String("transcoder-encryption-key"),
 * 			Replication: &secretmanager.SecretReplicationArgs{
 * 				Auto: &secretmanager.SecretReplicationAutoArgs{},
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		encryptionKeySecretVersion, err := secretmanager.NewSecretVersion(ctx, "encryption_key", &secretmanager.SecretVersionArgs{
 * 			Secret:     encryptionKey.Name,
 * 			SecretData: pulumi.String("4A67F2C1B8E93A4F6D3E7890A1BC23DF"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = transcoder.NewJobTemplate(ctx, "default", &transcoder.JobTemplateArgs{
 * 			JobTemplateId: pulumi.String("example-job-template"),
 * 			Location:      pulumi.String("us-central1"),
 * 			Config: &transcoder.JobTemplateConfigArgs{
 * 				ElementaryStreams: transcoder.JobTemplateConfigElementaryStreamArray{
 * 					&transcoder.JobTemplateConfigElementaryStreamArgs{
 * 						Key: pulumi.String("es_video"),
 * 						VideoStream: &transcoder.JobTemplateConfigElementaryStreamVideoStreamArgs{
 * 							H264: &transcoder.JobTemplateConfigElementaryStreamVideoStreamH264Args{
 * 								Profile:      pulumi.String("main"),
 * 								HeightPixels: pulumi.Int(600),
 * 								WidthPixels:  pulumi.Int(800),
 * 								BitrateBps:   pulumi.Int(1000000),
 * 								FrameRate:    pulumi.Int(60),
 * 							},
 * 						},
 * 					},
 * 					&transcoder.JobTemplateConfigElementaryStreamArgs{
 * 						Key: pulumi.String("es_audio"),
 * 						AudioStream: &transcoder.JobTemplateConfigElementaryStreamAudioStreamArgs{
 * 							Codec:        pulumi.String("aac"),
 * 							ChannelCount: pulumi.Int(2),
 * 							BitrateBps:   pulumi.Int(160000),
 * 						},
 * 					},
 * 				},
 * 				Encryptions: transcoder.JobTemplateConfigEncryptionArray{
 * 					&transcoder.JobTemplateConfigEncryptionArgs{
 * 						Id: pulumi.String("aes-128"),
 * 						SecretManagerKeySource: &transcoder.JobTemplateConfigEncryptionSecretManagerKeySourceArgs{
 * 							SecretVersion: encryptionKeySecretVersion.Name,
 * 						},
 * 						DrmSystems: &transcoder.JobTemplateConfigEncryptionDrmSystemsArgs{
 * 							Clearkey: &transcoder.JobTemplateConfigEncryptionDrmSystemsClearkeyArgs{},
 * 						},
 * 						Aes128: &transcoder.JobTemplateConfigEncryptionAes128Args{},
 * 					},
 * 					&transcoder.JobTemplateConfigEncryptionArgs{
 * 						Id: pulumi.String("cenc"),
 * 						SecretManagerKeySource: &transcoder.JobTemplateConfigEncryptionSecretManagerKeySourceArgs{
 * 							SecretVersion: encryptionKeySecretVersion.Name,
 * 						},
 * 						DrmSystems: &transcoder.JobTemplateConfigEncryptionDrmSystemsArgs{
 * 							Widevine: &transcoder.JobTemplateConfigEncryptionDrmSystemsWidevineArgs{},
 * 						},
 * 						MpegCenc: &transcoder.JobTemplateConfigEncryptionMpegCencArgs{
 * 							Scheme: pulumi.String("cenc"),
 * 						},
 * 					},
 * 					&transcoder.JobTemplateConfigEncryptionArgs{
 * 						Id: pulumi.String("cbcs"),
 * 						SecretManagerKeySource: &transcoder.JobTemplateConfigEncryptionSecretManagerKeySourceArgs{
 * 							SecretVersion: encryptionKeySecretVersion.Name,
 * 						},
 * 						DrmSystems: &transcoder.JobTemplateConfigEncryptionDrmSystemsArgs{
 * 							Widevine: &transcoder.JobTemplateConfigEncryptionDrmSystemsWidevineArgs{},
 * 						},
 * 						MpegCenc: &transcoder.JobTemplateConfigEncryptionMpegCencArgs{
 * 							Scheme: pulumi.String("cbcs"),
 * 						},
 * 					},
 * 				},
 * 				MuxStreams: transcoder.JobTemplateConfigMuxStreamArray{
 * 					&transcoder.JobTemplateConfigMuxStreamArgs{
 * 						Key:       pulumi.String("ts_aes128"),
 * 						Container: pulumi.String("ts"),
 * 						ElementaryStreams: pulumi.StringArray{
 * 							pulumi.String("es_video"),
 * 							pulumi.String("es_audio"),
 * 						},
 * 						SegmentSettings: &transcoder.JobTemplateConfigMuxStreamSegmentSettingsArgs{
 * 							SegmentDuration: pulumi.String("6s"),
 * 						},
 * 						EncryptionId: pulumi.String("aes-128"),
 * 					},
 * 					&transcoder.JobTemplateConfigMuxStreamArgs{
 * 						Key:       pulumi.String("fmp4_cenc_video"),
 * 						Container: pulumi.String("fmp4"),
 * 						ElementaryStreams: pulumi.StringArray{
 * 							pulumi.String("es_video"),
 * 						},
 * 						SegmentSettings: &transcoder.JobTemplateConfigMuxStreamSegmentSettingsArgs{
 * 							SegmentDuration: pulumi.String("6s"),
 * 						},
 * 						EncryptionId: pulumi.String("cenc"),
 * 					},
 * 					&transcoder.JobTemplateConfigMuxStreamArgs{
 * 						Key:       pulumi.String("fmp4_cenc_audio"),
 * 						Container: pulumi.String("fmp4"),
 * 						ElementaryStreams: pulumi.StringArray{
 * 							pulumi.String("es_audio"),
 * 						},
 * 						SegmentSettings: &transcoder.JobTemplateConfigMuxStreamSegmentSettingsArgs{
 * 							SegmentDuration: pulumi.String("6s"),
 * 						},
 * 						EncryptionId: pulumi.String("cenc"),
 * 					},
 * 					&transcoder.JobTemplateConfigMuxStreamArgs{
 * 						Key:       pulumi.String("fmp4_cbcs_video"),
 * 						Container: pulumi.String("fmp4"),
 * 						ElementaryStreams: pulumi.StringArray{
 * 							pulumi.String("es_video"),
 * 						},
 * 						SegmentSettings: &transcoder.JobTemplateConfigMuxStreamSegmentSettingsArgs{
 * 							SegmentDuration: pulumi.String("6s"),
 * 						},
 * 						EncryptionId: pulumi.String("cbcs"),
 * 					},
 * 					&transcoder.JobTemplateConfigMuxStreamArgs{
 * 						Key:       pulumi.String("fmp4_cbcs_audio"),
 * 						Container: pulumi.String("fmp4"),
 * 						ElementaryStreams: pulumi.StringArray{
 * 							pulumi.String("es_audio"),
 * 						},
 * 						SegmentSettings: &transcoder.JobTemplateConfigMuxStreamSegmentSettingsArgs{
 * 							SegmentDuration: pulumi.String("6s"),
 * 						},
 * 						EncryptionId: pulumi.String("cbcs"),
 * 					},
 * 				},
 * 				Manifests: transcoder.JobTemplateConfigManifestArray{
 * 					&transcoder.JobTemplateConfigManifestArgs{
 * 						FileName: pulumi.String("manifest_aes128.m3u8"),
 * 						Type:     pulumi.String("HLS"),
 * 						MuxStreams: pulumi.StringArray{
 * 							pulumi.String("ts_aes128"),
 * 						},
 * 					},
 * 					&transcoder.JobTemplateConfigManifestArgs{
 * 						FileName: pulumi.String("manifest_cenc.mpd"),
 * 						Type:     pulumi.String("DASH"),
 * 						MuxStreams: pulumi.StringArray{
 * 							pulumi.String("fmp4_cenc_video"),
 * 							pulumi.String("fmp4_cenc_audio"),
 * 						},
 * 					},
 * 					&transcoder.JobTemplateConfigManifestArgs{
 * 						FileName: pulumi.String("manifest_cbcs.mpd"),
 * 						Type:     pulumi.String("DASH"),
 * 						MuxStreams: pulumi.StringArray{
 * 							pulumi.String("fmp4_cbcs_video"),
 * 							pulumi.String("fmp4_cbcs_audio"),
 * 						},
 * 					},
 * 				},
 * 			},
 * 			Labels: pulumi.StringMap{
 * 				"label": pulumi.String("key"),
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.gcp.secretmanager.Secret;
 * import com.pulumi.gcp.secretmanager.SecretArgs;
 * import com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;
 * import com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;
 * import com.pulumi.gcp.secretmanager.SecretVersion;
 * import com.pulumi.gcp.secretmanager.SecretVersionArgs;
 * import com.pulumi.gcp.transcoder.JobTemplate;
 * import com.pulumi.gcp.transcoder.JobTemplateArgs;
 * import com.pulumi.gcp.transcoder.inputs.JobTemplateConfigArgs;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         var encryptionKey = new Secret("encryptionKey", SecretArgs.builder()
 *             .secretId("transcoder-encryption-key")
 *             .replication(SecretReplicationArgs.builder()
 *                 .auto()
 *                 .build())
 *             .build());
 *         var encryptionKeySecretVersion = new SecretVersion("encryptionKeySecretVersion", SecretVersionArgs.builder()
 *             .secret(encryptionKey.name())
 *             .secretData("4A67F2C1B8E93A4F6D3E7890A1BC23DF")
 *             .build());
 *         var default_ = new JobTemplate("default", JobTemplateArgs.builder()
 *             .jobTemplateId("example-job-template")
 *             .location("us-central1")
 *             .config(JobTemplateConfigArgs.builder()
 *                 .elementaryStreams(
 *                     JobTemplateConfigElementaryStreamArgs.builder()
 *                         .key("es_video")
 *                         .videoStream(JobTemplateConfigElementaryStreamVideoStreamArgs.builder()
 *                             .h264(JobTemplateConfigElementaryStreamVideoStreamH264Args.builder()
 *                                 .profile("main")
 *                                 .heightPixels(600)
 *                                 .widthPixels(800)
 *                                 .bitrateBps(1000000)
 *                                 .frameRate(60)
 *                                 .build())
 *                             .build())
 *                         .build(),
 *                     JobTemplateConfigElementaryStreamArgs.builder()
 *                         .key("es_audio")
 *                         .audioStream(JobTemplateConfigElementaryStreamAudioStreamArgs.builder()
 *                             .codec("aac")
 *                             .channelCount(2)
 *                             .bitrateBps(160000)
 *                             .build())
 *                         .build())
 *                 .encryptions(
 *                     JobTemplateConfigEncryptionArgs.builder()
 *                         .id("aes-128")
 *                         .secretManagerKeySource(JobTemplateConfigEncryptionSecretManagerKeySourceArgs.builder()
 *                             .secretVersion(encryptionKeySecretVersion.name())
 *                             .build())
 *                         .drmSystems(JobTemplateConfigEncryptionDrmSystemsArgs.builder()
 *                             .clearkey()
 *                             .build())
 *                         .aes128()
 *                         .build(),
 *                     JobTemplateConfigEncryptionArgs.builder()
 *                         .id("cenc")
 *                         .secretManagerKeySource(JobTemplateConfigEncryptionSecretManagerKeySourceArgs.builder()
 *                             .secretVersion(encryptionKeySecretVersion.name())
 *                             .build())
 *                         .drmSystems(JobTemplateConfigEncryptionDrmSystemsArgs.builder()
 *                             .widevine()
 *                             .build())
 *                         .mpegCenc(JobTemplateConfigEncryptionMpegCencArgs.builder()
 *                             .scheme("cenc")
 *                             .build())
 *                         .build(),
 *                     JobTemplateConfigEncryptionArgs.builder()
 *                         .id("cbcs")
 *                         .secretManagerKeySource(JobTemplateConfigEncryptionSecretManagerKeySourceArgs.builder()
 *                             .secretVersion(encryptionKeySecretVersion.name())
 *                             .build())
 *                         .drmSystems(JobTemplateConfigEncryptionDrmSystemsArgs.builder()
 *                             .widevine()
 *                             .build())
 *                         .mpegCenc(JobTemplateConfigEncryptionMpegCencArgs.builder()
 *                             .scheme("cbcs")
 *                             .build())
 *                         .build())
 *                 .muxStreams(
 *                     JobTemplateConfigMuxStreamArgs.builder()
 *                         .key("ts_aes128")
 *                         .container("ts")
 *                         .elementaryStreams(
 *                             "es_video",
 *                             "es_audio")
 *                         .segmentSettings(JobTemplateConfigMuxStreamSegmentSettingsArgs.builder()
 *                             .segmentDuration("6s")
 *                             .build())
 *                         .encryptionId("aes-128")
 *                         .build(),
 *                     JobTemplateConfigMuxStreamArgs.builder()
 *                         .key("fmp4_cenc_video")
 *                         .container("fmp4")
 *                         .elementaryStreams("es_video")
 *                         .segmentSettings(JobTemplateConfigMuxStreamSegmentSettingsArgs.builder()
 *                             .segmentDuration("6s")
 *                             .build())
 *                         .encryptionId("cenc")
 *                         .build(),
 *                     JobTemplateConfigMuxStreamArgs.builder()
 *                         .key("fmp4_cenc_audio")
 *                         .container("fmp4")
 *                         .elementaryStreams("es_audio")
 *                         .segmentSettings(JobTemplateConfigMuxStreamSegmentSettingsArgs.builder()
 *                             .segmentDuration("6s")
 *                             .build())
 *                         .encryptionId("cenc")
 *                         .build(),
 *                     JobTemplateConfigMuxStreamArgs.builder()
 *                         .key("fmp4_cbcs_video")
 *                         .container("fmp4")
 *                         .elementaryStreams("es_video")
 *                         .segmentSettings(JobTemplateConfigMuxStreamSegmentSettingsArgs.builder()
 *                             .segmentDuration("6s")
 *                             .build())
 *                         .encryptionId("cbcs")
 *                         .build(),
 *                     JobTemplateConfigMuxStreamArgs.builder()
 *                         .key("fmp4_cbcs_audio")
 *                         .container("fmp4")
 *                         .elementaryStreams("es_audio")
 *                         .segmentSettings(JobTemplateConfigMuxStreamSegmentSettingsArgs.builder()
 *                             .segmentDuration("6s")
 *                             .build())
 *                         .encryptionId("cbcs")
 *                         .build())
 *                 .manifests(
 *                     JobTemplateConfigManifestArgs.builder()
 *                         .fileName("manifest_aes128.m3u8")
 *                         .type("HLS")
 *                         .muxStreams("ts_aes128")
 *                         .build(),
 *                     JobTemplateConfigManifestArgs.builder()
 *                         .fileName("manifest_cenc.mpd")
 *                         .type("DASH")
 *                         .muxStreams(
 *                             "fmp4_cenc_video",
 *                             "fmp4_cenc_audio")
 *                         .build(),
 *                     JobTemplateConfigManifestArgs.builder()
 *                         .fileName("manifest_cbcs.mpd")
 *                         .type("DASH")
 *                         .muxStreams(
 *                             "fmp4_cbcs_video",
 *                             "fmp4_cbcs_audio")
 *                         .build())
 *                 .build())
 *             .labels(Map.of("label", "key"))
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   encryptionKey:
 *     type: gcp:secretmanager:Secret
 *     name: encryption_key
 *     properties:
 *       secretId: transcoder-encryption-key
 *       replication:
 *         auto: {}
 *   encryptionKeySecretVersion:
 *     type: gcp:secretmanager:SecretVersion
 *     name: encryption_key
 *     properties:
 *       secret: ${encryptionKey.name}
 *       secretData: 4A67F2C1B8E93A4F6D3E7890A1BC23DF
 *   default:
 *     type: gcp:transcoder:JobTemplate
 *     properties:
 *       jobTemplateId: example-job-template
 *       location: us-central1
 *       config:
 *         elementaryStreams:
 *           - key: es_video
 *             videoStream:
 *               h264:
 *                 profile: main
 *                 heightPixels: 600
 *                 widthPixels: 800
 *                 bitrateBps: 1e+06
 *                 frameRate: 60
 *           - key: es_audio
 *             audioStream:
 *               codec: aac
 *               channelCount: 2
 *               bitrateBps: 160000
 *         encryptions:
 *           - id: aes-128
 *             secretManagerKeySource:
 *               secretVersion: ${encryptionKeySecretVersion.name}
 *             drmSystems:
 *               clearkey: {}
 *             aes128: {}
 *           - id: cenc
 *             secretManagerKeySource:
 *               secretVersion: ${encryptionKeySecretVersion.name}
 *             drmSystems:
 *               widevine: {}
 *             mpegCenc:
 *               scheme: cenc
 *           - id: cbcs
 *             secretManagerKeySource:
 *               secretVersion: ${encryptionKeySecretVersion.name}
 *             drmSystems:
 *               widevine: {}
 *             mpegCenc:
 *               scheme: cbcs
 *         muxStreams:
 *           - key: ts_aes128
 *             container: ts
 *             elementaryStreams:
 *               - es_video
 *               - es_audio
 *             segmentSettings:
 *               segmentDuration: 6s
 *             encryptionId: aes-128
 *           - key: fmp4_cenc_video
 *             container: fmp4
 *             elementaryStreams:
 *               - es_video
 *             segmentSettings:
 *               segmentDuration: 6s
 *             encryptionId: cenc
 *           - key: fmp4_cenc_audio
 *             container: fmp4
 *             elementaryStreams:
 *               - es_audio
 *             segmentSettings:
 *               segmentDuration: 6s
 *             encryptionId: cenc
 *           - key: fmp4_cbcs_video
 *             container: fmp4
 *             elementaryStreams:
 *               - es_video
 *             segmentSettings:
 *               segmentDuration: 6s
 *             encryptionId: cbcs
 *           - key: fmp4_cbcs_audio
 *             container: fmp4
 *             elementaryStreams:
 *               - es_audio
 *             segmentSettings:
 *               segmentDuration: 6s
 *             encryptionId: cbcs
 *         manifests:
 *           - fileName: manifest_aes128.m3u8
 *             type: HLS
 *             muxStreams:
 *               - ts_aes128
 *           - fileName: manifest_cenc.mpd
 *             type: DASH
 *             muxStreams:
 *               - fmp4_cenc_video
 *               - fmp4_cenc_audio
 *           - fileName: manifest_cbcs.mpd
 *             type: DASH
 *             muxStreams:
 *               - fmp4_cbcs_video
 *               - fmp4_cbcs_audio
 *       labels:
 *         label: key
 * ```
 * 
 * ### Transcoder Job Template Pubsub
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 * const transcoderNotifications = new gcp.pubsub.Topic("transcoder_notifications", {name: "transcoder-notifications"});
 * const _default = new gcp.transcoder.JobTemplate("default", {
 *     jobTemplateId: "example-job-template",
 *     location: "us-central1",
 *     config: {
 *         inputs: [{
 *             key: "input0",
 *             uri: "gs://example/example.mp4",
 *         }],
 *         output: {
 *             uri: "gs://example/outputs/",
 *         },
 *         editLists: [{
 *             key: "atom0",
 *             inputs: ["input0"],
 *             startTimeOffset: "0s",
 *         }],
 *         adBreaks: [{
 *             startTimeOffset: "3.500s",
 *         }],
 *         elementaryStreams: [
 *             {
 *                 key: "video-stream0",
 *                 videoStream: {
 *                     h264: {
 *                         widthPixels: 640,
 *                         heightPixels: 360,
 *                         bitrateBps: 550000,
 *                         frameRate: 60,
 *                         pixelFormat: "yuv420p",
 *                         rateControlMode: "vbr",
 *                         crfLevel: 21,
 *                         gopDuration: "3s",
 *                         vbvSizeBits: 550000,
 *                         vbvFullnessBits: 495000,
 *                         entropyCoder: "cabac",
 *                         profile: "high",
 *                         preset: "veryfast",
 *                     },
 *                 },
 *             },
 *             {
 *                 key: "video-stream1",
 *                 videoStream: {
 *                     h264: {
 *                         widthPixels: 1280,
 *                         heightPixels: 720,
 *                         bitrateBps: 550000,
 *                         frameRate: 60,
 *                         pixelFormat: "yuv420p",
 *                         rateControlMode: "vbr",
 *                         crfLevel: 21,
 *                         gopDuration: "3s",
 *                         vbvSizeBits: 2500000,
 *                         vbvFullnessBits: 2250000,
 *                         entropyCoder: "cabac",
 *                         profile: "high",
 *                         preset: "veryfast",
 *                     },
 *                 },
 *             },
 *             {
 *                 key: "audio-stream0",
 *                 audioStream: {
 *                     codec: "aac",
 *                     bitrateBps: 64000,
 *                     channelCount: 2,
 *                     channelLayouts: [
 *                         "fl",
 *                         "fr",
 *                     ],
 *                     sampleRateHertz: 48000,
 *                 },
 *             },
 *         ],
 *         muxStreams: [
 *             {
 *                 key: "sd",
 *                 fileName: "sd.mp4",
 *                 container: "mp4",
 *                 elementaryStreams: [
 *                     "video-stream0",
 *                     "audio-stream0",
 *                 ],
 *             },
 *             {
 *                 key: "hd",
 *                 fileName: "hd.mp4",
 *                 container: "mp4",
 *                 elementaryStreams: [
 *                     "video-stream1",
 *                     "audio-stream0",
 *                 ],
 *             },
 *         ],
 *         pubsubDestination: {
 *             topic: transcoderNotifications.id,
 *         },
 *     },
 *     labels: {
 *         label: "key",
 *     },
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_gcp as gcp
 * transcoder_notifications = gcp.pubsub.Topic("transcoder_notifications", name="transcoder-notifications")
 * default = gcp.transcoder.JobTemplate("default",
 *     job_template_id="example-job-template",
 *     location="us-central1",
 *     config={
 *         "inputs": [{
 *             "key": "input0",
 *             "uri": "gs://example/example.mp4",
 *         }],
 *         "output": {
 *             "uri": "gs://example/outputs/",
 *         },
 *         "edit_lists": [{
 *             "key": "atom0",
 *             "inputs": ["input0"],
 *             "start_time_offset": "0s",
 *         }],
 *         "ad_breaks": [{
 *             "start_time_offset": "3.500s",
 *         }],
 *         "elementary_streams": [
 *             {
 *                 "key": "video-stream0",
 *                 "video_stream": {
 *                     "h264": {
 *                         "width_pixels": 640,
 *                         "height_pixels": 360,
 *                         "bitrate_bps": 550000,
 *                         "frame_rate": 60,
 *                         "pixel_format": "yuv420p",
 *                         "rate_control_mode": "vbr",
 *                         "crf_level": 21,
 *                         "gop_duration": "3s",
 *                         "vbv_size_bits": 550000,
 *                         "vbv_fullness_bits": 495000,
 *                         "entropy_coder": "cabac",
 *                         "profile": "high",
 *                         "preset": "veryfast",
 *                     },
 *                 },
 *             },
 *             {
 *                 "key": "video-stream1",
 *                 "video_stream": {
 *                     "h264": {
 *                         "width_pixels": 1280,
 *                         "height_pixels": 720,
 *                         "bitrate_bps": 550000,
 *                         "frame_rate": 60,
 *                         "pixel_format": "yuv420p",
 *                         "rate_control_mode": "vbr",
 *                         "crf_level": 21,
 *                         "gop_duration": "3s",
 *                         "vbv_size_bits": 2500000,
 *                         "vbv_fullness_bits": 2250000,
 *                         "entropy_coder": "cabac",
 *                         "profile": "high",
 *                         "preset": "veryfast",
 *                     },
 *                 },
 *             },
 *             {
 *                 "key": "audio-stream0",
 *                 "audio_stream": {
 *                     "codec": "aac",
 *                     "bitrate_bps": 64000,
 *                     "channel_count": 2,
 *                     "channel_layouts": [
 *                         "fl",
 *                         "fr",
 *                     ],
 *                     "sample_rate_hertz": 48000,
 *                 },
 *             },
 *         ],
 *         "mux_streams": [
 *             {
 *                 "key": "sd",
 *                 "file_name": "sd.mp4",
 *                 "container": "mp4",
 *                 "elementary_streams": [
 *                     "video-stream0",
 *                     "audio-stream0",
 *                 ],
 *             },
 *             {
 *                 "key": "hd",
 *                 "file_name": "hd.mp4",
 *                 "container": "mp4",
 *                 "elementary_streams": [
 *                     "video-stream1",
 *                     "audio-stream0",
 *                 ],
 *             },
 *         ],
 *         "pubsub_destination": {
 *             "topic": transcoder_notifications.id,
 *         },
 *     },
 *     labels={
 *         "label": "key",
 *     })
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Gcp = Pulumi.Gcp;
 * return await Deployment.RunAsync(() =>
 * {
 *     var transcoderNotifications = new Gcp.PubSub.Topic("transcoder_notifications", new()
 *     {
 *         Name = "transcoder-notifications",
 *     });
 *     var @default = new Gcp.Transcoder.JobTemplate("default", new()
 *     {
 *         JobTemplateId = "example-job-template",
 *         Location = "us-central1",
 *         Config = new Gcp.Transcoder.Inputs.JobTemplateConfigArgs
 *         {
 *             Inputs = new[]
 *             {
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigInputArgs
 *                 {
 *                     Key = "input0",
 *                     Uri = "gs://example/example.mp4",
 *                 },
 *             },
 *             Output = new Gcp.Transcoder.Inputs.JobTemplateConfigOutputArgs
 *             {
 *                 Uri = "gs://example/outputs/",
 *             },
 *             EditLists = new[]
 *             {
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigEditListArgs
 *                 {
 *                     Key = "atom0",
 *                     Inputs = new[]
 *                     {
 *                         "input0",
 *                     },
 *                     StartTimeOffset = "0s",
 *                 },
 *             },
 *             AdBreaks = new[]
 *             {
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigAdBreakArgs
 *                 {
 *                     StartTimeOffset = "3.500s",
 *                 },
 *             },
 *             ElementaryStreams = new[]
 *             {
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamArgs
 *                 {
 *                     Key = "video-stream0",
 *                     VideoStream = new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamVideoStreamArgs
 *                     {
 *                         H264 = new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamVideoStreamH264Args
 *                         {
 *                             WidthPixels = 640,
 *                             HeightPixels = 360,
 *                             BitrateBps = 550000,
 *                             FrameRate = 60,
 *                             PixelFormat = "yuv420p",
 *                             RateControlMode = "vbr",
 *                             CrfLevel = 21,
 *                             GopDuration = "3s",
 *                             VbvSizeBits = 550000,
 *                             VbvFullnessBits = 495000,
 *                             EntropyCoder = "cabac",
 *                             Profile = "high",
 *                             Preset = "veryfast",
 *                         },
 *                     },
 *                 },
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamArgs
 *                 {
 *                     Key = "video-stream1",
 *                     VideoStream = new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamVideoStreamArgs
 *                     {
 *                         H264 = new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamVideoStreamH264Args
 *                         {
 *                             WidthPixels = 1280,
 *                             HeightPixels = 720,
 *                             BitrateBps = 550000,
 *                             FrameRate = 60,
 *                             PixelFormat = "yuv420p",
 *                             RateControlMode = "vbr",
 *                             CrfLevel = 21,
 *                             GopDuration = "3s",
 *                             VbvSizeBits = 2500000,
 *                             VbvFullnessBits = 2250000,
 *                             EntropyCoder = "cabac",
 *                             Profile = "high",
 *                             Preset = "veryfast",
 *                         },
 *                     },
 *                 },
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamArgs
 *                 {
 *                     Key = "audio-stream0",
 *                     AudioStream = new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamAudioStreamArgs
 *                     {
 *                         Codec = "aac",
 *                         BitrateBps = 64000,
 *                         ChannelCount = 2,
 *                         ChannelLayouts = new[]
 *                         {
 *                             "fl",
 *                             "fr",
 *                         },
 *                         SampleRateHertz = 48000,
 *                     },
 *                 },
 *             },
 *             MuxStreams = new[]
 *             {
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigMuxStreamArgs
 *                 {
 *                     Key = "sd",
 *                     FileName = "sd.mp4",
 *                     Container = "mp4",
 *                     ElementaryStreams = new[]
 *                     {
 *                         "video-stream0",
 *                         "audio-stream0",
 *                     },
 *                 },
 *                 new Gcp.Transcoder.Inputs.JobTemplateConfigMuxStreamArgs
 *                 {
 *                     Key = "hd",
 *                     FileName = "hd.mp4",
 *                     Container = "mp4",
 *                     ElementaryStreams = new[]
 *                     {
 *                         "video-stream1",
 *                         "audio-stream0",
 *                     },
 *                 },
 *             },
 *             PubsubDestination = new Gcp.Transcoder.Inputs.JobTemplateConfigPubsubDestinationArgs
 *             {
 *                 Topic = transcoderNotifications.Id,
 *             },
 *         },
 *         Labels =
 *         {
 *             { "label", "key" },
 *         },
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub"
 * 	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/transcoder"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		transcoderNotifications, err := pubsub.NewTopic(ctx, "transcoder_notifications", &pubsub.TopicArgs{
 * 			Name: pulumi.String("transcoder-notifications"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = transcoder.NewJobTemplate(ctx, "default", &transcoder.JobTemplateArgs{
 * 			JobTemplateId: pulumi.String("example-job-template"),
 * 			Location:      pulumi.String("us-central1"),
 * 			Config: &transcoder.JobTemplateConfigArgs{
 * 				Inputs: transcoder.JobTemplateConfigInputTypeArray{
 * 					&transcoder.JobTemplateConfigInputTypeArgs{
 * 						Key: pulumi.String("input0"),
 * 						Uri: pulumi.String("gs://example/example.mp4"),
 * 					},
 * 				},
 * 				Output: &transcoder.JobTemplateConfigOutputTypeArgs{
 * 					Uri: pulumi.String("gs://example/outputs/"),
 * 				},
 * 				EditLists: transcoder.JobTemplateConfigEditListArray{
 * 					&transcoder.JobTemplateConfigEditListArgs{
 * 						Key: pulumi.String("atom0"),
 * 						Inputs: pulumi.StringArray{
 * 							pulumi.String("input0"),
 * 						},
 * 						StartTimeOffset: pulumi.String("0s"),
 * 					},
 * 				},
 * 				AdBreaks: transcoder.JobTemplateConfigAdBreakArray{
 * 					&transcoder.JobTemplateConfigAdBreakArgs{
 * 						StartTimeOffset: pulumi.String("3.500s"),
 * 					},
 * 				},
 * 				ElementaryStreams: transcoder.JobTemplateConfigElementaryStreamArray{
 * 					&transcoder.JobTemplateConfigElementaryStreamArgs{
 * 						Key: pulumi.String("video-stream0"),
 * 						VideoStream: &transcoder.JobTemplateConfigElementaryStreamVideoStreamArgs{
 * 							H264: &transcoder.JobTemplateConfigElementaryStreamVideoStreamH264Args{
 * 								WidthPixels:     pulumi.Int(640),
 * 								HeightPixels:    pulumi.Int(360),
 * 								BitrateBps:      pulumi.Int(550000),
 * 								FrameRate:       pulumi.Int(60),
 * 								PixelFormat:     pulumi.String("yuv420p"),
 * 								RateControlMode: pulumi.String("vbr"),
 * 								CrfLevel:        pulumi.Int(21),
 * 								GopDuration:     pulumi.String("3s"),
 * 								VbvSizeBits:     pulumi.Int(550000),
 * 								VbvFullnessBits: pulumi.Int(495000),
 * 								EntropyCoder:    pulumi.String("cabac"),
 * 								Profile:         pulumi.String("high"),
 * 								Preset:          pulumi.String("veryfast"),
 * 							},
 * 						},
 * 					},
 * 					&transcoder.JobTemplateConfigElementaryStreamArgs{
 * 						Key: pulumi.String("video-stream1"),
 * 						VideoStream: &transcoder.JobTemplateConfigElementaryStreamVideoStreamArgs{
 * 							H264: &transcoder.JobTemplateConfigElementaryStreamVideoStreamH264Args{
 * 								WidthPixels:     pulumi.Int(1280),
 * 								HeightPixels:    pulumi.Int(720),
 * 								BitrateBps:      pulumi.Int(550000),
 * 								FrameRate:       pulumi.Int(60),
 * 								PixelFormat:     pulumi.String("yuv420p"),
 * 								RateControlMode: pulumi.String("vbr"),
 * 								CrfLevel:        pulumi.Int(21),
 * 								GopDuration:     pulumi.String("3s"),
 * 								VbvSizeBits:     pulumi.Int(2500000),
 * 								VbvFullnessBits: pulumi.Int(2250000),
 * 								EntropyCoder:    pulumi.String("cabac"),
 * 								Profile:         pulumi.String("high"),
 * 								Preset:          pulumi.String("veryfast"),
 * 							},
 * 						},
 * 					},
 * 					&transcoder.JobTemplateConfigElementaryStreamArgs{
 * 						Key: pulumi.String("audio-stream0"),
 * 						AudioStream: &transcoder.JobTemplateConfigElementaryStreamAudioStreamArgs{
 * 							Codec:        pulumi.String("aac"),
 * 							BitrateBps:   pulumi.Int(64000),
 * 							ChannelCount: pulumi.Int(2),
 * 							ChannelLayouts: pulumi.StringArray{
 * 								pulumi.String("fl"),
 * 								pulumi.String("fr"),
 * 							},
 * 							SampleRateHertz: pulumi.Int(48000),
 * 						},
 * 					},
 * 				},
 * 				MuxStreams: transcoder.JobTemplateConfigMuxStreamArray{
 * 					&transcoder.JobTemplateConfigMuxStreamArgs{
 * 						Key:       pulumi.String("sd"),
 * 						FileName:  pulumi.String("sd.mp4"),
 * 						Container: pulumi.String("mp4"),
 * 						ElementaryStreams: pulumi.StringArray{
 * 							pulumi.String("video-stream0"),
 * 							pulumi.String("audio-stream0"),
 * 						},
 * 					},
 * 					&transcoder.JobTemplateConfigMuxStreamArgs{
 * 						Key:       pulumi.String("hd"),
 * 						FileName:  pulumi.String("hd.mp4"),
 * 						Container: pulumi.String("mp4"),
 * 						ElementaryStreams: pulumi.StringArray{
 * 							pulumi.String("video-stream1"),
 * 							pulumi.String("audio-stream0"),
 * 						},
 * 					},
 * 				},
 * 				PubsubDestination: &transcoder.JobTemplateConfigPubsubDestinationArgs{
 * 					Topic: transcoderNotifications.ID(),
 * 				},
 * 			},
 * 			Labels: pulumi.StringMap{
 * 				"label": pulumi.String("key"),
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.gcp.pubsub.Topic;
 * import com.pulumi.gcp.pubsub.TopicArgs;
 * import com.pulumi.gcp.transcoder.JobTemplate;
 * import com.pulumi.gcp.transcoder.JobTemplateArgs;
 * import com.pulumi.gcp.transcoder.inputs.JobTemplateConfigArgs;
 * import com.pulumi.gcp.transcoder.inputs.JobTemplateConfigOutputArgs;
 * import com.pulumi.gcp.transcoder.inputs.JobTemplateConfigPubsubDestinationArgs;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         var transcoderNotifications = new Topic("transcoderNotifications", TopicArgs.builder()
 *             .name("transcoder-notifications")
 *             .build());
 *         var default_ = new JobTemplate("default", JobTemplateArgs.builder()
 *             .jobTemplateId("example-job-template")
 *             .location("us-central1")
 *             .config(JobTemplateConfigArgs.builder()
 *                 .inputs(JobTemplateConfigInputArgs.builder()
 *                     .key("input0")
 *                     .uri("gs://example/example.mp4")
 *                     .build())
 *                 .output(JobTemplateConfigOutputArgs.builder()
 *                     .uri("gs://example/outputs/")
 *                     .build())
 *                 .editLists(JobTemplateConfigEditListArgs.builder()
 *                     .key("atom0")
 *                     .inputs("input0")
 *                     .startTimeOffset("0s")
 *                     .build())
 *                 .adBreaks(JobTemplateConfigAdBreakArgs.builder()
 *                     .startTimeOffset("3.500s")
 *                     .build())
 *                 .elementaryStreams(
 *                     JobTemplateConfigElementaryStreamArgs.builder()
 *                         .key("video-stream0")
 *                         .videoStream(JobTemplateConfigElementaryStreamVideoStreamArgs.builder()
 *                             .h264(JobTemplateConfigElementaryStreamVideoStreamH264Args.builder()
 *                                 .widthPixels(640)
 *                                 .heightPixels(360)
 *                                 .bitrateBps(550000)
 *                                 .frameRate(60)
 *                                 .pixelFormat("yuv420p")
 *                                 .rateControlMode("vbr")
 *                                 .crfLevel(21)
 *                                 .gopDuration("3s")
 *                                 .vbvSizeBits(550000)
 *                                 .vbvFullnessBits(495000)
 *                                 .entropyCoder("cabac")
 *                                 .profile("high")
 *                                 .preset("veryfast")
 *                                 .build())
 *                             .build())
 *                         .build(),
 *                     JobTemplateConfigElementaryStreamArgs.builder()
 *                         .key("video-stream1")
 *                         .videoStream(JobTemplateConfigElementaryStreamVideoStreamArgs.builder()
 *                             .h264(JobTemplateConfigElementaryStreamVideoStreamH264Args.builder()
 *                                 .widthPixels(1280)
 *                                 .heightPixels(720)
 *                                 .bitrateBps(550000)
 *                                 .frameRate(60)
 *                                 .pixelFormat("yuv420p")
 *                                 .rateControlMode("vbr")
 *                                 .crfLevel(21)
 *                                 .gopDuration("3s")
 *                                 .vbvSizeBits(2500000)
 *                                 .vbvFullnessBits(2250000)
 *                                 .entropyCoder("cabac")
 *                                 .profile("high")
 *                                 .preset("veryfast")
 *                                 .build())
 *                             .build())
 *                         .build(),
 *                     JobTemplateConfigElementaryStreamArgs.builder()
 *                         .key("audio-stream0")
 *                         .audioStream(JobTemplateConfigElementaryStreamAudioStreamArgs.builder()
 *                             .codec("aac")
 *                             .bitrateBps(64000)
 *                             .channelCount(2)
 *                             .channelLayouts(
 *                                 "fl",
 *                                 "fr")
 *                             .sampleRateHertz(48000)
 *                             .build())
 *                         .build())
 *                 .muxStreams(
 *                     JobTemplateConfigMuxStreamArgs.builder()
 *                         .key("sd")
 *                         .fileName("sd.mp4")
 *                         .container("mp4")
 *                         .elementaryStreams(
 *                             "video-stream0",
 *                             "audio-stream0")
 *                         .build(),
 *                     JobTemplateConfigMuxStreamArgs.builder()
 *                         .key("hd")
 *                         .fileName("hd.mp4")
 *                         .container("mp4")
 *                         .elementaryStreams(
 *                             "video-stream1",
 *                             "audio-stream0")
 *                         .build())
 *                 .pubsubDestination(JobTemplateConfigPubsubDestinationArgs.builder()
 *                     .topic(transcoderNotifications.id())
 *                     .build())
 *                 .build())
 *             .labels(Map.of("label", "key"))
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   transcoderNotifications:
 *     type: gcp:pubsub:Topic
 *     name: transcoder_notifications
 *     properties:
 *       name: transcoder-notifications
 *   default:
 *     type: gcp:transcoder:JobTemplate
 *     properties:
 *       jobTemplateId: example-job-template
 *       location: us-central1
 *       config:
 *         inputs:
 *           - key: input0
 *             uri: gs://example/example.mp4
 *         output:
 *           uri: gs://example/outputs/
 *         editLists:
 *           - key: atom0
 *             inputs:
 *               - input0
 *             startTimeOffset: 0s
 *         adBreaks:
 *           - startTimeOffset: 3.500s
 *         elementaryStreams:
 *           - key: video-stream0
 *             videoStream:
 *               h264:
 *                 widthPixels: 640
 *                 heightPixels: 360
 *                 bitrateBps: 550000
 *                 frameRate: 60
 *                 pixelFormat: yuv420p
 *                 rateControlMode: vbr
 *                 crfLevel: 21
 *                 gopDuration: 3s
 *                 vbvSizeBits: 550000
 *                 vbvFullnessBits: 495000
 *                 entropyCoder: cabac
 *                 profile: high
 *                 preset: veryfast
 *           - key: video-stream1
 *             videoStream:
 *               h264:
 *                 widthPixels: 1280
 *                 heightPixels: 720
 *                 bitrateBps: 550000
 *                 frameRate: 60
 *                 pixelFormat: yuv420p
 *                 rateControlMode: vbr
 *                 crfLevel: 21
 *                 gopDuration: 3s
 *                 vbvSizeBits: 2.5e+06
 *                 vbvFullnessBits: 2.25e+06
 *                 entropyCoder: cabac
 *                 profile: high
 *                 preset: veryfast
 *           - key: audio-stream0
 *             audioStream:
 *               codec: aac
 *               bitrateBps: 64000
 *               channelCount: 2
 *               channelLayouts:
 *                 - fl
 *                 - fr
 *               sampleRateHertz: 48000
 *         muxStreams:
 *           - key: sd
 *             fileName: sd.mp4
 *             container: mp4
 *             elementaryStreams:
 *               - video-stream0
 *               - audio-stream0
 *           - key: hd
 *             fileName: hd.mp4
 *             container: mp4
 *             elementaryStreams:
 *               - video-stream1
 *               - audio-stream0
 *         pubsubDestination:
 *           topic: ${transcoderNotifications.id}
 *       labels:
 *         label: key
 * ```
 * 
 * ## Import
 * JobTemplate can be imported using any of these accepted formats:
 * * `projects/{{project}}/locations/{{location}}/jobTemplates/{{job_template_id}}`
 * * `{{project}}/{{location}}/{{job_template_id}}`
 * * `{{location}}/{{job_template_id}}`
 * When using the `pulumi import` command, JobTemplate can be imported using one of the formats above. For example:
 * ```sh
 * $ pulumi import gcp:transcoder/jobTemplate:JobTemplate default projects/{{project}}/locations/{{location}}/jobTemplates/{{job_template_id}}
 * ```
 * ```sh
 * $ pulumi import gcp:transcoder/jobTemplate:JobTemplate default {{project}}/{{location}}/{{job_template_id}}
 * ```
 * ```sh
 * $ pulumi import gcp:transcoder/jobTemplate:JobTemplate default {{location}}/{{job_template_id}}
 * ```
 * @property config The configuration for this template.
 * Structure is documented below.
 * @property jobTemplateId ID to use for the Transcoding job template.
 * @property labels The labels associated with this job template. You can use these to organize and group your job templates.
 * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
 * Please refer to the field `effective_labels` for all of the labels present on the resource.
 * @property location The location of the transcoding job template resource.
 * - - -
 * @property project The ID of the project in which the resource belongs.
 * If it is not provided, the provider project is used.
 */
public data class JobTemplateArgs(
    public val config: Output? = null,
    public val jobTemplateId: Output? = null,
    public val labels: Output>? = null,
    public val location: Output? = null,
    public val project: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.gcp.transcoder.JobTemplateArgs =
        com.pulumi.gcp.transcoder.JobTemplateArgs.builder()
            .config(config?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .jobTemplateId(jobTemplateId?.applyValue({ args0 -> args0 }))
            .labels(labels?.applyValue({ args0 -> args0.map({ args0 -> args0.key.to(args0.value) }).toMap() }))
            .location(location?.applyValue({ args0 -> args0 }))
            .project(project?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [JobTemplateArgs].
 */
@PulumiTagMarker
public class JobTemplateArgsBuilder internal constructor() {
    private var config: Output? = null

    private var jobTemplateId: Output? = null

    private var labels: Output>? = null

    private var location: Output? = null

    private var project: Output? = null

    /**
     * @param value The configuration for this template.
     * Structure is documented below.
     */
    @JvmName("oxxdjjgookgsxtnq")
    public suspend fun config(`value`: Output) {
        this.config = value
    }

    /**
     * @param value ID to use for the Transcoding job template.
     */
    @JvmName("nqdyenrdqwajfygs")
    public suspend fun jobTemplateId(`value`: Output) {
        this.jobTemplateId = value
    }

    /**
     * @param value The labels associated with this job template. You can use these to organize and group your job templates.
     * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
     * Please refer to the field `effective_labels` for all of the labels present on the resource.
     */
    @JvmName("dfartpjkdcmuuspg")
    public suspend fun labels(`value`: Output>) {
        this.labels = value
    }

    /**
     * @param value The location of the transcoding job template resource.
     * - - -
     */
    @JvmName("xvkeahujivuabqxw")
    public suspend fun location(`value`: Output) {
        this.location = value
    }

    /**
     * @param value The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     */
    @JvmName("ywbdrttqyqauejjs")
    public suspend fun project(`value`: Output) {
        this.project = value
    }

    /**
     * @param value The configuration for this template.
     * Structure is documented below.
     */
    @JvmName("uphmokvjlkeudlyr")
    public suspend fun config(`value`: JobTemplateConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.config = mapped
    }

    /**
     * @param argument The configuration for this template.
     * Structure is documented below.
     */
    @JvmName("vhijpjwveauvhycg")
    public suspend fun config(argument: suspend JobTemplateConfigArgsBuilder.() -> Unit) {
        val toBeMapped = JobTemplateConfigArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.config = mapped
    }

    /**
     * @param value ID to use for the Transcoding job template.
     */
    @JvmName("sdkrkswmbalgdojy")
    public suspend fun jobTemplateId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.jobTemplateId = mapped
    }

    /**
     * @param value The labels associated with this job template. You can use these to organize and group your job templates.
     * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
     * Please refer to the field `effective_labels` for all of the labels present on the resource.
     */
    @JvmName("xofiwbbagjqelwak")
    public suspend fun labels(`value`: Map?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.labels = mapped
    }

    /**
     * @param values The labels associated with this job template. You can use these to organize and group your job templates.
     * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
     * Please refer to the field `effective_labels` for all of the labels present on the resource.
     */
    @JvmName("ickogqrievsbrkan")
    public fun labels(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.labels = mapped
    }

    /**
     * @param value The location of the transcoding job template resource.
     * - - -
     */
    @JvmName("xidtmbcronchrsyl")
    public suspend fun location(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.location = mapped
    }

    /**
     * @param value The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     */
    @JvmName("cydpwuvwbtbxkmnb")
    public suspend fun project(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.project = mapped
    }

    internal fun build(): JobTemplateArgs = JobTemplateArgs(
        config = config,
        jobTemplateId = jobTemplateId,
        labels = labels,
        location = location,
        project = project,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy