1. Packages
  2. Google Cloud (GCP) Classic
  3. API Docs
  4. transcoder
  5. Job
Google Cloud Classic v8.9.3 published on Monday, Nov 18, 2024 by Pulumi

gcp.transcoder.Job

Explore with Pulumi AI

gcp logo
Google Cloud Classic v8.9.3 published on Monday, Nov 18, 2024 by Pulumi

    Transcoding Job Resource

    To get more information about Job, see:

    Example Usage

    Transcoder Job Basic

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    
    const _default = new gcp.storage.Bucket("default", {
        name: "transcoder-job",
        location: "US",
        forceDestroy: true,
        uniformBucketLevelAccess: true,
        publicAccessPrevention: "enforced",
    });
    const exampleMp4 = new gcp.storage.BucketObject("example_mp4", {
        name: "example.mp4",
        source: new pulumi.asset.FileAsset("./test-fixtures/example.mp4"),
        bucket: _default.name,
    });
    const defaultJobTemplate = new gcp.transcoder.JobTemplate("default", {
        jobTemplateId: "example-job-template",
        location: "us-central1",
        config: {
            inputs: [{
                key: "input0",
                uri: pulumi.interpolate`gs://${_default.name}/${exampleMp4.name}`,
            }],
            output: {
                uri: pulumi.interpolate`gs://${_default.name}/outputs/`,
            },
            editLists: [{
                key: "atom0",
                inputs: ["input0"],
                startTimeOffset: "0s",
            }],
            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",
        },
    });
    const defaultJob = new gcp.transcoder.Job("default", {
        templateId: defaultJobTemplate.name,
        location: "us-central1",
        labels: {
            label: "key",
        },
    });
    
    import pulumi
    import pulumi_gcp as gcp
    
    default = gcp.storage.Bucket("default",
        name="transcoder-job",
        location="US",
        force_destroy=True,
        uniform_bucket_level_access=True,
        public_access_prevention="enforced")
    example_mp4 = gcp.storage.BucketObject("example_mp4",
        name="example.mp4",
        source=pulumi.FileAsset("./test-fixtures/example.mp4"),
        bucket=default.name)
    default_job_template = gcp.transcoder.JobTemplate("default",
        job_template_id="example-job-template",
        location="us-central1",
        config={
            "inputs": [{
                "key": "input0",
                "uri": pulumi.Output.all(
                    defaultName=default.name,
                    exampleMp4Name=example_mp4.name
    ).apply(lambda resolved_outputs: f"gs://{resolved_outputs['defaultName']}/{resolved_outputs['exampleMp4Name']}")
    ,
            }],
            "output": {
                "uri": default.name.apply(lambda name: f"gs://{name}/outputs/"),
            },
            "edit_lists": [{
                "key": "atom0",
                "inputs": ["input0"],
                "start_time_offset": "0s",
            }],
            "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",
        })
    default_job = gcp.transcoder.Job("default",
        template_id=default_job_template.name,
        location="us-central1",
        labels={
            "label": "key",
        })
    
    package main
    
    import (
    	"fmt"
    
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage"
    	"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 := storage.NewBucket(ctx, "default", &storage.BucketArgs{
    			Name:                     pulumi.String("transcoder-job"),
    			Location:                 pulumi.String("US"),
    			ForceDestroy:             pulumi.Bool(true),
    			UniformBucketLevelAccess: pulumi.Bool(true),
    			PublicAccessPrevention:   pulumi.String("enforced"),
    		})
    		if err != nil {
    			return err
    		}
    		exampleMp4, err := storage.NewBucketObject(ctx, "example_mp4", &storage.BucketObjectArgs{
    			Name:   pulumi.String("example.mp4"),
    			Source: pulumi.NewFileAsset("./test-fixtures/example.mp4"),
    			Bucket: _default.Name,
    		})
    		if err != nil {
    			return err
    		}
    		defaultJobTemplate, 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.All(_default.Name, exampleMp4.Name).ApplyT(func(_args []interface{}) (string, error) {
    							defaultName := _args[0].(string)
    							exampleMp4Name := _args[1].(string)
    							return fmt.Sprintf("gs://%v/%v", defaultName, exampleMp4Name), nil
    						}).(pulumi.StringOutput),
    					},
    				},
    				Output: &transcoder.JobTemplateConfigOutputTypeArgs{
    					Uri: _default.Name.ApplyT(func(name string) (string, error) {
    						return fmt.Sprintf("gs://%v/outputs/", name), nil
    					}).(pulumi.StringOutput),
    				},
    				EditLists: transcoder.JobTemplateConfigEditListArray{
    					&transcoder.JobTemplateConfigEditListArgs{
    						Key: pulumi.String("atom0"),
    						Inputs: pulumi.StringArray{
    							pulumi.String("input0"),
    						},
    						StartTimeOffset: pulumi.String("0s"),
    					},
    				},
    				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
    		}
    		_, err = transcoder.NewJob(ctx, "default", &transcoder.JobArgs{
    			TemplateId: defaultJobTemplate.Name,
    			Location:   pulumi.String("us-central1"),
    			Labels: pulumi.StringMap{
    				"label": pulumi.String("key"),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Gcp = Pulumi.Gcp;
    
    return await Deployment.RunAsync(() => 
    {
        var @default = new Gcp.Storage.Bucket("default", new()
        {
            Name = "transcoder-job",
            Location = "US",
            ForceDestroy = true,
            UniformBucketLevelAccess = true,
            PublicAccessPrevention = "enforced",
        });
    
        var exampleMp4 = new Gcp.Storage.BucketObject("example_mp4", new()
        {
            Name = "example.mp4",
            Source = new FileAsset("./test-fixtures/example.mp4"),
            Bucket = @default.Name,
        });
    
        var defaultJobTemplate = 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 = Output.Tuple(@default.Name, exampleMp4.Name).Apply(values =>
                        {
                            var defaultName = values.Item1;
                            var exampleMp4Name = values.Item2;
                            return $"gs://{defaultName}/{exampleMp4Name}";
                        }),
                    },
                },
                Output = new Gcp.Transcoder.Inputs.JobTemplateConfigOutputArgs
                {
                    Uri = @default.Name.Apply(name => $"gs://{name}/outputs/"),
                },
                EditLists = new[]
                {
                    new Gcp.Transcoder.Inputs.JobTemplateConfigEditListArgs
                    {
                        Key = "atom0",
                        Inputs = new[]
                        {
                            "input0",
                        },
                        StartTimeOffset = "0s",
                    },
                },
                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" },
            },
        });
    
        var defaultJob = new Gcp.Transcoder.Job("default", new()
        {
            TemplateId = defaultJobTemplate.Name,
            Location = "us-central1",
            Labels = 
            {
                { "label", "key" },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.storage.Bucket;
    import com.pulumi.gcp.storage.BucketArgs;
    import com.pulumi.gcp.storage.BucketObject;
    import com.pulumi.gcp.storage.BucketObjectArgs;
    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.Job;
    import com.pulumi.gcp.transcoder.JobArgs;
    import com.pulumi.asset.FileAsset;
    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 Bucket("default", BucketArgs.builder()
                .name("transcoder-job")
                .location("US")
                .forceDestroy(true)
                .uniformBucketLevelAccess(true)
                .publicAccessPrevention("enforced")
                .build());
    
            var exampleMp4 = new BucketObject("exampleMp4", BucketObjectArgs.builder()
                .name("example.mp4")
                .source(new FileAsset("./test-fixtures/example.mp4"))
                .bucket(default_.name())
                .build());
    
            var defaultJobTemplate = new JobTemplate("defaultJobTemplate", JobTemplateArgs.builder()
                .jobTemplateId("example-job-template")
                .location("us-central1")
                .config(JobTemplateConfigArgs.builder()
                    .inputs(JobTemplateConfigInputArgs.builder()
                        .key("input0")
                        .uri(Output.tuple(default_.name(), exampleMp4.name()).applyValue(values -> {
                            var defaultName = values.t1;
                            var exampleMp4Name = values.t2;
                            return String.format("gs://%s/%s", defaultName,exampleMp4Name);
                        }))
                        .build())
                    .output(JobTemplateConfigOutputArgs.builder()
                        .uri(default_.name().applyValue(name -> String.format("gs://%s/outputs/", name)))
                        .build())
                    .editLists(JobTemplateConfigEditListArgs.builder()
                        .key("atom0")
                        .inputs("input0")
                        .startTimeOffset("0s")
                        .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());
    
            var defaultJob = new Job("defaultJob", JobArgs.builder()
                .templateId(defaultJobTemplate.name())
                .location("us-central1")
                .labels(Map.of("label", "key"))
                .build());
    
        }
    }
    
    resources:
      default:
        type: gcp:storage:Bucket
        properties:
          name: transcoder-job
          location: US
          forceDestroy: true
          uniformBucketLevelAccess: true
          publicAccessPrevention: enforced
      exampleMp4:
        type: gcp:storage:BucketObject
        name: example_mp4
        properties:
          name: example.mp4
          source:
            fn::FileAsset: ./test-fixtures/example.mp4
          bucket: ${default.name}
      defaultJob:
        type: gcp:transcoder:Job
        name: default
        properties:
          templateId: ${defaultJobTemplate.name}
          location: us-central1
          labels:
            label: key
      defaultJobTemplate:
        type: gcp:transcoder:JobTemplate
        name: default
        properties:
          jobTemplateId: example-job-template
          location: us-central1
          config:
            inputs:
              - key: input0
                uri: gs://${default.name}/${exampleMp4.name}
            output:
              uri: gs://${default.name}/outputs/
            editLists:
              - key: atom0
                inputs:
                  - input0
                startTimeOffset: 0s
            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 Pubsub

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    
    const _default = new gcp.storage.Bucket("default", {
        name: "transcoder-job",
        location: "US",
        forceDestroy: true,
        uniformBucketLevelAccess: true,
        publicAccessPrevention: "enforced",
    });
    const exampleMp4 = new gcp.storage.BucketObject("example_mp4", {
        name: "example.mp4",
        source: new pulumi.asset.FileAsset("./test-fixtures/example.mp4"),
        bucket: _default.name,
    });
    const transcoderNotifications = new gcp.pubsub.Topic("transcoder_notifications", {name: "transcoder-notifications"});
    const defaultJob = new gcp.transcoder.Job("default", {
        location: "us-central1",
        config: {
            inputs: [{
                key: "input0",
                uri: pulumi.interpolate`gs://${_default.name}/${exampleMp4.name}`,
            }],
            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,
            },
            output: {
                uri: pulumi.interpolate`gs://${_default.name}/outputs/`,
            },
        },
        labels: {
            label: "key",
        },
    });
    
    import pulumi
    import pulumi_gcp as gcp
    
    default = gcp.storage.Bucket("default",
        name="transcoder-job",
        location="US",
        force_destroy=True,
        uniform_bucket_level_access=True,
        public_access_prevention="enforced")
    example_mp4 = gcp.storage.BucketObject("example_mp4",
        name="example.mp4",
        source=pulumi.FileAsset("./test-fixtures/example.mp4"),
        bucket=default.name)
    transcoder_notifications = gcp.pubsub.Topic("transcoder_notifications", name="transcoder-notifications")
    default_job = gcp.transcoder.Job("default",
        location="us-central1",
        config={
            "inputs": [{
                "key": "input0",
                "uri": pulumi.Output.all(
                    defaultName=default.name,
                    exampleMp4Name=example_mp4.name
    ).apply(lambda resolved_outputs: f"gs://{resolved_outputs['defaultName']}/{resolved_outputs['exampleMp4Name']}")
    ,
            }],
            "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,
            },
            "output": {
                "uri": default.name.apply(lambda name: f"gs://{name}/outputs/"),
            },
        },
        labels={
            "label": "key",
        })
    
    package main
    
    import (
    	"fmt"
    
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub"
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage"
    	"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 := storage.NewBucket(ctx, "default", &storage.BucketArgs{
    			Name:                     pulumi.String("transcoder-job"),
    			Location:                 pulumi.String("US"),
    			ForceDestroy:             pulumi.Bool(true),
    			UniformBucketLevelAccess: pulumi.Bool(true),
    			PublicAccessPrevention:   pulumi.String("enforced"),
    		})
    		if err != nil {
    			return err
    		}
    		exampleMp4, err := storage.NewBucketObject(ctx, "example_mp4", &storage.BucketObjectArgs{
    			Name:   pulumi.String("example.mp4"),
    			Source: pulumi.NewFileAsset("./test-fixtures/example.mp4"),
    			Bucket: _default.Name,
    		})
    		if err != nil {
    			return err
    		}
    		transcoderNotifications, err := pubsub.NewTopic(ctx, "transcoder_notifications", &pubsub.TopicArgs{
    			Name: pulumi.String("transcoder-notifications"),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = transcoder.NewJob(ctx, "default", &transcoder.JobArgs{
    			Location: pulumi.String("us-central1"),
    			Config: &transcoder.JobConfigArgs{
    				Inputs: transcoder.JobConfigInputTypeArray{
    					&transcoder.JobConfigInputTypeArgs{
    						Key: pulumi.String("input0"),
    						Uri: pulumi.All(_default.Name, exampleMp4.Name).ApplyT(func(_args []interface{}) (string, error) {
    							defaultName := _args[0].(string)
    							exampleMp4Name := _args[1].(string)
    							return fmt.Sprintf("gs://%v/%v", defaultName, exampleMp4Name), nil
    						}).(pulumi.StringOutput),
    					},
    				},
    				EditLists: transcoder.JobConfigEditListArray{
    					&transcoder.JobConfigEditListArgs{
    						Key: pulumi.String("atom0"),
    						Inputs: pulumi.StringArray{
    							pulumi.String("input0"),
    						},
    						StartTimeOffset: pulumi.String("0s"),
    					},
    				},
    				AdBreaks: transcoder.JobConfigAdBreakArray{
    					&transcoder.JobConfigAdBreakArgs{
    						StartTimeOffset: pulumi.String("3.500s"),
    					},
    				},
    				ElementaryStreams: transcoder.JobConfigElementaryStreamArray{
    					&transcoder.JobConfigElementaryStreamArgs{
    						Key: pulumi.String("video-stream0"),
    						VideoStream: &transcoder.JobConfigElementaryStreamVideoStreamArgs{
    							H264: &transcoder.JobConfigElementaryStreamVideoStreamH264Args{
    								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.JobConfigElementaryStreamArgs{
    						Key: pulumi.String("video-stream1"),
    						VideoStream: &transcoder.JobConfigElementaryStreamVideoStreamArgs{
    							H264: &transcoder.JobConfigElementaryStreamVideoStreamH264Args{
    								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.JobConfigElementaryStreamArgs{
    						Key: pulumi.String("audio-stream0"),
    						AudioStream: &transcoder.JobConfigElementaryStreamAudioStreamArgs{
    							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.JobConfigMuxStreamArray{
    					&transcoder.JobConfigMuxStreamArgs{
    						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.JobConfigMuxStreamArgs{
    						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.JobConfigPubsubDestinationArgs{
    					Topic: transcoderNotifications.ID(),
    				},
    				Output: &transcoder.JobConfigOutputTypeArgs{
    					Uri: _default.Name.ApplyT(func(name string) (string, error) {
    						return fmt.Sprintf("gs://%v/outputs/", name), nil
    					}).(pulumi.StringOutput),
    				},
    			},
    			Labels: pulumi.StringMap{
    				"label": pulumi.String("key"),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Gcp = Pulumi.Gcp;
    
    return await Deployment.RunAsync(() => 
    {
        var @default = new Gcp.Storage.Bucket("default", new()
        {
            Name = "transcoder-job",
            Location = "US",
            ForceDestroy = true,
            UniformBucketLevelAccess = true,
            PublicAccessPrevention = "enforced",
        });
    
        var exampleMp4 = new Gcp.Storage.BucketObject("example_mp4", new()
        {
            Name = "example.mp4",
            Source = new FileAsset("./test-fixtures/example.mp4"),
            Bucket = @default.Name,
        });
    
        var transcoderNotifications = new Gcp.PubSub.Topic("transcoder_notifications", new()
        {
            Name = "transcoder-notifications",
        });
    
        var defaultJob = new Gcp.Transcoder.Job("default", new()
        {
            Location = "us-central1",
            Config = new Gcp.Transcoder.Inputs.JobConfigArgs
            {
                Inputs = new[]
                {
                    new Gcp.Transcoder.Inputs.JobConfigInputArgs
                    {
                        Key = "input0",
                        Uri = Output.Tuple(@default.Name, exampleMp4.Name).Apply(values =>
                        {
                            var defaultName = values.Item1;
                            var exampleMp4Name = values.Item2;
                            return $"gs://{defaultName}/{exampleMp4Name}";
                        }),
                    },
                },
                EditLists = new[]
                {
                    new Gcp.Transcoder.Inputs.JobConfigEditListArgs
                    {
                        Key = "atom0",
                        Inputs = new[]
                        {
                            "input0",
                        },
                        StartTimeOffset = "0s",
                    },
                },
                AdBreaks = new[]
                {
                    new Gcp.Transcoder.Inputs.JobConfigAdBreakArgs
                    {
                        StartTimeOffset = "3.500s",
                    },
                },
                ElementaryStreams = new[]
                {
                    new Gcp.Transcoder.Inputs.JobConfigElementaryStreamArgs
                    {
                        Key = "video-stream0",
                        VideoStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamArgs
                        {
                            H264 = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamH264Args
                            {
                                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.JobConfigElementaryStreamArgs
                    {
                        Key = "video-stream1",
                        VideoStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamArgs
                        {
                            H264 = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamH264Args
                            {
                                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.JobConfigElementaryStreamArgs
                    {
                        Key = "audio-stream0",
                        AudioStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamAudioStreamArgs
                        {
                            Codec = "aac",
                            BitrateBps = 64000,
                            ChannelCount = 2,
                            ChannelLayouts = new[]
                            {
                                "fl",
                                "fr",
                            },
                            SampleRateHertz = 48000,
                        },
                    },
                },
                MuxStreams = new[]
                {
                    new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs
                    {
                        Key = "sd",
                        FileName = "sd.mp4",
                        Container = "mp4",
                        ElementaryStreams = new[]
                        {
                            "video-stream0",
                            "audio-stream0",
                        },
                    },
                    new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs
                    {
                        Key = "hd",
                        FileName = "hd.mp4",
                        Container = "mp4",
                        ElementaryStreams = new[]
                        {
                            "video-stream1",
                            "audio-stream0",
                        },
                    },
                },
                PubsubDestination = new Gcp.Transcoder.Inputs.JobConfigPubsubDestinationArgs
                {
                    Topic = transcoderNotifications.Id,
                },
                Output = new Gcp.Transcoder.Inputs.JobConfigOutputArgs
                {
                    Uri = @default.Name.Apply(name => $"gs://{name}/outputs/"),
                },
            },
            Labels = 
            {
                { "label", "key" },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.storage.Bucket;
    import com.pulumi.gcp.storage.BucketArgs;
    import com.pulumi.gcp.storage.BucketObject;
    import com.pulumi.gcp.storage.BucketObjectArgs;
    import com.pulumi.gcp.pubsub.Topic;
    import com.pulumi.gcp.pubsub.TopicArgs;
    import com.pulumi.gcp.transcoder.Job;
    import com.pulumi.gcp.transcoder.JobArgs;
    import com.pulumi.gcp.transcoder.inputs.JobConfigArgs;
    import com.pulumi.gcp.transcoder.inputs.JobConfigPubsubDestinationArgs;
    import com.pulumi.gcp.transcoder.inputs.JobConfigOutputArgs;
    import com.pulumi.asset.FileAsset;
    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 Bucket("default", BucketArgs.builder()
                .name("transcoder-job")
                .location("US")
                .forceDestroy(true)
                .uniformBucketLevelAccess(true)
                .publicAccessPrevention("enforced")
                .build());
    
            var exampleMp4 = new BucketObject("exampleMp4", BucketObjectArgs.builder()
                .name("example.mp4")
                .source(new FileAsset("./test-fixtures/example.mp4"))
                .bucket(default_.name())
                .build());
    
            var transcoderNotifications = new Topic("transcoderNotifications", TopicArgs.builder()
                .name("transcoder-notifications")
                .build());
    
            var defaultJob = new Job("defaultJob", JobArgs.builder()
                .location("us-central1")
                .config(JobConfigArgs.builder()
                    .inputs(JobConfigInputArgs.builder()
                        .key("input0")
                        .uri(Output.tuple(default_.name(), exampleMp4.name()).applyValue(values -> {
                            var defaultName = values.t1;
                            var exampleMp4Name = values.t2;
                            return String.format("gs://%s/%s", defaultName,exampleMp4Name);
                        }))
                        .build())
                    .editLists(JobConfigEditListArgs.builder()
                        .key("atom0")
                        .inputs("input0")
                        .startTimeOffset("0s")
                        .build())
                    .adBreaks(JobConfigAdBreakArgs.builder()
                        .startTimeOffset("3.500s")
                        .build())
                    .elementaryStreams(                
                        JobConfigElementaryStreamArgs.builder()
                            .key("video-stream0")
                            .videoStream(JobConfigElementaryStreamVideoStreamArgs.builder()
                                .h264(JobConfigElementaryStreamVideoStreamH264Args.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(),
                        JobConfigElementaryStreamArgs.builder()
                            .key("video-stream1")
                            .videoStream(JobConfigElementaryStreamVideoStreamArgs.builder()
                                .h264(JobConfigElementaryStreamVideoStreamH264Args.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(),
                        JobConfigElementaryStreamArgs.builder()
                            .key("audio-stream0")
                            .audioStream(JobConfigElementaryStreamAudioStreamArgs.builder()
                                .codec("aac")
                                .bitrateBps(64000)
                                .channelCount(2)
                                .channelLayouts(                            
                                    "fl",
                                    "fr")
                                .sampleRateHertz(48000)
                                .build())
                            .build())
                    .muxStreams(                
                        JobConfigMuxStreamArgs.builder()
                            .key("sd")
                            .fileName("sd.mp4")
                            .container("mp4")
                            .elementaryStreams(                        
                                "video-stream0",
                                "audio-stream0")
                            .build(),
                        JobConfigMuxStreamArgs.builder()
                            .key("hd")
                            .fileName("hd.mp4")
                            .container("mp4")
                            .elementaryStreams(                        
                                "video-stream1",
                                "audio-stream0")
                            .build())
                    .pubsubDestination(JobConfigPubsubDestinationArgs.builder()
                        .topic(transcoderNotifications.id())
                        .build())
                    .output(JobConfigOutputArgs.builder()
                        .uri(default_.name().applyValue(name -> String.format("gs://%s/outputs/", name)))
                        .build())
                    .build())
                .labels(Map.of("label", "key"))
                .build());
    
        }
    }
    
    resources:
      default:
        type: gcp:storage:Bucket
        properties:
          name: transcoder-job
          location: US
          forceDestroy: true
          uniformBucketLevelAccess: true
          publicAccessPrevention: enforced
      exampleMp4:
        type: gcp:storage:BucketObject
        name: example_mp4
        properties:
          name: example.mp4
          source:
            fn::FileAsset: ./test-fixtures/example.mp4
          bucket: ${default.name}
      transcoderNotifications:
        type: gcp:pubsub:Topic
        name: transcoder_notifications
        properties:
          name: transcoder-notifications
      defaultJob:
        type: gcp:transcoder:Job
        name: default
        properties:
          location: us-central1
          config:
            inputs:
              - key: input0
                uri: gs://${default.name}/${exampleMp4.name}
            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}
            output:
              uri: gs://${default.name}/outputs/
          labels:
            label: key
    

    Transcoder Job Encryptions

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    
    const _default = new gcp.storage.Bucket("default", {
        name: "transcoder-job",
        location: "US",
        forceDestroy: true,
        uniformBucketLevelAccess: true,
        publicAccessPrevention: "enforced",
    });
    const exampleMp4 = new gcp.storage.BucketObject("example_mp4", {
        name: "example.mp4",
        source: new pulumi.asset.FileAsset("./test-fixtures/example.mp4"),
        bucket: _default.name,
    });
    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 project = gcp.organizations.getProject({});
    // this is required to allow the transcoder service identity to access the secret
    const transcoder = new gcp.projects.ServiceIdentity("transcoder", {
        project: project.then(project => project.projectId),
        service: "transcoder.googleapis.com",
    });
    const transcoderEncryptionKeyAccessor = new gcp.secretmanager.SecretIamMember("transcoder_encryption_key_accessor", {
        secretId: encryptionKey.secretId,
        project: encryptionKey.project,
        role: "roles/secretmanager.secretAccessor",
        member: pulumi.interpolate`serviceAccount:${transcoder.email}`,
    });
    const defaultJob = new gcp.transcoder.Job("default", {
        location: "us-central1",
        config: {
            inputs: [{
                key: "input0",
                uri: pulumi.interpolate`gs://${_default.name}/${exampleMp4.name}`,
            }],
            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",
                    ],
                },
            ],
            output: {
                uri: pulumi.interpolate`gs://${_default.name}/outputs/`,
            },
        },
        labels: {
            label: "key",
        },
    });
    
    import pulumi
    import pulumi_gcp as gcp
    
    default = gcp.storage.Bucket("default",
        name="transcoder-job",
        location="US",
        force_destroy=True,
        uniform_bucket_level_access=True,
        public_access_prevention="enforced")
    example_mp4 = gcp.storage.BucketObject("example_mp4",
        name="example.mp4",
        source=pulumi.FileAsset("./test-fixtures/example.mp4"),
        bucket=default.name)
    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")
    project = gcp.organizations.get_project()
    # this is required to allow the transcoder service identity to access the secret
    transcoder = gcp.projects.ServiceIdentity("transcoder",
        project=project.project_id,
        service="transcoder.googleapis.com")
    transcoder_encryption_key_accessor = gcp.secretmanager.SecretIamMember("transcoder_encryption_key_accessor",
        secret_id=encryption_key.secret_id,
        project=encryption_key.project,
        role="roles/secretmanager.secretAccessor",
        member=transcoder.email.apply(lambda email: f"serviceAccount:{email}"))
    default_job = gcp.transcoder.Job("default",
        location="us-central1",
        config={
            "inputs": [{
                "key": "input0",
                "uri": pulumi.Output.all(
                    defaultName=default.name,
                    exampleMp4Name=example_mp4.name
    ).apply(lambda resolved_outputs: f"gs://{resolved_outputs['defaultName']}/{resolved_outputs['exampleMp4Name']}")
    ,
            }],
            "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",
                    ],
                },
            ],
            "output": {
                "uri": default.name.apply(lambda name: f"gs://{name}/outputs/"),
            },
        },
        labels={
            "label": "key",
        })
    
    package main
    
    import (
    	"fmt"
    
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations"
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects"
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager"
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage"
    	"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 := storage.NewBucket(ctx, "default", &storage.BucketArgs{
    			Name:                     pulumi.String("transcoder-job"),
    			Location:                 pulumi.String("US"),
    			ForceDestroy:             pulumi.Bool(true),
    			UniformBucketLevelAccess: pulumi.Bool(true),
    			PublicAccessPrevention:   pulumi.String("enforced"),
    		})
    		if err != nil {
    			return err
    		}
    		exampleMp4, err := storage.NewBucketObject(ctx, "example_mp4", &storage.BucketObjectArgs{
    			Name:   pulumi.String("example.mp4"),
    			Source: pulumi.NewFileAsset("./test-fixtures/example.mp4"),
    			Bucket: _default.Name,
    		})
    		if err != nil {
    			return err
    		}
    		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
    		}
    		project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil)
    		if err != nil {
    			return err
    		}
    		// this is required to allow the transcoder service identity to access the secret
    		transcoder, err := projects.NewServiceIdentity(ctx, "transcoder", &projects.ServiceIdentityArgs{
    			Project: pulumi.String(project.ProjectId),
    			Service: pulumi.String("transcoder.googleapis.com"),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = secretmanager.NewSecretIamMember(ctx, "transcoder_encryption_key_accessor", &secretmanager.SecretIamMemberArgs{
    			SecretId: encryptionKey.SecretId,
    			Project:  encryptionKey.Project,
    			Role:     pulumi.String("roles/secretmanager.secretAccessor"),
    			Member: transcoder.Email.ApplyT(func(email string) (string, error) {
    				return fmt.Sprintf("serviceAccount:%v", email), nil
    			}).(pulumi.StringOutput),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = transcoder.NewJob(ctx, "default", &transcoder.JobArgs{
    			Location: pulumi.String("us-central1"),
    			Config: &transcoder.JobConfigArgs{
    				Inputs: transcoder.JobConfigInputTypeArray{
    					&transcoder.JobConfigInputTypeArgs{
    						Key: pulumi.String("input0"),
    						Uri: pulumi.All(_default.Name, exampleMp4.Name).ApplyT(func(_args []interface{}) (string, error) {
    							defaultName := _args[0].(string)
    							exampleMp4Name := _args[1].(string)
    							return fmt.Sprintf("gs://%v/%v", defaultName, exampleMp4Name), nil
    						}).(pulumi.StringOutput),
    					},
    				},
    				ElementaryStreams: transcoder.JobConfigElementaryStreamArray{
    					&transcoder.JobConfigElementaryStreamArgs{
    						Key: pulumi.String("es_video"),
    						VideoStream: &transcoder.JobConfigElementaryStreamVideoStreamArgs{
    							H264: &transcoder.JobConfigElementaryStreamVideoStreamH264Args{
    								Profile:      pulumi.String("main"),
    								HeightPixels: pulumi.Int(600),
    								WidthPixels:  pulumi.Int(800),
    								BitrateBps:   pulumi.Int(1000000),
    								FrameRate:    pulumi.Int(60),
    							},
    						},
    					},
    					&transcoder.JobConfigElementaryStreamArgs{
    						Key: pulumi.String("es_audio"),
    						AudioStream: &transcoder.JobConfigElementaryStreamAudioStreamArgs{
    							Codec:        pulumi.String("aac"),
    							ChannelCount: pulumi.Int(2),
    							BitrateBps:   pulumi.Int(160000),
    						},
    					},
    				},
    				Encryptions: transcoder.JobConfigEncryptionArray{
    					&transcoder.JobConfigEncryptionArgs{
    						Id: pulumi.String("aes-128"),
    						SecretManagerKeySource: &transcoder.JobConfigEncryptionSecretManagerKeySourceArgs{
    							SecretVersion: encryptionKeySecretVersion.Name,
    						},
    						DrmSystems: &transcoder.JobConfigEncryptionDrmSystemsArgs{
    							Clearkey: &transcoder.JobConfigEncryptionDrmSystemsClearkeyArgs{},
    						},
    						Aes128: &transcoder.JobConfigEncryptionAes128Args{},
    					},
    					&transcoder.JobConfigEncryptionArgs{
    						Id: pulumi.String("cenc"),
    						SecretManagerKeySource: &transcoder.JobConfigEncryptionSecretManagerKeySourceArgs{
    							SecretVersion: encryptionKeySecretVersion.Name,
    						},
    						DrmSystems: &transcoder.JobConfigEncryptionDrmSystemsArgs{
    							Widevine: &transcoder.JobConfigEncryptionDrmSystemsWidevineArgs{},
    						},
    						MpegCenc: &transcoder.JobConfigEncryptionMpegCencArgs{
    							Scheme: pulumi.String("cenc"),
    						},
    					},
    					&transcoder.JobConfigEncryptionArgs{
    						Id: pulumi.String("cbcs"),
    						SecretManagerKeySource: &transcoder.JobConfigEncryptionSecretManagerKeySourceArgs{
    							SecretVersion: encryptionKeySecretVersion.Name,
    						},
    						DrmSystems: &transcoder.JobConfigEncryptionDrmSystemsArgs{
    							Widevine: &transcoder.JobConfigEncryptionDrmSystemsWidevineArgs{},
    						},
    						MpegCenc: &transcoder.JobConfigEncryptionMpegCencArgs{
    							Scheme: pulumi.String("cbcs"),
    						},
    					},
    				},
    				MuxStreams: transcoder.JobConfigMuxStreamArray{
    					&transcoder.JobConfigMuxStreamArgs{
    						Key:       pulumi.String("ts_aes128"),
    						Container: pulumi.String("ts"),
    						ElementaryStreams: pulumi.StringArray{
    							pulumi.String("es_video"),
    							pulumi.String("es_audio"),
    						},
    						SegmentSettings: &transcoder.JobConfigMuxStreamSegmentSettingsArgs{
    							SegmentDuration: pulumi.String("6s"),
    						},
    						EncryptionId: pulumi.String("aes-128"),
    					},
    					&transcoder.JobConfigMuxStreamArgs{
    						Key:       pulumi.String("fmp4_cenc_video"),
    						Container: pulumi.String("fmp4"),
    						ElementaryStreams: pulumi.StringArray{
    							pulumi.String("es_video"),
    						},
    						SegmentSettings: &transcoder.JobConfigMuxStreamSegmentSettingsArgs{
    							SegmentDuration: pulumi.String("6s"),
    						},
    						EncryptionId: pulumi.String("cenc"),
    					},
    					&transcoder.JobConfigMuxStreamArgs{
    						Key:       pulumi.String("fmp4_cenc_audio"),
    						Container: pulumi.String("fmp4"),
    						ElementaryStreams: pulumi.StringArray{
    							pulumi.String("es_audio"),
    						},
    						SegmentSettings: &transcoder.JobConfigMuxStreamSegmentSettingsArgs{
    							SegmentDuration: pulumi.String("6s"),
    						},
    						EncryptionId: pulumi.String("cenc"),
    					},
    					&transcoder.JobConfigMuxStreamArgs{
    						Key:       pulumi.String("fmp4_cbcs_video"),
    						Container: pulumi.String("fmp4"),
    						ElementaryStreams: pulumi.StringArray{
    							pulumi.String("es_video"),
    						},
    						SegmentSettings: &transcoder.JobConfigMuxStreamSegmentSettingsArgs{
    							SegmentDuration: pulumi.String("6s"),
    						},
    						EncryptionId: pulumi.String("cbcs"),
    					},
    					&transcoder.JobConfigMuxStreamArgs{
    						Key:       pulumi.String("fmp4_cbcs_audio"),
    						Container: pulumi.String("fmp4"),
    						ElementaryStreams: pulumi.StringArray{
    							pulumi.String("es_audio"),
    						},
    						SegmentSettings: &transcoder.JobConfigMuxStreamSegmentSettingsArgs{
    							SegmentDuration: pulumi.String("6s"),
    						},
    						EncryptionId: pulumi.String("cbcs"),
    					},
    				},
    				Manifests: transcoder.JobConfigManifestArray{
    					&transcoder.JobConfigManifestArgs{
    						FileName: pulumi.String("manifest_aes128.m3u8"),
    						Type:     pulumi.String("HLS"),
    						MuxStreams: pulumi.StringArray{
    							pulumi.String("ts_aes128"),
    						},
    					},
    					&transcoder.JobConfigManifestArgs{
    						FileName: pulumi.String("manifest_cenc.mpd"),
    						Type:     pulumi.String("DASH"),
    						MuxStreams: pulumi.StringArray{
    							pulumi.String("fmp4_cenc_video"),
    							pulumi.String("fmp4_cenc_audio"),
    						},
    					},
    					&transcoder.JobConfigManifestArgs{
    						FileName: pulumi.String("manifest_cbcs.mpd"),
    						Type:     pulumi.String("DASH"),
    						MuxStreams: pulumi.StringArray{
    							pulumi.String("fmp4_cbcs_video"),
    							pulumi.String("fmp4_cbcs_audio"),
    						},
    					},
    				},
    				Output: &transcoder.JobConfigOutputTypeArgs{
    					Uri: _default.Name.ApplyT(func(name string) (string, error) {
    						return fmt.Sprintf("gs://%v/outputs/", name), nil
    					}).(pulumi.StringOutput),
    				},
    			},
    			Labels: pulumi.StringMap{
    				"label": pulumi.String("key"),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Gcp = Pulumi.Gcp;
    
    return await Deployment.RunAsync(() => 
    {
        var @default = new Gcp.Storage.Bucket("default", new()
        {
            Name = "transcoder-job",
            Location = "US",
            ForceDestroy = true,
            UniformBucketLevelAccess = true,
            PublicAccessPrevention = "enforced",
        });
    
        var exampleMp4 = new Gcp.Storage.BucketObject("example_mp4", new()
        {
            Name = "example.mp4",
            Source = new FileAsset("./test-fixtures/example.mp4"),
            Bucket = @default.Name,
        });
    
        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 project = Gcp.Organizations.GetProject.Invoke();
    
        // this is required to allow the transcoder service identity to access the secret
        var transcoder = new Gcp.Projects.ServiceIdentity("transcoder", new()
        {
            Project = project.Apply(getProjectResult => getProjectResult.ProjectId),
            Service = "transcoder.googleapis.com",
        });
    
        var transcoderEncryptionKeyAccessor = new Gcp.SecretManager.SecretIamMember("transcoder_encryption_key_accessor", new()
        {
            SecretId = encryptionKey.SecretId,
            Project = encryptionKey.Project,
            Role = "roles/secretmanager.secretAccessor",
            Member = transcoder.Email.Apply(email => $"serviceAccount:{email}"),
        });
    
        var defaultJob = new Gcp.Transcoder.Job("default", new()
        {
            Location = "us-central1",
            Config = new Gcp.Transcoder.Inputs.JobConfigArgs
            {
                Inputs = new[]
                {
                    new Gcp.Transcoder.Inputs.JobConfigInputArgs
                    {
                        Key = "input0",
                        Uri = Output.Tuple(@default.Name, exampleMp4.Name).Apply(values =>
                        {
                            var defaultName = values.Item1;
                            var exampleMp4Name = values.Item2;
                            return $"gs://{defaultName}/{exampleMp4Name}";
                        }),
                    },
                },
                ElementaryStreams = new[]
                {
                    new Gcp.Transcoder.Inputs.JobConfigElementaryStreamArgs
                    {
                        Key = "es_video",
                        VideoStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamArgs
                        {
                            H264 = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamH264Args
                            {
                                Profile = "main",
                                HeightPixels = 600,
                                WidthPixels = 800,
                                BitrateBps = 1000000,
                                FrameRate = 60,
                            },
                        },
                    },
                    new Gcp.Transcoder.Inputs.JobConfigElementaryStreamArgs
                    {
                        Key = "es_audio",
                        AudioStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamAudioStreamArgs
                        {
                            Codec = "aac",
                            ChannelCount = 2,
                            BitrateBps = 160000,
                        },
                    },
                },
                Encryptions = new[]
                {
                    new Gcp.Transcoder.Inputs.JobConfigEncryptionArgs
                    {
                        Id = "aes-128",
                        SecretManagerKeySource = new Gcp.Transcoder.Inputs.JobConfigEncryptionSecretManagerKeySourceArgs
                        {
                            SecretVersion = encryptionKeySecretVersion.Name,
                        },
                        DrmSystems = new Gcp.Transcoder.Inputs.JobConfigEncryptionDrmSystemsArgs
                        {
                            Clearkey = null,
                        },
                        Aes128 = null,
                    },
                    new Gcp.Transcoder.Inputs.JobConfigEncryptionArgs
                    {
                        Id = "cenc",
                        SecretManagerKeySource = new Gcp.Transcoder.Inputs.JobConfigEncryptionSecretManagerKeySourceArgs
                        {
                            SecretVersion = encryptionKeySecretVersion.Name,
                        },
                        DrmSystems = new Gcp.Transcoder.Inputs.JobConfigEncryptionDrmSystemsArgs
                        {
                            Widevine = null,
                        },
                        MpegCenc = new Gcp.Transcoder.Inputs.JobConfigEncryptionMpegCencArgs
                        {
                            Scheme = "cenc",
                        },
                    },
                    new Gcp.Transcoder.Inputs.JobConfigEncryptionArgs
                    {
                        Id = "cbcs",
                        SecretManagerKeySource = new Gcp.Transcoder.Inputs.JobConfigEncryptionSecretManagerKeySourceArgs
                        {
                            SecretVersion = encryptionKeySecretVersion.Name,
                        },
                        DrmSystems = new Gcp.Transcoder.Inputs.JobConfigEncryptionDrmSystemsArgs
                        {
                            Widevine = null,
                        },
                        MpegCenc = new Gcp.Transcoder.Inputs.JobConfigEncryptionMpegCencArgs
                        {
                            Scheme = "cbcs",
                        },
                    },
                },
                MuxStreams = new[]
                {
                    new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs
                    {
                        Key = "ts_aes128",
                        Container = "ts",
                        ElementaryStreams = new[]
                        {
                            "es_video",
                            "es_audio",
                        },
                        SegmentSettings = new Gcp.Transcoder.Inputs.JobConfigMuxStreamSegmentSettingsArgs
                        {
                            SegmentDuration = "6s",
                        },
                        EncryptionId = "aes-128",
                    },
                    new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs
                    {
                        Key = "fmp4_cenc_video",
                        Container = "fmp4",
                        ElementaryStreams = new[]
                        {
                            "es_video",
                        },
                        SegmentSettings = new Gcp.Transcoder.Inputs.JobConfigMuxStreamSegmentSettingsArgs
                        {
                            SegmentDuration = "6s",
                        },
                        EncryptionId = "cenc",
                    },
                    new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs
                    {
                        Key = "fmp4_cenc_audio",
                        Container = "fmp4",
                        ElementaryStreams = new[]
                        {
                            "es_audio",
                        },
                        SegmentSettings = new Gcp.Transcoder.Inputs.JobConfigMuxStreamSegmentSettingsArgs
                        {
                            SegmentDuration = "6s",
                        },
                        EncryptionId = "cenc",
                    },
                    new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs
                    {
                        Key = "fmp4_cbcs_video",
                        Container = "fmp4",
                        ElementaryStreams = new[]
                        {
                            "es_video",
                        },
                        SegmentSettings = new Gcp.Transcoder.Inputs.JobConfigMuxStreamSegmentSettingsArgs
                        {
                            SegmentDuration = "6s",
                        },
                        EncryptionId = "cbcs",
                    },
                    new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs
                    {
                        Key = "fmp4_cbcs_audio",
                        Container = "fmp4",
                        ElementaryStreams = new[]
                        {
                            "es_audio",
                        },
                        SegmentSettings = new Gcp.Transcoder.Inputs.JobConfigMuxStreamSegmentSettingsArgs
                        {
                            SegmentDuration = "6s",
                        },
                        EncryptionId = "cbcs",
                    },
                },
                Manifests = new[]
                {
                    new Gcp.Transcoder.Inputs.JobConfigManifestArgs
                    {
                        FileName = "manifest_aes128.m3u8",
                        Type = "HLS",
                        MuxStreams = new[]
                        {
                            "ts_aes128",
                        },
                    },
                    new Gcp.Transcoder.Inputs.JobConfigManifestArgs
                    {
                        FileName = "manifest_cenc.mpd",
                        Type = "DASH",
                        MuxStreams = new[]
                        {
                            "fmp4_cenc_video",
                            "fmp4_cenc_audio",
                        },
                    },
                    new Gcp.Transcoder.Inputs.JobConfigManifestArgs
                    {
                        FileName = "manifest_cbcs.mpd",
                        Type = "DASH",
                        MuxStreams = new[]
                        {
                            "fmp4_cbcs_video",
                            "fmp4_cbcs_audio",
                        },
                    },
                },
                Output = new Gcp.Transcoder.Inputs.JobConfigOutputArgs
                {
                    Uri = @default.Name.Apply(name => $"gs://{name}/outputs/"),
                },
            },
            Labels = 
            {
                { "label", "key" },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.storage.Bucket;
    import com.pulumi.gcp.storage.BucketArgs;
    import com.pulumi.gcp.storage.BucketObject;
    import com.pulumi.gcp.storage.BucketObjectArgs;
    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.organizations.OrganizationsFunctions;
    import com.pulumi.gcp.organizations.inputs.GetProjectArgs;
    import com.pulumi.gcp.projects.ServiceIdentity;
    import com.pulumi.gcp.projects.ServiceIdentityArgs;
    import com.pulumi.gcp.secretmanager.SecretIamMember;
    import com.pulumi.gcp.secretmanager.SecretIamMemberArgs;
    import com.pulumi.gcp.transcoder.Job;
    import com.pulumi.gcp.transcoder.JobArgs;
    import com.pulumi.gcp.transcoder.inputs.JobConfigArgs;
    import com.pulumi.gcp.transcoder.inputs.JobConfigOutputArgs;
    import com.pulumi.asset.FileAsset;
    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 Bucket("default", BucketArgs.builder()
                .name("transcoder-job")
                .location("US")
                .forceDestroy(true)
                .uniformBucketLevelAccess(true)
                .publicAccessPrevention("enforced")
                .build());
    
            var exampleMp4 = new BucketObject("exampleMp4", BucketObjectArgs.builder()
                .name("example.mp4")
                .source(new FileAsset("./test-fixtures/example.mp4"))
                .bucket(default_.name())
                .build());
    
            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());
    
            final var project = OrganizationsFunctions.getProject();
    
            // this is required to allow the transcoder service identity to access the secret
            var transcoder = new ServiceIdentity("transcoder", ServiceIdentityArgs.builder()
                .project(project.applyValue(getProjectResult -> getProjectResult.projectId()))
                .service("transcoder.googleapis.com")
                .build());
    
            var transcoderEncryptionKeyAccessor = new SecretIamMember("transcoderEncryptionKeyAccessor", SecretIamMemberArgs.builder()
                .secretId(encryptionKey.secretId())
                .project(encryptionKey.project())
                .role("roles/secretmanager.secretAccessor")
                .member(transcoder.email().applyValue(email -> String.format("serviceAccount:%s", email)))
                .build());
    
            var defaultJob = new Job("defaultJob", JobArgs.builder()
                .location("us-central1")
                .config(JobConfigArgs.builder()
                    .inputs(JobConfigInputArgs.builder()
                        .key("input0")
                        .uri(Output.tuple(default_.name(), exampleMp4.name()).applyValue(values -> {
                            var defaultName = values.t1;
                            var exampleMp4Name = values.t2;
                            return String.format("gs://%s/%s", defaultName,exampleMp4Name);
                        }))
                        .build())
                    .elementaryStreams(                
                        JobConfigElementaryStreamArgs.builder()
                            .key("es_video")
                            .videoStream(JobConfigElementaryStreamVideoStreamArgs.builder()
                                .h264(JobConfigElementaryStreamVideoStreamH264Args.builder()
                                    .profile("main")
                                    .heightPixels(600)
                                    .widthPixels(800)
                                    .bitrateBps(1000000)
                                    .frameRate(60)
                                    .build())
                                .build())
                            .build(),
                        JobConfigElementaryStreamArgs.builder()
                            .key("es_audio")
                            .audioStream(JobConfigElementaryStreamAudioStreamArgs.builder()
                                .codec("aac")
                                .channelCount(2)
                                .bitrateBps(160000)
                                .build())
                            .build())
                    .encryptions(                
                        JobConfigEncryptionArgs.builder()
                            .id("aes-128")
                            .secretManagerKeySource(JobConfigEncryptionSecretManagerKeySourceArgs.builder()
                                .secretVersion(encryptionKeySecretVersion.name())
                                .build())
                            .drmSystems(JobConfigEncryptionDrmSystemsArgs.builder()
                                .clearkey()
                                .build())
                            .aes128()
                            .build(),
                        JobConfigEncryptionArgs.builder()
                            .id("cenc")
                            .secretManagerKeySource(JobConfigEncryptionSecretManagerKeySourceArgs.builder()
                                .secretVersion(encryptionKeySecretVersion.name())
                                .build())
                            .drmSystems(JobConfigEncryptionDrmSystemsArgs.builder()
                                .widevine()
                                .build())
                            .mpegCenc(JobConfigEncryptionMpegCencArgs.builder()
                                .scheme("cenc")
                                .build())
                            .build(),
                        JobConfigEncryptionArgs.builder()
                            .id("cbcs")
                            .secretManagerKeySource(JobConfigEncryptionSecretManagerKeySourceArgs.builder()
                                .secretVersion(encryptionKeySecretVersion.name())
                                .build())
                            .drmSystems(JobConfigEncryptionDrmSystemsArgs.builder()
                                .widevine()
                                .build())
                            .mpegCenc(JobConfigEncryptionMpegCencArgs.builder()
                                .scheme("cbcs")
                                .build())
                            .build())
                    .muxStreams(                
                        JobConfigMuxStreamArgs.builder()
                            .key("ts_aes128")
                            .container("ts")
                            .elementaryStreams(                        
                                "es_video",
                                "es_audio")
                            .segmentSettings(JobConfigMuxStreamSegmentSettingsArgs.builder()
                                .segmentDuration("6s")
                                .build())
                            .encryptionId("aes-128")
                            .build(),
                        JobConfigMuxStreamArgs.builder()
                            .key("fmp4_cenc_video")
                            .container("fmp4")
                            .elementaryStreams("es_video")
                            .segmentSettings(JobConfigMuxStreamSegmentSettingsArgs.builder()
                                .segmentDuration("6s")
                                .build())
                            .encryptionId("cenc")
                            .build(),
                        JobConfigMuxStreamArgs.builder()
                            .key("fmp4_cenc_audio")
                            .container("fmp4")
                            .elementaryStreams("es_audio")
                            .segmentSettings(JobConfigMuxStreamSegmentSettingsArgs.builder()
                                .segmentDuration("6s")
                                .build())
                            .encryptionId("cenc")
                            .build(),
                        JobConfigMuxStreamArgs.builder()
                            .key("fmp4_cbcs_video")
                            .container("fmp4")
                            .elementaryStreams("es_video")
                            .segmentSettings(JobConfigMuxStreamSegmentSettingsArgs.builder()
                                .segmentDuration("6s")
                                .build())
                            .encryptionId("cbcs")
                            .build(),
                        JobConfigMuxStreamArgs.builder()
                            .key("fmp4_cbcs_audio")
                            .container("fmp4")
                            .elementaryStreams("es_audio")
                            .segmentSettings(JobConfigMuxStreamSegmentSettingsArgs.builder()
                                .segmentDuration("6s")
                                .build())
                            .encryptionId("cbcs")
                            .build())
                    .manifests(                
                        JobConfigManifestArgs.builder()
                            .fileName("manifest_aes128.m3u8")
                            .type("HLS")
                            .muxStreams("ts_aes128")
                            .build(),
                        JobConfigManifestArgs.builder()
                            .fileName("manifest_cenc.mpd")
                            .type("DASH")
                            .muxStreams(                        
                                "fmp4_cenc_video",
                                "fmp4_cenc_audio")
                            .build(),
                        JobConfigManifestArgs.builder()
                            .fileName("manifest_cbcs.mpd")
                            .type("DASH")
                            .muxStreams(                        
                                "fmp4_cbcs_video",
                                "fmp4_cbcs_audio")
                            .build())
                    .output(JobConfigOutputArgs.builder()
                        .uri(default_.name().applyValue(name -> String.format("gs://%s/outputs/", name)))
                        .build())
                    .build())
                .labels(Map.of("label", "key"))
                .build());
    
        }
    }
    
    resources:
      default:
        type: gcp:storage:Bucket
        properties:
          name: transcoder-job
          location: US
          forceDestroy: true
          uniformBucketLevelAccess: true
          publicAccessPrevention: enforced
      exampleMp4:
        type: gcp:storage:BucketObject
        name: example_mp4
        properties:
          name: example.mp4
          source:
            fn::FileAsset: ./test-fixtures/example.mp4
          bucket: ${default.name}
      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
      # this is required to allow the transcoder service identity to access the secret
      transcoder:
        type: gcp:projects:ServiceIdentity
        properties:
          project: ${project.projectId}
          service: transcoder.googleapis.com
      transcoderEncryptionKeyAccessor:
        type: gcp:secretmanager:SecretIamMember
        name: transcoder_encryption_key_accessor
        properties:
          secretId: ${encryptionKey.secretId}
          project: ${encryptionKey.project}
          role: roles/secretmanager.secretAccessor
          member: serviceAccount:${transcoder.email}
      defaultJob:
        type: gcp:transcoder:Job
        name: default
        properties:
          location: us-central1
          config:
            inputs:
              - key: input0
                uri: gs://${default.name}/${exampleMp4.name}
            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
            output:
              uri: gs://${default.name}/outputs/
          labels:
            label: key
    variables:
      project:
        fn::invoke:
          Function: gcp:organizations:getProject
          Arguments: {}
    

    Transcoder Job Overlays

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    
    const _default = new gcp.storage.Bucket("default", {
        name: "transcoder-job",
        location: "US",
        forceDestroy: true,
        uniformBucketLevelAccess: true,
        publicAccessPrevention: "enforced",
    });
    const exampleMp4 = new gcp.storage.BucketObject("example_mp4", {
        name: "example.mp4",
        source: new pulumi.asset.FileAsset("./test-fixtures/example.mp4"),
        bucket: _default.name,
    });
    const overlayPng = new gcp.storage.BucketObject("overlay_png", {
        name: "overlay.png",
        source: new pulumi.asset.FileAsset("./test-fixtures/overlay.png"),
        bucket: _default.name,
    });
    const defaultJob = new gcp.transcoder.Job("default", {
        location: "us-central1",
        config: {
            inputs: [{
                key: "input0",
                uri: pulumi.interpolate`gs://${_default.name}/${exampleMp4.name}`,
            }],
            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: pulumi.interpolate`gs://${_default.name}/${overlayPng.name}`,
                },
            }],
            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",
                    ],
                },
            ],
            output: {
                uri: pulumi.interpolate`gs://${_default.name}/outputs/`,
            },
        },
        labels: {
            label: "key",
        },
    });
    
    import pulumi
    import pulumi_gcp as gcp
    
    default = gcp.storage.Bucket("default",
        name="transcoder-job",
        location="US",
        force_destroy=True,
        uniform_bucket_level_access=True,
        public_access_prevention="enforced")
    example_mp4 = gcp.storage.BucketObject("example_mp4",
        name="example.mp4",
        source=pulumi.FileAsset("./test-fixtures/example.mp4"),
        bucket=default.name)
    overlay_png = gcp.storage.BucketObject("overlay_png",
        name="overlay.png",
        source=pulumi.FileAsset("./test-fixtures/overlay.png"),
        bucket=default.name)
    default_job = gcp.transcoder.Job("default",
        location="us-central1",
        config={
            "inputs": [{
                "key": "input0",
                "uri": pulumi.Output.all(
                    defaultName=default.name,
                    exampleMp4Name=example_mp4.name
    ).apply(lambda resolved_outputs: f"gs://{resolved_outputs['defaultName']}/{resolved_outputs['exampleMp4Name']}")
    ,
            }],
            "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": pulumi.Output.all(
                        defaultName=default.name,
                        overlayPngName=overlay_png.name
    ).apply(lambda resolved_outputs: f"gs://{resolved_outputs['defaultName']}/{resolved_outputs['overlayPngName']}")
    ,
                },
            }],
            "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",
                    ],
                },
            ],
            "output": {
                "uri": default.name.apply(lambda name: f"gs://{name}/outputs/"),
            },
        },
        labels={
            "label": "key",
        })
    
    package main
    
    import (
    	"fmt"
    
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage"
    	"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 := storage.NewBucket(ctx, "default", &storage.BucketArgs{
    			Name:                     pulumi.String("transcoder-job"),
    			Location:                 pulumi.String("US"),
    			ForceDestroy:             pulumi.Bool(true),
    			UniformBucketLevelAccess: pulumi.Bool(true),
    			PublicAccessPrevention:   pulumi.String("enforced"),
    		})
    		if err != nil {
    			return err
    		}
    		exampleMp4, err := storage.NewBucketObject(ctx, "example_mp4", &storage.BucketObjectArgs{
    			Name:   pulumi.String("example.mp4"),
    			Source: pulumi.NewFileAsset("./test-fixtures/example.mp4"),
    			Bucket: _default.Name,
    		})
    		if err != nil {
    			return err
    		}
    		overlayPng, err := storage.NewBucketObject(ctx, "overlay_png", &storage.BucketObjectArgs{
    			Name:   pulumi.String("overlay.png"),
    			Source: pulumi.NewFileAsset("./test-fixtures/overlay.png"),
    			Bucket: _default.Name,
    		})
    		if err != nil {
    			return err
    		}
    		_, err = transcoder.NewJob(ctx, "default", &transcoder.JobArgs{
    			Location: pulumi.String("us-central1"),
    			Config: &transcoder.JobConfigArgs{
    				Inputs: transcoder.JobConfigInputTypeArray{
    					&transcoder.JobConfigInputTypeArgs{
    						Key: pulumi.String("input0"),
    						Uri: pulumi.All(_default.Name, exampleMp4.Name).ApplyT(func(_args []interface{}) (string, error) {
    							defaultName := _args[0].(string)
    							exampleMp4Name := _args[1].(string)
    							return fmt.Sprintf("gs://%v/%v", defaultName, exampleMp4Name), nil
    						}).(pulumi.StringOutput),
    					},
    				},
    				EditLists: transcoder.JobConfigEditListArray{
    					&transcoder.JobConfigEditListArgs{
    						Key: pulumi.String("atom0"),
    						Inputs: pulumi.StringArray{
    							pulumi.String("input0"),
    						},
    						StartTimeOffset: pulumi.String("0s"),
    					},
    				},
    				AdBreaks: transcoder.JobConfigAdBreakArray{
    					&transcoder.JobConfigAdBreakArgs{
    						StartTimeOffset: pulumi.String("3.500s"),
    					},
    				},
    				Overlays: transcoder.JobConfigOverlayArray{
    					&transcoder.JobConfigOverlayArgs{
    						Animations: transcoder.JobConfigOverlayAnimationArray{
    							&transcoder.JobConfigOverlayAnimationArgs{
    								AnimationFade: &transcoder.JobConfigOverlayAnimationAnimationFadeArgs{
    									FadeType:        pulumi.String("FADE_IN"),
    									StartTimeOffset: pulumi.String("1.500s"),
    									EndTimeOffset:   pulumi.String("3.500s"),
    									Xy: &transcoder.JobConfigOverlayAnimationAnimationFadeXyArgs{
    										X: pulumi.Float64(1),
    										Y: pulumi.Float64(0.5),
    									},
    								},
    							},
    						},
    						Image: &transcoder.JobConfigOverlayImageArgs{
    							Uri: pulumi.All(_default.Name, overlayPng.Name).ApplyT(func(_args []interface{}) (string, error) {
    								defaultName := _args[0].(string)
    								overlayPngName := _args[1].(string)
    								return fmt.Sprintf("gs://%v/%v", defaultName, overlayPngName), nil
    							}).(pulumi.StringOutput),
    						},
    					},
    				},
    				ElementaryStreams: transcoder.JobConfigElementaryStreamArray{
    					&transcoder.JobConfigElementaryStreamArgs{
    						Key: pulumi.String("video-stream0"),
    						VideoStream: &transcoder.JobConfigElementaryStreamVideoStreamArgs{
    							H264: &transcoder.JobConfigElementaryStreamVideoStreamH264Args{
    								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.JobConfigElementaryStreamArgs{
    						Key: pulumi.String("video-stream1"),
    						VideoStream: &transcoder.JobConfigElementaryStreamVideoStreamArgs{
    							H264: &transcoder.JobConfigElementaryStreamVideoStreamH264Args{
    								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.JobConfigElementaryStreamArgs{
    						Key: pulumi.String("audio-stream0"),
    						AudioStream: &transcoder.JobConfigElementaryStreamAudioStreamArgs{
    							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.JobConfigMuxStreamArray{
    					&transcoder.JobConfigMuxStreamArgs{
    						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.JobConfigMuxStreamArgs{
    						Key:       pulumi.String("hd"),
    						FileName:  pulumi.String("hd.mp4"),
    						Container: pulumi.String("mp4"),
    						ElementaryStreams: pulumi.StringArray{
    							pulumi.String("video-stream1"),
    							pulumi.String("audio-stream0"),
    						},
    					},
    				},
    				Output: &transcoder.JobConfigOutputTypeArgs{
    					Uri: _default.Name.ApplyT(func(name string) (string, error) {
    						return fmt.Sprintf("gs://%v/outputs/", name), nil
    					}).(pulumi.StringOutput),
    				},
    			},
    			Labels: pulumi.StringMap{
    				"label": pulumi.String("key"),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Gcp = Pulumi.Gcp;
    
    return await Deployment.RunAsync(() => 
    {
        var @default = new Gcp.Storage.Bucket("default", new()
        {
            Name = "transcoder-job",
            Location = "US",
            ForceDestroy = true,
            UniformBucketLevelAccess = true,
            PublicAccessPrevention = "enforced",
        });
    
        var exampleMp4 = new Gcp.Storage.BucketObject("example_mp4", new()
        {
            Name = "example.mp4",
            Source = new FileAsset("./test-fixtures/example.mp4"),
            Bucket = @default.Name,
        });
    
        var overlayPng = new Gcp.Storage.BucketObject("overlay_png", new()
        {
            Name = "overlay.png",
            Source = new FileAsset("./test-fixtures/overlay.png"),
            Bucket = @default.Name,
        });
    
        var defaultJob = new Gcp.Transcoder.Job("default", new()
        {
            Location = "us-central1",
            Config = new Gcp.Transcoder.Inputs.JobConfigArgs
            {
                Inputs = new[]
                {
                    new Gcp.Transcoder.Inputs.JobConfigInputArgs
                    {
                        Key = "input0",
                        Uri = Output.Tuple(@default.Name, exampleMp4.Name).Apply(values =>
                        {
                            var defaultName = values.Item1;
                            var exampleMp4Name = values.Item2;
                            return $"gs://{defaultName}/{exampleMp4Name}";
                        }),
                    },
                },
                EditLists = new[]
                {
                    new Gcp.Transcoder.Inputs.JobConfigEditListArgs
                    {
                        Key = "atom0",
                        Inputs = new[]
                        {
                            "input0",
                        },
                        StartTimeOffset = "0s",
                    },
                },
                AdBreaks = new[]
                {
                    new Gcp.Transcoder.Inputs.JobConfigAdBreakArgs
                    {
                        StartTimeOffset = "3.500s",
                    },
                },
                Overlays = new[]
                {
                    new Gcp.Transcoder.Inputs.JobConfigOverlayArgs
                    {
                        Animations = new[]
                        {
                            new Gcp.Transcoder.Inputs.JobConfigOverlayAnimationArgs
                            {
                                AnimationFade = new Gcp.Transcoder.Inputs.JobConfigOverlayAnimationAnimationFadeArgs
                                {
                                    FadeType = "FADE_IN",
                                    StartTimeOffset = "1.500s",
                                    EndTimeOffset = "3.500s",
                                    Xy = new Gcp.Transcoder.Inputs.JobConfigOverlayAnimationAnimationFadeXyArgs
                                    {
                                        X = 1,
                                        Y = 0.5,
                                    },
                                },
                            },
                        },
                        Image = new Gcp.Transcoder.Inputs.JobConfigOverlayImageArgs
                        {
                            Uri = Output.Tuple(@default.Name, overlayPng.Name).Apply(values =>
                            {
                                var defaultName = values.Item1;
                                var overlayPngName = values.Item2;
                                return $"gs://{defaultName}/{overlayPngName}";
                            }),
                        },
                    },
                },
                ElementaryStreams = new[]
                {
                    new Gcp.Transcoder.Inputs.JobConfigElementaryStreamArgs
                    {
                        Key = "video-stream0",
                        VideoStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamArgs
                        {
                            H264 = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamH264Args
                            {
                                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.JobConfigElementaryStreamArgs
                    {
                        Key = "video-stream1",
                        VideoStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamArgs
                        {
                            H264 = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamH264Args
                            {
                                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.JobConfigElementaryStreamArgs
                    {
                        Key = "audio-stream0",
                        AudioStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamAudioStreamArgs
                        {
                            Codec = "aac",
                            BitrateBps = 64000,
                            ChannelCount = 2,
                            ChannelLayouts = new[]
                            {
                                "fl",
                                "fr",
                            },
                            SampleRateHertz = 48000,
                        },
                    },
                },
                MuxStreams = new[]
                {
                    new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs
                    {
                        Key = "sd",
                        FileName = "sd.mp4",
                        Container = "mp4",
                        ElementaryStreams = new[]
                        {
                            "video-stream0",
                            "audio-stream0",
                        },
                    },
                    new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs
                    {
                        Key = "hd",
                        FileName = "hd.mp4",
                        Container = "mp4",
                        ElementaryStreams = new[]
                        {
                            "video-stream1",
                            "audio-stream0",
                        },
                    },
                },
                Output = new Gcp.Transcoder.Inputs.JobConfigOutputArgs
                {
                    Uri = @default.Name.Apply(name => $"gs://{name}/outputs/"),
                },
            },
            Labels = 
            {
                { "label", "key" },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.storage.Bucket;
    import com.pulumi.gcp.storage.BucketArgs;
    import com.pulumi.gcp.storage.BucketObject;
    import com.pulumi.gcp.storage.BucketObjectArgs;
    import com.pulumi.gcp.transcoder.Job;
    import com.pulumi.gcp.transcoder.JobArgs;
    import com.pulumi.gcp.transcoder.inputs.JobConfigArgs;
    import com.pulumi.gcp.transcoder.inputs.JobConfigOutputArgs;
    import com.pulumi.asset.FileAsset;
    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 Bucket("default", BucketArgs.builder()
                .name("transcoder-job")
                .location("US")
                .forceDestroy(true)
                .uniformBucketLevelAccess(true)
                .publicAccessPrevention("enforced")
                .build());
    
            var exampleMp4 = new BucketObject("exampleMp4", BucketObjectArgs.builder()
                .name("example.mp4")
                .source(new FileAsset("./test-fixtures/example.mp4"))
                .bucket(default_.name())
                .build());
    
            var overlayPng = new BucketObject("overlayPng", BucketObjectArgs.builder()
                .name("overlay.png")
                .source(new FileAsset("./test-fixtures/overlay.png"))
                .bucket(default_.name())
                .build());
    
            var defaultJob = new Job("defaultJob", JobArgs.builder()
                .location("us-central1")
                .config(JobConfigArgs.builder()
                    .inputs(JobConfigInputArgs.builder()
                        .key("input0")
                        .uri(Output.tuple(default_.name(), exampleMp4.name()).applyValue(values -> {
                            var defaultName = values.t1;
                            var exampleMp4Name = values.t2;
                            return String.format("gs://%s/%s", defaultName,exampleMp4Name);
                        }))
                        .build())
                    .editLists(JobConfigEditListArgs.builder()
                        .key("atom0")
                        .inputs("input0")
                        .startTimeOffset("0s")
                        .build())
                    .adBreaks(JobConfigAdBreakArgs.builder()
                        .startTimeOffset("3.500s")
                        .build())
                    .overlays(JobConfigOverlayArgs.builder()
                        .animations(JobConfigOverlayAnimationArgs.builder()
                            .animationFade(JobConfigOverlayAnimationAnimationFadeArgs.builder()
                                .fadeType("FADE_IN")
                                .startTimeOffset("1.500s")
                                .endTimeOffset("3.500s")
                                .xy(JobConfigOverlayAnimationAnimationFadeXyArgs.builder()
                                    .x(1)
                                    .y(0.5)
                                    .build())
                                .build())
                            .build())
                        .image(JobConfigOverlayImageArgs.builder()
                            .uri(Output.tuple(default_.name(), overlayPng.name()).applyValue(values -> {
                                var defaultName = values.t1;
                                var overlayPngName = values.t2;
                                return String.format("gs://%s/%s", defaultName,overlayPngName);
                            }))
                            .build())
                        .build())
                    .elementaryStreams(                
                        JobConfigElementaryStreamArgs.builder()
                            .key("video-stream0")
                            .videoStream(JobConfigElementaryStreamVideoStreamArgs.builder()
                                .h264(JobConfigElementaryStreamVideoStreamH264Args.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(),
                        JobConfigElementaryStreamArgs.builder()
                            .key("video-stream1")
                            .videoStream(JobConfigElementaryStreamVideoStreamArgs.builder()
                                .h264(JobConfigElementaryStreamVideoStreamH264Args.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(),
                        JobConfigElementaryStreamArgs.builder()
                            .key("audio-stream0")
                            .audioStream(JobConfigElementaryStreamAudioStreamArgs.builder()
                                .codec("aac")
                                .bitrateBps(64000)
                                .channelCount(2)
                                .channelLayouts(                            
                                    "fl",
                                    "fr")
                                .sampleRateHertz(48000)
                                .build())
                            .build())
                    .muxStreams(                
                        JobConfigMuxStreamArgs.builder()
                            .key("sd")
                            .fileName("sd.mp4")
                            .container("mp4")
                            .elementaryStreams(                        
                                "video-stream0",
                                "audio-stream0")
                            .build(),
                        JobConfigMuxStreamArgs.builder()
                            .key("hd")
                            .fileName("hd.mp4")
                            .container("mp4")
                            .elementaryStreams(                        
                                "video-stream1",
                                "audio-stream0")
                            .build())
                    .output(JobConfigOutputArgs.builder()
                        .uri(default_.name().applyValue(name -> String.format("gs://%s/outputs/", name)))
                        .build())
                    .build())
                .labels(Map.of("label", "key"))
                .build());
    
        }
    }
    
    resources:
      default:
        type: gcp:storage:Bucket
        properties:
          name: transcoder-job
          location: US
          forceDestroy: true
          uniformBucketLevelAccess: true
          publicAccessPrevention: enforced
      exampleMp4:
        type: gcp:storage:BucketObject
        name: example_mp4
        properties:
          name: example.mp4
          source:
            fn::FileAsset: ./test-fixtures/example.mp4
          bucket: ${default.name}
      overlayPng:
        type: gcp:storage:BucketObject
        name: overlay_png
        properties:
          name: overlay.png
          source:
            fn::FileAsset: ./test-fixtures/overlay.png
          bucket: ${default.name}
      defaultJob:
        type: gcp:transcoder:Job
        name: default
        properties:
          location: us-central1
          config:
            inputs:
              - key: input0
                uri: gs://${default.name}/${exampleMp4.name}
            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://${default.name}/${overlayPng.name}
            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
            output:
              uri: gs://${default.name}/outputs/
          labels:
            label: key
    

    Transcoder Job Manifests

    import * as pulumi from "@pulumi/pulumi";
    import * as gcp from "@pulumi/gcp";
    
    const _default = new gcp.storage.Bucket("default", {
        name: "transcoder-job",
        location: "US",
        forceDestroy: true,
        uniformBucketLevelAccess: true,
        publicAccessPrevention: "enforced",
    });
    const exampleMp4 = new gcp.storage.BucketObject("example_mp4", {
        name: "example.mp4",
        source: new pulumi.asset.FileAsset("./test-fixtures/example.mp4"),
        bucket: _default.name,
    });
    const defaultJob = new gcp.transcoder.Job("default", {
        location: "us-central1",
        config: {
            inputs: [{
                key: "input0",
                uri: pulumi.interpolate`gs://${_default.name}/${exampleMp4.name}`,
            }],
            editLists: [{
                key: "atom0",
                startTimeOffset: "0s",
                inputs: ["input0"],
            }],
            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",
                    ],
                },
                {
                    key: "media-sd",
                    fileName: "media-sd.ts",
                    container: "ts",
                    elementaryStreams: [
                        "video-stream0",
                        "audio-stream0",
                    ],
                },
                {
                    key: "media-hd",
                    fileName: "media-hd.ts",
                    container: "ts",
                    elementaryStreams: [
                        "video-stream1",
                        "audio-stream0",
                    ],
                },
                {
                    key: "video-only-sd",
                    fileName: "video-only-sd.m4s",
                    container: "fmp4",
                    elementaryStreams: ["video-stream0"],
                },
                {
                    key: "video-only-hd",
                    fileName: "video-only-hd.m4s",
                    container: "fmp4",
                    elementaryStreams: ["video-stream1"],
                },
                {
                    key: "audio-only",
                    fileName: "audio-only.m4s",
                    container: "fmp4",
                    elementaryStreams: ["audio-stream0"],
                },
            ],
            manifests: [
                {
                    fileName: "manifest.m3u8",
                    type: "HLS",
                    muxStreams: [
                        "media-sd",
                        "media-hd",
                    ],
                },
                {
                    fileName: "manifest.mpd",
                    type: "DASH",
                    muxStreams: [
                        "video-only-sd",
                        "video-only-hd",
                        "audio-only",
                    ],
                },
            ],
            output: {
                uri: pulumi.interpolate`gs://${_default.name}/outputs/`,
            },
        },
        labels: {
            label: "key",
        },
    });
    
    import pulumi
    import pulumi_gcp as gcp
    
    default = gcp.storage.Bucket("default",
        name="transcoder-job",
        location="US",
        force_destroy=True,
        uniform_bucket_level_access=True,
        public_access_prevention="enforced")
    example_mp4 = gcp.storage.BucketObject("example_mp4",
        name="example.mp4",
        source=pulumi.FileAsset("./test-fixtures/example.mp4"),
        bucket=default.name)
    default_job = gcp.transcoder.Job("default",
        location="us-central1",
        config={
            "inputs": [{
                "key": "input0",
                "uri": pulumi.Output.all(
                    defaultName=default.name,
                    exampleMp4Name=example_mp4.name
    ).apply(lambda resolved_outputs: f"gs://{resolved_outputs['defaultName']}/{resolved_outputs['exampleMp4Name']}")
    ,
            }],
            "edit_lists": [{
                "key": "atom0",
                "start_time_offset": "0s",
                "inputs": ["input0"],
            }],
            "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",
                    ],
                },
                {
                    "key": "media-sd",
                    "file_name": "media-sd.ts",
                    "container": "ts",
                    "elementary_streams": [
                        "video-stream0",
                        "audio-stream0",
                    ],
                },
                {
                    "key": "media-hd",
                    "file_name": "media-hd.ts",
                    "container": "ts",
                    "elementary_streams": [
                        "video-stream1",
                        "audio-stream0",
                    ],
                },
                {
                    "key": "video-only-sd",
                    "file_name": "video-only-sd.m4s",
                    "container": "fmp4",
                    "elementary_streams": ["video-stream0"],
                },
                {
                    "key": "video-only-hd",
                    "file_name": "video-only-hd.m4s",
                    "container": "fmp4",
                    "elementary_streams": ["video-stream1"],
                },
                {
                    "key": "audio-only",
                    "file_name": "audio-only.m4s",
                    "container": "fmp4",
                    "elementary_streams": ["audio-stream0"],
                },
            ],
            "manifests": [
                {
                    "file_name": "manifest.m3u8",
                    "type": "HLS",
                    "mux_streams": [
                        "media-sd",
                        "media-hd",
                    ],
                },
                {
                    "file_name": "manifest.mpd",
                    "type": "DASH",
                    "mux_streams": [
                        "video-only-sd",
                        "video-only-hd",
                        "audio-only",
                    ],
                },
            ],
            "output": {
                "uri": default.name.apply(lambda name: f"gs://{name}/outputs/"),
            },
        },
        labels={
            "label": "key",
        })
    
    package main
    
    import (
    	"fmt"
    
    	"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage"
    	"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 := storage.NewBucket(ctx, "default", &storage.BucketArgs{
    			Name:                     pulumi.String("transcoder-job"),
    			Location:                 pulumi.String("US"),
    			ForceDestroy:             pulumi.Bool(true),
    			UniformBucketLevelAccess: pulumi.Bool(true),
    			PublicAccessPrevention:   pulumi.String("enforced"),
    		})
    		if err != nil {
    			return err
    		}
    		exampleMp4, err := storage.NewBucketObject(ctx, "example_mp4", &storage.BucketObjectArgs{
    			Name:   pulumi.String("example.mp4"),
    			Source: pulumi.NewFileAsset("./test-fixtures/example.mp4"),
    			Bucket: _default.Name,
    		})
    		if err != nil {
    			return err
    		}
    		_, err = transcoder.NewJob(ctx, "default", &transcoder.JobArgs{
    			Location: pulumi.String("us-central1"),
    			Config: &transcoder.JobConfigArgs{
    				Inputs: transcoder.JobConfigInputTypeArray{
    					&transcoder.JobConfigInputTypeArgs{
    						Key: pulumi.String("input0"),
    						Uri: pulumi.All(_default.Name, exampleMp4.Name).ApplyT(func(_args []interface{}) (string, error) {
    							defaultName := _args[0].(string)
    							exampleMp4Name := _args[1].(string)
    							return fmt.Sprintf("gs://%v/%v", defaultName, exampleMp4Name), nil
    						}).(pulumi.StringOutput),
    					},
    				},
    				EditLists: transcoder.JobConfigEditListArray{
    					&transcoder.JobConfigEditListArgs{
    						Key:             pulumi.String("atom0"),
    						StartTimeOffset: pulumi.String("0s"),
    						Inputs: pulumi.StringArray{
    							pulumi.String("input0"),
    						},
    					},
    				},
    				AdBreaks: transcoder.JobConfigAdBreakArray{
    					&transcoder.JobConfigAdBreakArgs{
    						StartTimeOffset: pulumi.String("3.500s"),
    					},
    				},
    				ElementaryStreams: transcoder.JobConfigElementaryStreamArray{
    					&transcoder.JobConfigElementaryStreamArgs{
    						Key: pulumi.String("video-stream0"),
    						VideoStream: &transcoder.JobConfigElementaryStreamVideoStreamArgs{
    							H264: &transcoder.JobConfigElementaryStreamVideoStreamH264Args{
    								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.JobConfigElementaryStreamArgs{
    						Key: pulumi.String("video-stream1"),
    						VideoStream: &transcoder.JobConfigElementaryStreamVideoStreamArgs{
    							H264: &transcoder.JobConfigElementaryStreamVideoStreamH264Args{
    								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.JobConfigElementaryStreamArgs{
    						Key: pulumi.String("audio-stream0"),
    						AudioStream: &transcoder.JobConfigElementaryStreamAudioStreamArgs{
    							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.JobConfigMuxStreamArray{
    					&transcoder.JobConfigMuxStreamArgs{
    						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.JobConfigMuxStreamArgs{
    						Key:       pulumi.String("hd"),
    						FileName:  pulumi.String("hd.mp4"),
    						Container: pulumi.String("mp4"),
    						ElementaryStreams: pulumi.StringArray{
    							pulumi.String("video-stream1"),
    							pulumi.String("audio-stream0"),
    						},
    					},
    					&transcoder.JobConfigMuxStreamArgs{
    						Key:       pulumi.String("media-sd"),
    						FileName:  pulumi.String("media-sd.ts"),
    						Container: pulumi.String("ts"),
    						ElementaryStreams: pulumi.StringArray{
    							pulumi.String("video-stream0"),
    							pulumi.String("audio-stream0"),
    						},
    					},
    					&transcoder.JobConfigMuxStreamArgs{
    						Key:       pulumi.String("media-hd"),
    						FileName:  pulumi.String("media-hd.ts"),
    						Container: pulumi.String("ts"),
    						ElementaryStreams: pulumi.StringArray{
    							pulumi.String("video-stream1"),
    							pulumi.String("audio-stream0"),
    						},
    					},
    					&transcoder.JobConfigMuxStreamArgs{
    						Key:       pulumi.String("video-only-sd"),
    						FileName:  pulumi.String("video-only-sd.m4s"),
    						Container: pulumi.String("fmp4"),
    						ElementaryStreams: pulumi.StringArray{
    							pulumi.String("video-stream0"),
    						},
    					},
    					&transcoder.JobConfigMuxStreamArgs{
    						Key:       pulumi.String("video-only-hd"),
    						FileName:  pulumi.String("video-only-hd.m4s"),
    						Container: pulumi.String("fmp4"),
    						ElementaryStreams: pulumi.StringArray{
    							pulumi.String("video-stream1"),
    						},
    					},
    					&transcoder.JobConfigMuxStreamArgs{
    						Key:       pulumi.String("audio-only"),
    						FileName:  pulumi.String("audio-only.m4s"),
    						Container: pulumi.String("fmp4"),
    						ElementaryStreams: pulumi.StringArray{
    							pulumi.String("audio-stream0"),
    						},
    					},
    				},
    				Manifests: transcoder.JobConfigManifestArray{
    					&transcoder.JobConfigManifestArgs{
    						FileName: pulumi.String("manifest.m3u8"),
    						Type:     pulumi.String("HLS"),
    						MuxStreams: pulumi.StringArray{
    							pulumi.String("media-sd"),
    							pulumi.String("media-hd"),
    						},
    					},
    					&transcoder.JobConfigManifestArgs{
    						FileName: pulumi.String("manifest.mpd"),
    						Type:     pulumi.String("DASH"),
    						MuxStreams: pulumi.StringArray{
    							pulumi.String("video-only-sd"),
    							pulumi.String("video-only-hd"),
    							pulumi.String("audio-only"),
    						},
    					},
    				},
    				Output: &transcoder.JobConfigOutputTypeArgs{
    					Uri: _default.Name.ApplyT(func(name string) (string, error) {
    						return fmt.Sprintf("gs://%v/outputs/", name), nil
    					}).(pulumi.StringOutput),
    				},
    			},
    			Labels: pulumi.StringMap{
    				"label": pulumi.String("key"),
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Gcp = Pulumi.Gcp;
    
    return await Deployment.RunAsync(() => 
    {
        var @default = new Gcp.Storage.Bucket("default", new()
        {
            Name = "transcoder-job",
            Location = "US",
            ForceDestroy = true,
            UniformBucketLevelAccess = true,
            PublicAccessPrevention = "enforced",
        });
    
        var exampleMp4 = new Gcp.Storage.BucketObject("example_mp4", new()
        {
            Name = "example.mp4",
            Source = new FileAsset("./test-fixtures/example.mp4"),
            Bucket = @default.Name,
        });
    
        var defaultJob = new Gcp.Transcoder.Job("default", new()
        {
            Location = "us-central1",
            Config = new Gcp.Transcoder.Inputs.JobConfigArgs
            {
                Inputs = new[]
                {
                    new Gcp.Transcoder.Inputs.JobConfigInputArgs
                    {
                        Key = "input0",
                        Uri = Output.Tuple(@default.Name, exampleMp4.Name).Apply(values =>
                        {
                            var defaultName = values.Item1;
                            var exampleMp4Name = values.Item2;
                            return $"gs://{defaultName}/{exampleMp4Name}";
                        }),
                    },
                },
                EditLists = new[]
                {
                    new Gcp.Transcoder.Inputs.JobConfigEditListArgs
                    {
                        Key = "atom0",
                        StartTimeOffset = "0s",
                        Inputs = new[]
                        {
                            "input0",
                        },
                    },
                },
                AdBreaks = new[]
                {
                    new Gcp.Transcoder.Inputs.JobConfigAdBreakArgs
                    {
                        StartTimeOffset = "3.500s",
                    },
                },
                ElementaryStreams = new[]
                {
                    new Gcp.Transcoder.Inputs.JobConfigElementaryStreamArgs
                    {
                        Key = "video-stream0",
                        VideoStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamArgs
                        {
                            H264 = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamH264Args
                            {
                                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.JobConfigElementaryStreamArgs
                    {
                        Key = "video-stream1",
                        VideoStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamArgs
                        {
                            H264 = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamH264Args
                            {
                                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.JobConfigElementaryStreamArgs
                    {
                        Key = "audio-stream0",
                        AudioStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamAudioStreamArgs
                        {
                            Codec = "aac",
                            BitrateBps = 64000,
                            ChannelCount = 2,
                            ChannelLayouts = new[]
                            {
                                "fl",
                                "fr",
                            },
                            SampleRateHertz = 48000,
                        },
                    },
                },
                MuxStreams = new[]
                {
                    new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs
                    {
                        Key = "sd",
                        FileName = "sd.mp4",
                        Container = "mp4",
                        ElementaryStreams = new[]
                        {
                            "video-stream0",
                            "audio-stream0",
                        },
                    },
                    new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs
                    {
                        Key = "hd",
                        FileName = "hd.mp4",
                        Container = "mp4",
                        ElementaryStreams = new[]
                        {
                            "video-stream1",
                            "audio-stream0",
                        },
                    },
                    new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs
                    {
                        Key = "media-sd",
                        FileName = "media-sd.ts",
                        Container = "ts",
                        ElementaryStreams = new[]
                        {
                            "video-stream0",
                            "audio-stream0",
                        },
                    },
                    new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs
                    {
                        Key = "media-hd",
                        FileName = "media-hd.ts",
                        Container = "ts",
                        ElementaryStreams = new[]
                        {
                            "video-stream1",
                            "audio-stream0",
                        },
                    },
                    new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs
                    {
                        Key = "video-only-sd",
                        FileName = "video-only-sd.m4s",
                        Container = "fmp4",
                        ElementaryStreams = new[]
                        {
                            "video-stream0",
                        },
                    },
                    new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs
                    {
                        Key = "video-only-hd",
                        FileName = "video-only-hd.m4s",
                        Container = "fmp4",
                        ElementaryStreams = new[]
                        {
                            "video-stream1",
                        },
                    },
                    new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs
                    {
                        Key = "audio-only",
                        FileName = "audio-only.m4s",
                        Container = "fmp4",
                        ElementaryStreams = new[]
                        {
                            "audio-stream0",
                        },
                    },
                },
                Manifests = new[]
                {
                    new Gcp.Transcoder.Inputs.JobConfigManifestArgs
                    {
                        FileName = "manifest.m3u8",
                        Type = "HLS",
                        MuxStreams = new[]
                        {
                            "media-sd",
                            "media-hd",
                        },
                    },
                    new Gcp.Transcoder.Inputs.JobConfigManifestArgs
                    {
                        FileName = "manifest.mpd",
                        Type = "DASH",
                        MuxStreams = new[]
                        {
                            "video-only-sd",
                            "video-only-hd",
                            "audio-only",
                        },
                    },
                },
                Output = new Gcp.Transcoder.Inputs.JobConfigOutputArgs
                {
                    Uri = @default.Name.Apply(name => $"gs://{name}/outputs/"),
                },
            },
            Labels = 
            {
                { "label", "key" },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.gcp.storage.Bucket;
    import com.pulumi.gcp.storage.BucketArgs;
    import com.pulumi.gcp.storage.BucketObject;
    import com.pulumi.gcp.storage.BucketObjectArgs;
    import com.pulumi.gcp.transcoder.Job;
    import com.pulumi.gcp.transcoder.JobArgs;
    import com.pulumi.gcp.transcoder.inputs.JobConfigArgs;
    import com.pulumi.gcp.transcoder.inputs.JobConfigOutputArgs;
    import com.pulumi.asset.FileAsset;
    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 Bucket("default", BucketArgs.builder()
                .name("transcoder-job")
                .location("US")
                .forceDestroy(true)
                .uniformBucketLevelAccess(true)
                .publicAccessPrevention("enforced")
                .build());
    
            var exampleMp4 = new BucketObject("exampleMp4", BucketObjectArgs.builder()
                .name("example.mp4")
                .source(new FileAsset("./test-fixtures/example.mp4"))
                .bucket(default_.name())
                .build());
    
            var defaultJob = new Job("defaultJob", JobArgs.builder()
                .location("us-central1")
                .config(JobConfigArgs.builder()
                    .inputs(JobConfigInputArgs.builder()
                        .key("input0")
                        .uri(Output.tuple(default_.name(), exampleMp4.name()).applyValue(values -> {
                            var defaultName = values.t1;
                            var exampleMp4Name = values.t2;
                            return String.format("gs://%s/%s", defaultName,exampleMp4Name);
                        }))
                        .build())
                    .editLists(JobConfigEditListArgs.builder()
                        .key("atom0")
                        .startTimeOffset("0s")
                        .inputs("input0")
                        .build())
                    .adBreaks(JobConfigAdBreakArgs.builder()
                        .startTimeOffset("3.500s")
                        .build())
                    .elementaryStreams(                
                        JobConfigElementaryStreamArgs.builder()
                            .key("video-stream0")
                            .videoStream(JobConfigElementaryStreamVideoStreamArgs.builder()
                                .h264(JobConfigElementaryStreamVideoStreamH264Args.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(),
                        JobConfigElementaryStreamArgs.builder()
                            .key("video-stream1")
                            .videoStream(JobConfigElementaryStreamVideoStreamArgs.builder()
                                .h264(JobConfigElementaryStreamVideoStreamH264Args.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(),
                        JobConfigElementaryStreamArgs.builder()
                            .key("audio-stream0")
                            .audioStream(JobConfigElementaryStreamAudioStreamArgs.builder()
                                .codec("aac")
                                .bitrateBps(64000)
                                .channelCount(2)
                                .channelLayouts(                            
                                    "fl",
                                    "fr")
                                .sampleRateHertz(48000)
                                .build())
                            .build())
                    .muxStreams(                
                        JobConfigMuxStreamArgs.builder()
                            .key("sd")
                            .fileName("sd.mp4")
                            .container("mp4")
                            .elementaryStreams(                        
                                "video-stream0",
                                "audio-stream0")
                            .build(),
                        JobConfigMuxStreamArgs.builder()
                            .key("hd")
                            .fileName("hd.mp4")
                            .container("mp4")
                            .elementaryStreams(                        
                                "video-stream1",
                                "audio-stream0")
                            .build(),
                        JobConfigMuxStreamArgs.builder()
                            .key("media-sd")
                            .fileName("media-sd.ts")
                            .container("ts")
                            .elementaryStreams(                        
                                "video-stream0",
                                "audio-stream0")
                            .build(),
                        JobConfigMuxStreamArgs.builder()
                            .key("media-hd")
                            .fileName("media-hd.ts")
                            .container("ts")
                            .elementaryStreams(                        
                                "video-stream1",
                                "audio-stream0")
                            .build(),
                        JobConfigMuxStreamArgs.builder()
                            .key("video-only-sd")
                            .fileName("video-only-sd.m4s")
                            .container("fmp4")
                            .elementaryStreams("video-stream0")
                            .build(),
                        JobConfigMuxStreamArgs.builder()
                            .key("video-only-hd")
                            .fileName("video-only-hd.m4s")
                            .container("fmp4")
                            .elementaryStreams("video-stream1")
                            .build(),
                        JobConfigMuxStreamArgs.builder()
                            .key("audio-only")
                            .fileName("audio-only.m4s")
                            .container("fmp4")
                            .elementaryStreams("audio-stream0")
                            .build())
                    .manifests(                
                        JobConfigManifestArgs.builder()
                            .fileName("manifest.m3u8")
                            .type("HLS")
                            .muxStreams(                        
                                "media-sd",
                                "media-hd")
                            .build(),
                        JobConfigManifestArgs.builder()
                            .fileName("manifest.mpd")
                            .type("DASH")
                            .muxStreams(                        
                                "video-only-sd",
                                "video-only-hd",
                                "audio-only")
                            .build())
                    .output(JobConfigOutputArgs.builder()
                        .uri(default_.name().applyValue(name -> String.format("gs://%s/outputs/", name)))
                        .build())
                    .build())
                .labels(Map.of("label", "key"))
                .build());
    
        }
    }
    
    resources:
      default:
        type: gcp:storage:Bucket
        properties:
          name: transcoder-job
          location: US
          forceDestroy: true
          uniformBucketLevelAccess: true
          publicAccessPrevention: enforced
      exampleMp4:
        type: gcp:storage:BucketObject
        name: example_mp4
        properties:
          name: example.mp4
          source:
            fn::FileAsset: ./test-fixtures/example.mp4
          bucket: ${default.name}
      defaultJob:
        type: gcp:transcoder:Job
        name: default
        properties:
          location: us-central1
          config:
            inputs:
              - key: input0
                uri: gs://${default.name}/${exampleMp4.name}
            editLists:
              - key: atom0
                startTimeOffset: 0s
                inputs:
                  - input0
            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
              - key: media-sd
                fileName: media-sd.ts
                container: ts
                elementaryStreams:
                  - video-stream0
                  - audio-stream0
              - key: media-hd
                fileName: media-hd.ts
                container: ts
                elementaryStreams:
                  - video-stream1
                  - audio-stream0
              - key: video-only-sd
                fileName: video-only-sd.m4s
                container: fmp4
                elementaryStreams:
                  - video-stream0
              - key: video-only-hd
                fileName: video-only-hd.m4s
                container: fmp4
                elementaryStreams:
                  - video-stream1
              - key: audio-only
                fileName: audio-only.m4s
                container: fmp4
                elementaryStreams:
                  - audio-stream0
            manifests:
              - fileName: manifest.m3u8
                type: HLS
                muxStreams:
                  - media-sd
                  - media-hd
              - fileName: manifest.mpd
                type: DASH
                muxStreams:
                  - video-only-sd
                  - video-only-hd
                  - audio-only
            output:
              uri: gs://${default.name}/outputs/
          labels:
            label: key
    

    Create Job Resource

    Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.

    Constructor syntax

    new Job(name: string, args: JobArgs, opts?: CustomResourceOptions);
    @overload
    def Job(resource_name: str,
            args: JobArgs,
            opts: Optional[ResourceOptions] = None)
    
    @overload
    def Job(resource_name: str,
            opts: Optional[ResourceOptions] = None,
            location: Optional[str] = None,
            config: Optional[JobConfigArgs] = None,
            labels: Optional[Mapping[str, str]] = None,
            project: Optional[str] = None,
            template_id: Optional[str] = None)
    func NewJob(ctx *Context, name string, args JobArgs, opts ...ResourceOption) (*Job, error)
    public Job(string name, JobArgs args, CustomResourceOptions? opts = null)
    public Job(String name, JobArgs args)
    public Job(String name, JobArgs args, CustomResourceOptions options)
    
    type: gcp:transcoder:Job
    properties: # The arguments to resource properties.
    options: # Bag of options to control resource's behavior.
    
    

    Parameters

    name string
    The unique name of the resource.
    args JobArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    resource_name str
    The unique name of the resource.
    args JobArgs
    The arguments to resource properties.
    opts ResourceOptions
    Bag of options to control resource's behavior.
    ctx Context
    Context object for the current deployment.
    name string
    The unique name of the resource.
    args JobArgs
    The arguments to resource properties.
    opts ResourceOption
    Bag of options to control resource's behavior.
    name string
    The unique name of the resource.
    args JobArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    name String
    The unique name of the resource.
    args JobArgs
    The arguments to resource properties.
    options CustomResourceOptions
    Bag of options to control resource's behavior.

    Constructor example

    The following reference example uses placeholder values for all input properties.

    var examplejobResourceResourceFromTranscoderjob = new Gcp.Transcoder.Job("examplejobResourceResourceFromTranscoderjob", new()
    {
        Location = "string",
        Config = new Gcp.Transcoder.Inputs.JobConfigArgs
        {
            AdBreaks = new[]
            {
                new Gcp.Transcoder.Inputs.JobConfigAdBreakArgs
                {
                    StartTimeOffset = "string",
                },
            },
            EditLists = new[]
            {
                new Gcp.Transcoder.Inputs.JobConfigEditListArgs
                {
                    Inputs = new[]
                    {
                        "string",
                    },
                    Key = "string",
                    StartTimeOffset = "string",
                },
            },
            ElementaryStreams = new[]
            {
                new Gcp.Transcoder.Inputs.JobConfigElementaryStreamArgs
                {
                    AudioStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamAudioStreamArgs
                    {
                        BitrateBps = 0,
                        ChannelCount = 0,
                        ChannelLayouts = new[]
                        {
                            "string",
                        },
                        Codec = "string",
                        SampleRateHertz = 0,
                    },
                    Key = "string",
                    VideoStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamArgs
                    {
                        H264 = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamH264Args
                        {
                            FrameRate = 0,
                            BitrateBps = 0,
                            Hlg = null,
                            EntropyCoder = "string",
                            GopDuration = "string",
                            HeightPixels = 0,
                            CrfLevel = 0,
                            PixelFormat = "string",
                            Preset = "string",
                            Profile = "string",
                            RateControlMode = "string",
                            Sdr = null,
                            VbvFullnessBits = 0,
                            VbvSizeBits = 0,
                            WidthPixels = 0,
                        },
                    },
                },
            },
            Encryptions = new[]
            {
                new Gcp.Transcoder.Inputs.JobConfigEncryptionArgs
                {
                    Id = "string",
                    Aes128 = null,
                    DrmSystems = new Gcp.Transcoder.Inputs.JobConfigEncryptionDrmSystemsArgs
                    {
                        Clearkey = null,
                        Fairplay = null,
                        Playready = null,
                        Widevine = null,
                    },
                    MpegCenc = new Gcp.Transcoder.Inputs.JobConfigEncryptionMpegCencArgs
                    {
                        Scheme = "string",
                    },
                    SampleAes = null,
                    SecretManagerKeySource = new Gcp.Transcoder.Inputs.JobConfigEncryptionSecretManagerKeySourceArgs
                    {
                        SecretVersion = "string",
                    },
                },
            },
            Inputs = new[]
            {
                new Gcp.Transcoder.Inputs.JobConfigInputArgs
                {
                    Key = "string",
                    Uri = "string",
                },
            },
            Manifests = new[]
            {
                new Gcp.Transcoder.Inputs.JobConfigManifestArgs
                {
                    FileName = "string",
                    MuxStreams = new[]
                    {
                        "string",
                    },
                    Type = "string",
                },
            },
            MuxStreams = new[]
            {
                new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs
                {
                    Container = "string",
                    ElementaryStreams = new[]
                    {
                        "string",
                    },
                    EncryptionId = "string",
                    FileName = "string",
                    Key = "string",
                    SegmentSettings = new Gcp.Transcoder.Inputs.JobConfigMuxStreamSegmentSettingsArgs
                    {
                        SegmentDuration = "string",
                    },
                },
            },
            Output = new Gcp.Transcoder.Inputs.JobConfigOutputArgs
            {
                Uri = "string",
            },
            Overlays = new[]
            {
                new Gcp.Transcoder.Inputs.JobConfigOverlayArgs
                {
                    Animations = new[]
                    {
                        new Gcp.Transcoder.Inputs.JobConfigOverlayAnimationArgs
                        {
                            AnimationFade = new Gcp.Transcoder.Inputs.JobConfigOverlayAnimationAnimationFadeArgs
                            {
                                FadeType = "string",
                                EndTimeOffset = "string",
                                StartTimeOffset = "string",
                                Xy = new Gcp.Transcoder.Inputs.JobConfigOverlayAnimationAnimationFadeXyArgs
                                {
                                    X = 0,
                                    Y = 0,
                                },
                            },
                        },
                    },
                    Image = new Gcp.Transcoder.Inputs.JobConfigOverlayImageArgs
                    {
                        Uri = "string",
                    },
                },
            },
            PubsubDestination = new Gcp.Transcoder.Inputs.JobConfigPubsubDestinationArgs
            {
                Topic = "string",
            },
        },
        Labels = 
        {
            { "string", "string" },
        },
        Project = "string",
        TemplateId = "string",
    });
    
    example, err := transcoder.NewJob(ctx, "examplejobResourceResourceFromTranscoderjob", &transcoder.JobArgs{
    	Location: pulumi.String("string"),
    	Config: &transcoder.JobConfigArgs{
    		AdBreaks: transcoder.JobConfigAdBreakArray{
    			&transcoder.JobConfigAdBreakArgs{
    				StartTimeOffset: pulumi.String("string"),
    			},
    		},
    		EditLists: transcoder.JobConfigEditListArray{
    			&transcoder.JobConfigEditListArgs{
    				Inputs: pulumi.StringArray{
    					pulumi.String("string"),
    				},
    				Key:             pulumi.String("string"),
    				StartTimeOffset: pulumi.String("string"),
    			},
    		},
    		ElementaryStreams: transcoder.JobConfigElementaryStreamArray{
    			&transcoder.JobConfigElementaryStreamArgs{
    				AudioStream: &transcoder.JobConfigElementaryStreamAudioStreamArgs{
    					BitrateBps:   pulumi.Int(0),
    					ChannelCount: pulumi.Int(0),
    					ChannelLayouts: pulumi.StringArray{
    						pulumi.String("string"),
    					},
    					Codec:           pulumi.String("string"),
    					SampleRateHertz: pulumi.Int(0),
    				},
    				Key: pulumi.String("string"),
    				VideoStream: &transcoder.JobConfigElementaryStreamVideoStreamArgs{
    					H264: &transcoder.JobConfigElementaryStreamVideoStreamH264Args{
    						FrameRate:       pulumi.Int(0),
    						BitrateBps:      pulumi.Int(0),
    						Hlg:             &transcoder.JobConfigElementaryStreamVideoStreamH264HlgArgs{},
    						EntropyCoder:    pulumi.String("string"),
    						GopDuration:     pulumi.String("string"),
    						HeightPixels:    pulumi.Int(0),
    						CrfLevel:        pulumi.Int(0),
    						PixelFormat:     pulumi.String("string"),
    						Preset:          pulumi.String("string"),
    						Profile:         pulumi.String("string"),
    						RateControlMode: pulumi.String("string"),
    						Sdr:             &transcoder.JobConfigElementaryStreamVideoStreamH264SdrArgs{},
    						VbvFullnessBits: pulumi.Int(0),
    						VbvSizeBits:     pulumi.Int(0),
    						WidthPixels:     pulumi.Int(0),
    					},
    				},
    			},
    		},
    		Encryptions: transcoder.JobConfigEncryptionArray{
    			&transcoder.JobConfigEncryptionArgs{
    				Id:     pulumi.String("string"),
    				Aes128: &transcoder.JobConfigEncryptionAes128Args{},
    				DrmSystems: &transcoder.JobConfigEncryptionDrmSystemsArgs{
    					Clearkey:  &transcoder.JobConfigEncryptionDrmSystemsClearkeyArgs{},
    					Fairplay:  &transcoder.JobConfigEncryptionDrmSystemsFairplayArgs{},
    					Playready: &transcoder.JobConfigEncryptionDrmSystemsPlayreadyArgs{},
    					Widevine:  &transcoder.JobConfigEncryptionDrmSystemsWidevineArgs{},
    				},
    				MpegCenc: &transcoder.JobConfigEncryptionMpegCencArgs{
    					Scheme: pulumi.String("string"),
    				},
    				SampleAes: &transcoder.JobConfigEncryptionSampleAesArgs{},
    				SecretManagerKeySource: &transcoder.JobConfigEncryptionSecretManagerKeySourceArgs{
    					SecretVersion: pulumi.String("string"),
    				},
    			},
    		},
    		Inputs: transcoder.JobConfigInputTypeArray{
    			&transcoder.JobConfigInputTypeArgs{
    				Key: pulumi.String("string"),
    				Uri: pulumi.String("string"),
    			},
    		},
    		Manifests: transcoder.JobConfigManifestArray{
    			&transcoder.JobConfigManifestArgs{
    				FileName: pulumi.String("string"),
    				MuxStreams: pulumi.StringArray{
    					pulumi.String("string"),
    				},
    				Type: pulumi.String("string"),
    			},
    		},
    		MuxStreams: transcoder.JobConfigMuxStreamArray{
    			&transcoder.JobConfigMuxStreamArgs{
    				Container: pulumi.String("string"),
    				ElementaryStreams: pulumi.StringArray{
    					pulumi.String("string"),
    				},
    				EncryptionId: pulumi.String("string"),
    				FileName:     pulumi.String("string"),
    				Key:          pulumi.String("string"),
    				SegmentSettings: &transcoder.JobConfigMuxStreamSegmentSettingsArgs{
    					SegmentDuration: pulumi.String("string"),
    				},
    			},
    		},
    		Output: &transcoder.JobConfigOutputTypeArgs{
    			Uri: pulumi.String("string"),
    		},
    		Overlays: transcoder.JobConfigOverlayArray{
    			&transcoder.JobConfigOverlayArgs{
    				Animations: transcoder.JobConfigOverlayAnimationArray{
    					&transcoder.JobConfigOverlayAnimationArgs{
    						AnimationFade: &transcoder.JobConfigOverlayAnimationAnimationFadeArgs{
    							FadeType:        pulumi.String("string"),
    							EndTimeOffset:   pulumi.String("string"),
    							StartTimeOffset: pulumi.String("string"),
    							Xy: &transcoder.JobConfigOverlayAnimationAnimationFadeXyArgs{
    								X: pulumi.Float64(0),
    								Y: pulumi.Float64(0),
    							},
    						},
    					},
    				},
    				Image: &transcoder.JobConfigOverlayImageArgs{
    					Uri: pulumi.String("string"),
    				},
    			},
    		},
    		PubsubDestination: &transcoder.JobConfigPubsubDestinationArgs{
    			Topic: pulumi.String("string"),
    		},
    	},
    	Labels: pulumi.StringMap{
    		"string": pulumi.String("string"),
    	},
    	Project:    pulumi.String("string"),
    	TemplateId: pulumi.String("string"),
    })
    
    var examplejobResourceResourceFromTranscoderjob = new Job("examplejobResourceResourceFromTranscoderjob", JobArgs.builder()
        .location("string")
        .config(JobConfigArgs.builder()
            .adBreaks(JobConfigAdBreakArgs.builder()
                .startTimeOffset("string")
                .build())
            .editLists(JobConfigEditListArgs.builder()
                .inputs("string")
                .key("string")
                .startTimeOffset("string")
                .build())
            .elementaryStreams(JobConfigElementaryStreamArgs.builder()
                .audioStream(JobConfigElementaryStreamAudioStreamArgs.builder()
                    .bitrateBps(0)
                    .channelCount(0)
                    .channelLayouts("string")
                    .codec("string")
                    .sampleRateHertz(0)
                    .build())
                .key("string")
                .videoStream(JobConfigElementaryStreamVideoStreamArgs.builder()
                    .h264(JobConfigElementaryStreamVideoStreamH264Args.builder()
                        .frameRate(0)
                        .bitrateBps(0)
                        .hlg()
                        .entropyCoder("string")
                        .gopDuration("string")
                        .heightPixels(0)
                        .crfLevel(0)
                        .pixelFormat("string")
                        .preset("string")
                        .profile("string")
                        .rateControlMode("string")
                        .sdr()
                        .vbvFullnessBits(0)
                        .vbvSizeBits(0)
                        .widthPixels(0)
                        .build())
                    .build())
                .build())
            .encryptions(JobConfigEncryptionArgs.builder()
                .id("string")
                .aes128()
                .drmSystems(JobConfigEncryptionDrmSystemsArgs.builder()
                    .clearkey()
                    .fairplay()
                    .playready()
                    .widevine()
                    .build())
                .mpegCenc(JobConfigEncryptionMpegCencArgs.builder()
                    .scheme("string")
                    .build())
                .sampleAes()
                .secretManagerKeySource(JobConfigEncryptionSecretManagerKeySourceArgs.builder()
                    .secretVersion("string")
                    .build())
                .build())
            .inputs(JobConfigInputArgs.builder()
                .key("string")
                .uri("string")
                .build())
            .manifests(JobConfigManifestArgs.builder()
                .fileName("string")
                .muxStreams("string")
                .type("string")
                .build())
            .muxStreams(JobConfigMuxStreamArgs.builder()
                .container("string")
                .elementaryStreams("string")
                .encryptionId("string")
                .fileName("string")
                .key("string")
                .segmentSettings(JobConfigMuxStreamSegmentSettingsArgs.builder()
                    .segmentDuration("string")
                    .build())
                .build())
            .output(JobConfigOutputArgs.builder()
                .uri("string")
                .build())
            .overlays(JobConfigOverlayArgs.builder()
                .animations(JobConfigOverlayAnimationArgs.builder()
                    .animationFade(JobConfigOverlayAnimationAnimationFadeArgs.builder()
                        .fadeType("string")
                        .endTimeOffset("string")
                        .startTimeOffset("string")
                        .xy(JobConfigOverlayAnimationAnimationFadeXyArgs.builder()
                            .x(0)
                            .y(0)
                            .build())
                        .build())
                    .build())
                .image(JobConfigOverlayImageArgs.builder()
                    .uri("string")
                    .build())
                .build())
            .pubsubDestination(JobConfigPubsubDestinationArgs.builder()
                .topic("string")
                .build())
            .build())
        .labels(Map.of("string", "string"))
        .project("string")
        .templateId("string")
        .build());
    
    examplejob_resource_resource_from_transcoderjob = gcp.transcoder.Job("examplejobResourceResourceFromTranscoderjob",
        location="string",
        config={
            "ad_breaks": [{
                "start_time_offset": "string",
            }],
            "edit_lists": [{
                "inputs": ["string"],
                "key": "string",
                "start_time_offset": "string",
            }],
            "elementary_streams": [{
                "audio_stream": {
                    "bitrate_bps": 0,
                    "channel_count": 0,
                    "channel_layouts": ["string"],
                    "codec": "string",
                    "sample_rate_hertz": 0,
                },
                "key": "string",
                "video_stream": {
                    "h264": {
                        "frame_rate": 0,
                        "bitrate_bps": 0,
                        "hlg": {},
                        "entropy_coder": "string",
                        "gop_duration": "string",
                        "height_pixels": 0,
                        "crf_level": 0,
                        "pixel_format": "string",
                        "preset": "string",
                        "profile": "string",
                        "rate_control_mode": "string",
                        "sdr": {},
                        "vbv_fullness_bits": 0,
                        "vbv_size_bits": 0,
                        "width_pixels": 0,
                    },
                },
            }],
            "encryptions": [{
                "id": "string",
                "aes128": {},
                "drm_systems": {
                    "clearkey": {},
                    "fairplay": {},
                    "playready": {},
                    "widevine": {},
                },
                "mpeg_cenc": {
                    "scheme": "string",
                },
                "sample_aes": {},
                "secret_manager_key_source": {
                    "secret_version": "string",
                },
            }],
            "inputs": [{
                "key": "string",
                "uri": "string",
            }],
            "manifests": [{
                "file_name": "string",
                "mux_streams": ["string"],
                "type": "string",
            }],
            "mux_streams": [{
                "container": "string",
                "elementary_streams": ["string"],
                "encryption_id": "string",
                "file_name": "string",
                "key": "string",
                "segment_settings": {
                    "segment_duration": "string",
                },
            }],
            "output": {
                "uri": "string",
            },
            "overlays": [{
                "animations": [{
                    "animation_fade": {
                        "fade_type": "string",
                        "end_time_offset": "string",
                        "start_time_offset": "string",
                        "xy": {
                            "x": 0,
                            "y": 0,
                        },
                    },
                }],
                "image": {
                    "uri": "string",
                },
            }],
            "pubsub_destination": {
                "topic": "string",
            },
        },
        labels={
            "string": "string",
        },
        project="string",
        template_id="string")
    
    const examplejobResourceResourceFromTranscoderjob = new gcp.transcoder.Job("examplejobResourceResourceFromTranscoderjob", {
        location: "string",
        config: {
            adBreaks: [{
                startTimeOffset: "string",
            }],
            editLists: [{
                inputs: ["string"],
                key: "string",
                startTimeOffset: "string",
            }],
            elementaryStreams: [{
                audioStream: {
                    bitrateBps: 0,
                    channelCount: 0,
                    channelLayouts: ["string"],
                    codec: "string",
                    sampleRateHertz: 0,
                },
                key: "string",
                videoStream: {
                    h264: {
                        frameRate: 0,
                        bitrateBps: 0,
                        hlg: {},
                        entropyCoder: "string",
                        gopDuration: "string",
                        heightPixels: 0,
                        crfLevel: 0,
                        pixelFormat: "string",
                        preset: "string",
                        profile: "string",
                        rateControlMode: "string",
                        sdr: {},
                        vbvFullnessBits: 0,
                        vbvSizeBits: 0,
                        widthPixels: 0,
                    },
                },
            }],
            encryptions: [{
                id: "string",
                aes128: {},
                drmSystems: {
                    clearkey: {},
                    fairplay: {},
                    playready: {},
                    widevine: {},
                },
                mpegCenc: {
                    scheme: "string",
                },
                sampleAes: {},
                secretManagerKeySource: {
                    secretVersion: "string",
                },
            }],
            inputs: [{
                key: "string",
                uri: "string",
            }],
            manifests: [{
                fileName: "string",
                muxStreams: ["string"],
                type: "string",
            }],
            muxStreams: [{
                container: "string",
                elementaryStreams: ["string"],
                encryptionId: "string",
                fileName: "string",
                key: "string",
                segmentSettings: {
                    segmentDuration: "string",
                },
            }],
            output: {
                uri: "string",
            },
            overlays: [{
                animations: [{
                    animationFade: {
                        fadeType: "string",
                        endTimeOffset: "string",
                        startTimeOffset: "string",
                        xy: {
                            x: 0,
                            y: 0,
                        },
                    },
                }],
                image: {
                    uri: "string",
                },
            }],
            pubsubDestination: {
                topic: "string",
            },
        },
        labels: {
            string: "string",
        },
        project: "string",
        templateId: "string",
    });
    
    type: gcp:transcoder:Job
    properties:
        config:
            adBreaks:
                - startTimeOffset: string
            editLists:
                - inputs:
                    - string
                  key: string
                  startTimeOffset: string
            elementaryStreams:
                - audioStream:
                    bitrateBps: 0
                    channelCount: 0
                    channelLayouts:
                        - string
                    codec: string
                    sampleRateHertz: 0
                  key: string
                  videoStream:
                    h264:
                        bitrateBps: 0
                        crfLevel: 0
                        entropyCoder: string
                        frameRate: 0
                        gopDuration: string
                        heightPixels: 0
                        hlg: {}
                        pixelFormat: string
                        preset: string
                        profile: string
                        rateControlMode: string
                        sdr: {}
                        vbvFullnessBits: 0
                        vbvSizeBits: 0
                        widthPixels: 0
            encryptions:
                - aes128: {}
                  drmSystems:
                    clearkey: {}
                    fairplay: {}
                    playready: {}
                    widevine: {}
                  id: string
                  mpegCenc:
                    scheme: string
                  sampleAes: {}
                  secretManagerKeySource:
                    secretVersion: string
            inputs:
                - key: string
                  uri: string
            manifests:
                - fileName: string
                  muxStreams:
                    - string
                  type: string
            muxStreams:
                - container: string
                  elementaryStreams:
                    - string
                  encryptionId: string
                  fileName: string
                  key: string
                  segmentSettings:
                    segmentDuration: string
            output:
                uri: string
            overlays:
                - animations:
                    - animationFade:
                        endTimeOffset: string
                        fadeType: string
                        startTimeOffset: string
                        xy:
                            x: 0
                            "y": 0
                  image:
                    uri: string
            pubsubDestination:
                topic: string
        labels:
            string: string
        location: string
        project: string
        templateId: string
    

    Job Resource Properties

    To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.

    Inputs

    In Python, inputs that are objects can be passed either as argument classes or as dictionary literals.

    The Job resource accepts the following input properties:

    Location string
    The location of the transcoding job resource.


    Config JobConfig
    The configuration for this template. Structure is documented below.
    Labels Dictionary<string, string>

    The labels associated with this job. You can use these to organize and group your jobs.

    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.

    Project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    TemplateId string
    Specify the templateId to use for populating Job.config. The default is preset/web-hd, which is the only supported preset.
    Location string
    The location of the transcoding job resource.


    Config JobConfigArgs
    The configuration for this template. Structure is documented below.
    Labels map[string]string

    The labels associated with this job. You can use these to organize and group your jobs.

    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.

    Project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    TemplateId string
    Specify the templateId to use for populating Job.config. The default is preset/web-hd, which is the only supported preset.
    location String
    The location of the transcoding job resource.


    config JobConfig
    The configuration for this template. Structure is documented below.
    labels Map<String,String>

    The labels associated with this job. You can use these to organize and group your jobs.

    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.

    project String
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    templateId String
    Specify the templateId to use for populating Job.config. The default is preset/web-hd, which is the only supported preset.
    location string
    The location of the transcoding job resource.


    config JobConfig
    The configuration for this template. Structure is documented below.
    labels {[key: string]: string}

    The labels associated with this job. You can use these to organize and group your jobs.

    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.

    project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    templateId string
    Specify the templateId to use for populating Job.config. The default is preset/web-hd, which is the only supported preset.
    location str
    The location of the transcoding job resource.


    config JobConfigArgs
    The configuration for this template. Structure is documented below.
    labels Mapping[str, str]

    The labels associated with this job. You can use these to organize and group your jobs.

    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.

    project str
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    template_id str
    Specify the templateId to use for populating Job.config. The default is preset/web-hd, which is the only supported preset.
    location String
    The location of the transcoding job resource.


    config Property Map
    The configuration for this template. Structure is documented below.
    labels Map<String>

    The labels associated with this job. You can use these to organize and group your jobs.

    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.

    project String
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    templateId String
    Specify the templateId to use for populating Job.config. The default is preset/web-hd, which is the only supported preset.

    Outputs

    All input properties are implicitly available as output properties. Additionally, the Job resource produces the following output properties:

    CreateTime string
    The time the job was created.
    EffectiveLabels Dictionary<string, string>
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    EndTime string
    The time the transcoding finished.
    Id string
    The provider-assigned unique ID for this managed resource.
    Name string
    The resource name of the job.
    PulumiLabels Dictionary<string, string>
    The combination of labels configured directly on the resource and default labels configured on the provider.
    StartTime string
    The time the transcoding started.
    State string
    The current state of the job.
    CreateTime string
    The time the job was created.
    EffectiveLabels map[string]string
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    EndTime string
    The time the transcoding finished.
    Id string
    The provider-assigned unique ID for this managed resource.
    Name string
    The resource name of the job.
    PulumiLabels map[string]string
    The combination of labels configured directly on the resource and default labels configured on the provider.
    StartTime string
    The time the transcoding started.
    State string
    The current state of the job.
    createTime String
    The time the job was created.
    effectiveLabels Map<String,String>
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    endTime String
    The time the transcoding finished.
    id String
    The provider-assigned unique ID for this managed resource.
    name String
    The resource name of the job.
    pulumiLabels Map<String,String>
    The combination of labels configured directly on the resource and default labels configured on the provider.
    startTime String
    The time the transcoding started.
    state String
    The current state of the job.
    createTime string
    The time the job was created.
    effectiveLabels {[key: string]: string}
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    endTime string
    The time the transcoding finished.
    id string
    The provider-assigned unique ID for this managed resource.
    name string
    The resource name of the job.
    pulumiLabels {[key: string]: string}
    The combination of labels configured directly on the resource and default labels configured on the provider.
    startTime string
    The time the transcoding started.
    state string
    The current state of the job.
    create_time str
    The time the job was created.
    effective_labels Mapping[str, str]
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    end_time str
    The time the transcoding finished.
    id str
    The provider-assigned unique ID for this managed resource.
    name str
    The resource name of the job.
    pulumi_labels Mapping[str, str]
    The combination of labels configured directly on the resource and default labels configured on the provider.
    start_time str
    The time the transcoding started.
    state str
    The current state of the job.
    createTime String
    The time the job was created.
    effectiveLabels Map<String>
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    endTime String
    The time the transcoding finished.
    id String
    The provider-assigned unique ID for this managed resource.
    name String
    The resource name of the job.
    pulumiLabels Map<String>
    The combination of labels configured directly on the resource and default labels configured on the provider.
    startTime String
    The time the transcoding started.
    state String
    The current state of the job.

    Look up Existing Job Resource

    Get an existing Job resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.

    public static get(name: string, id: Input<ID>, state?: JobState, opts?: CustomResourceOptions): Job
    @staticmethod
    def get(resource_name: str,
            id: str,
            opts: Optional[ResourceOptions] = None,
            config: Optional[JobConfigArgs] = None,
            create_time: Optional[str] = None,
            effective_labels: Optional[Mapping[str, str]] = None,
            end_time: Optional[str] = None,
            labels: Optional[Mapping[str, str]] = None,
            location: Optional[str] = None,
            name: Optional[str] = None,
            project: Optional[str] = None,
            pulumi_labels: Optional[Mapping[str, str]] = None,
            start_time: Optional[str] = None,
            state: Optional[str] = None,
            template_id: Optional[str] = None) -> Job
    func GetJob(ctx *Context, name string, id IDInput, state *JobState, opts ...ResourceOption) (*Job, error)
    public static Job Get(string name, Input<string> id, JobState? state, CustomResourceOptions? opts = null)
    public static Job get(String name, Output<String> id, JobState state, CustomResourceOptions options)
    Resource lookup is not supported in YAML
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    resource_name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    The following state arguments are supported:
    Config JobConfig
    The configuration for this template. Structure is documented below.
    CreateTime string
    The time the job was created.
    EffectiveLabels Dictionary<string, string>
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    EndTime string
    The time the transcoding finished.
    Labels Dictionary<string, string>

    The labels associated with this job. You can use these to organize and group your jobs.

    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.

    Location string
    The location of the transcoding job resource.


    Name string
    The resource name of the job.
    Project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    PulumiLabels Dictionary<string, string>
    The combination of labels configured directly on the resource and default labels configured on the provider.
    StartTime string
    The time the transcoding started.
    State string
    The current state of the job.
    TemplateId string
    Specify the templateId to use for populating Job.config. The default is preset/web-hd, which is the only supported preset.
    Config JobConfigArgs
    The configuration for this template. Structure is documented below.
    CreateTime string
    The time the job was created.
    EffectiveLabels map[string]string
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    EndTime string
    The time the transcoding finished.
    Labels map[string]string

    The labels associated with this job. You can use these to organize and group your jobs.

    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.

    Location string
    The location of the transcoding job resource.


    Name string
    The resource name of the job.
    Project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    PulumiLabels map[string]string
    The combination of labels configured directly on the resource and default labels configured on the provider.
    StartTime string
    The time the transcoding started.
    State string
    The current state of the job.
    TemplateId string
    Specify the templateId to use for populating Job.config. The default is preset/web-hd, which is the only supported preset.
    config JobConfig
    The configuration for this template. Structure is documented below.
    createTime String
    The time the job was created.
    effectiveLabels Map<String,String>
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    endTime String
    The time the transcoding finished.
    labels Map<String,String>

    The labels associated with this job. You can use these to organize and group your jobs.

    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.

    location String
    The location of the transcoding job resource.


    name String
    The resource name of the job.
    project String
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    pulumiLabels Map<String,String>
    The combination of labels configured directly on the resource and default labels configured on the provider.
    startTime String
    The time the transcoding started.
    state String
    The current state of the job.
    templateId String
    Specify the templateId to use for populating Job.config. The default is preset/web-hd, which is the only supported preset.
    config JobConfig
    The configuration for this template. Structure is documented below.
    createTime string
    The time the job was created.
    effectiveLabels {[key: string]: string}
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    endTime string
    The time the transcoding finished.
    labels {[key: string]: string}

    The labels associated with this job. You can use these to organize and group your jobs.

    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.

    location string
    The location of the transcoding job resource.


    name string
    The resource name of the job.
    project string
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    pulumiLabels {[key: string]: string}
    The combination of labels configured directly on the resource and default labels configured on the provider.
    startTime string
    The time the transcoding started.
    state string
    The current state of the job.
    templateId string
    Specify the templateId to use for populating Job.config. The default is preset/web-hd, which is the only supported preset.
    config JobConfigArgs
    The configuration for this template. Structure is documented below.
    create_time str
    The time the job was created.
    effective_labels Mapping[str, str]
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    end_time str
    The time the transcoding finished.
    labels Mapping[str, str]

    The labels associated with this job. You can use these to organize and group your jobs.

    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.

    location str
    The location of the transcoding job resource.


    name str
    The resource name of the job.
    project str
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    pulumi_labels Mapping[str, str]
    The combination of labels configured directly on the resource and default labels configured on the provider.
    start_time str
    The time the transcoding started.
    state str
    The current state of the job.
    template_id str
    Specify the templateId to use for populating Job.config. The default is preset/web-hd, which is the only supported preset.
    config Property Map
    The configuration for this template. Structure is documented below.
    createTime String
    The time the job was created.
    effectiveLabels Map<String>
    All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
    endTime String
    The time the transcoding finished.
    labels Map<String>

    The labels associated with this job. You can use these to organize and group your jobs.

    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.

    location String
    The location of the transcoding job resource.


    name String
    The resource name of the job.
    project String
    The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
    pulumiLabels Map<String>
    The combination of labels configured directly on the resource and default labels configured on the provider.
    startTime String
    The time the transcoding started.
    state String
    The current state of the job.
    templateId String
    Specify the templateId to use for populating Job.config. The default is preset/web-hd, which is the only supported preset.

    Supporting Types

    JobConfig, JobConfigArgs

    AdBreaks List<JobConfigAdBreak>
    Ad break. Structure is documented below.
    EditLists List<JobConfigEditList>
    List of input assets stored in Cloud Storage. Structure is documented below.
    ElementaryStreams List<JobConfigElementaryStream>
    List of input assets stored in Cloud Storage. Structure is documented below.
    Encryptions List<JobConfigEncryption>
    List of encryption configurations for the content. Structure is documented below.
    Inputs List<JobConfigInput>
    List of input assets stored in Cloud Storage. Structure is documented below.
    Manifests List<JobConfigManifest>
    Manifest configuration. Structure is documented below.
    MuxStreams List<JobConfigMuxStream>
    Multiplexing settings for output stream. Structure is documented below.
    Output JobConfigOutput
    Location of output file(s) in a Cloud Storage bucket. Structure is documented below.
    Overlays List<JobConfigOverlay>
    List of overlays on the output video, in descending Z-order. Structure is documented below.
    PubsubDestination JobConfigPubsubDestination
    Pub/Sub destination. Structure is documented below.
    AdBreaks []JobConfigAdBreak
    Ad break. Structure is documented below.
    EditLists []JobConfigEditList
    List of input assets stored in Cloud Storage. Structure is documented below.
    ElementaryStreams []JobConfigElementaryStream
    List of input assets stored in Cloud Storage. Structure is documented below.
    Encryptions []JobConfigEncryption
    List of encryption configurations for the content. Structure is documented below.
    Inputs []JobConfigInputType
    List of input assets stored in Cloud Storage. Structure is documented below.
    Manifests []JobConfigManifest
    Manifest configuration. Structure is documented below.
    MuxStreams []JobConfigMuxStream
    Multiplexing settings for output stream. Structure is documented below.
    Output JobConfigOutputType
    Location of output file(s) in a Cloud Storage bucket. Structure is documented below.
    Overlays []JobConfigOverlay
    List of overlays on the output video, in descending Z-order. Structure is documented below.
    PubsubDestination JobConfigPubsubDestination
    Pub/Sub destination. Structure is documented below.
    adBreaks List<JobConfigAdBreak>
    Ad break. Structure is documented below.
    editLists List<JobConfigEditList>
    List of input assets stored in Cloud Storage. Structure is documented below.
    elementaryStreams List<JobConfigElementaryStream>
    List of input assets stored in Cloud Storage. Structure is documented below.
    encryptions List<JobConfigEncryption>
    List of encryption configurations for the content. Structure is documented below.
    inputs List<JobConfigInput>
    List of input assets stored in Cloud Storage. Structure is documented below.
    manifests List<JobConfigManifest>
    Manifest configuration. Structure is documented below.
    muxStreams List<JobConfigMuxStream>
    Multiplexing settings for output stream. Structure is documented below.
    output JobConfigOutput
    Location of output file(s) in a Cloud Storage bucket. Structure is documented below.
    overlays List<JobConfigOverlay>
    List of overlays on the output video, in descending Z-order. Structure is documented below.
    pubsubDestination JobConfigPubsubDestination
    Pub/Sub destination. Structure is documented below.
    adBreaks JobConfigAdBreak[]
    Ad break. Structure is documented below.
    editLists JobConfigEditList[]
    List of input assets stored in Cloud Storage. Structure is documented below.
    elementaryStreams JobConfigElementaryStream[]
    List of input assets stored in Cloud Storage. Structure is documented below.
    encryptions JobConfigEncryption[]
    List of encryption configurations for the content. Structure is documented below.
    inputs JobConfigInput[]
    List of input assets stored in Cloud Storage. Structure is documented below.
    manifests JobConfigManifest[]
    Manifest configuration. Structure is documented below.
    muxStreams JobConfigMuxStream[]
    Multiplexing settings for output stream. Structure is documented below.
    output JobConfigOutput
    Location of output file(s) in a Cloud Storage bucket. Structure is documented below.
    overlays JobConfigOverlay[]
    List of overlays on the output video, in descending Z-order. Structure is documented below.
    pubsubDestination JobConfigPubsubDestination
    Pub/Sub destination. Structure is documented below.
    ad_breaks Sequence[JobConfigAdBreak]
    Ad break. Structure is documented below.
    edit_lists Sequence[JobConfigEditList]
    List of input assets stored in Cloud Storage. Structure is documented below.
    elementary_streams Sequence[JobConfigElementaryStream]
    List of input assets stored in Cloud Storage. Structure is documented below.
    encryptions Sequence[JobConfigEncryption]
    List of encryption configurations for the content. Structure is documented below.
    inputs Sequence[JobConfigInput]
    List of input assets stored in Cloud Storage. Structure is documented below.
    manifests Sequence[JobConfigManifest]
    Manifest configuration. Structure is documented below.
    mux_streams Sequence[JobConfigMuxStream]
    Multiplexing settings for output stream. Structure is documented below.
    output JobConfigOutput
    Location of output file(s) in a Cloud Storage bucket. Structure is documented below.
    overlays Sequence[JobConfigOverlay]
    List of overlays on the output video, in descending Z-order. Structure is documented below.
    pubsub_destination JobConfigPubsubDestination
    Pub/Sub destination. Structure is documented below.
    adBreaks List<Property Map>
    Ad break. Structure is documented below.
    editLists List<Property Map>
    List of input assets stored in Cloud Storage. Structure is documented below.
    elementaryStreams List<Property Map>
    List of input assets stored in Cloud Storage. Structure is documented below.
    encryptions List<Property Map>
    List of encryption configurations for the content. Structure is documented below.
    inputs List<Property Map>
    List of input assets stored in Cloud Storage. Structure is documented below.
    manifests List<Property Map>
    Manifest configuration. Structure is documented below.
    muxStreams List<Property Map>
    Multiplexing settings for output stream. Structure is documented below.
    output Property Map
    Location of output file(s) in a Cloud Storage bucket. Structure is documented below.
    overlays List<Property Map>
    List of overlays on the output video, in descending Z-order. Structure is documented below.
    pubsubDestination Property Map
    Pub/Sub destination. Structure is documented below.

    JobConfigAdBreak, JobConfigAdBreakArgs

    StartTimeOffset string
    Start time in seconds for the ad break, relative to the output file timeline
    StartTimeOffset string
    Start time in seconds for the ad break, relative to the output file timeline
    startTimeOffset String
    Start time in seconds for the ad break, relative to the output file timeline
    startTimeOffset string
    Start time in seconds for the ad break, relative to the output file timeline
    start_time_offset str
    Start time in seconds for the ad break, relative to the output file timeline
    startTimeOffset String
    Start time in seconds for the ad break, relative to the output file timeline

    JobConfigEditList, JobConfigEditListArgs

    Inputs List<string>
    List of values identifying files that should be used in this atom.
    Key string
    A unique key for this atom.
    StartTimeOffset string
    Start time in seconds for the atom, relative to the input file timeline. The default is 0s.
    Inputs []string
    List of values identifying files that should be used in this atom.
    Key string
    A unique key for this atom.
    StartTimeOffset string
    Start time in seconds for the atom, relative to the input file timeline. The default is 0s.
    inputs List<String>
    List of values identifying files that should be used in this atom.
    key String
    A unique key for this atom.
    startTimeOffset String
    Start time in seconds for the atom, relative to the input file timeline. The default is 0s.
    inputs string[]
    List of values identifying files that should be used in this atom.
    key string
    A unique key for this atom.
    startTimeOffset string
    Start time in seconds for the atom, relative to the input file timeline. The default is 0s.
    inputs Sequence[str]
    List of values identifying files that should be used in this atom.
    key str
    A unique key for this atom.
    start_time_offset str
    Start time in seconds for the atom, relative to the input file timeline. The default is 0s.
    inputs List<String>
    List of values identifying files that should be used in this atom.
    key String
    A unique key for this atom.
    startTimeOffset String
    Start time in seconds for the atom, relative to the input file timeline. The default is 0s.

    JobConfigElementaryStream, JobConfigElementaryStreamArgs

    AudioStream JobConfigElementaryStreamAudioStream
    Encoding of an audio stream. Structure is documented below.
    Key string
    A unique key for this atom.
    VideoStream JobConfigElementaryStreamVideoStream
    Encoding of a video stream. Structure is documented below.
    AudioStream JobConfigElementaryStreamAudioStream
    Encoding of an audio stream. Structure is documented below.
    Key string
    A unique key for this atom.
    VideoStream JobConfigElementaryStreamVideoStream
    Encoding of a video stream. Structure is documented below.
    audioStream JobConfigElementaryStreamAudioStream
    Encoding of an audio stream. Structure is documented below.
    key String
    A unique key for this atom.
    videoStream JobConfigElementaryStreamVideoStream
    Encoding of a video stream. Structure is documented below.
    audioStream JobConfigElementaryStreamAudioStream
    Encoding of an audio stream. Structure is documented below.
    key string
    A unique key for this atom.
    videoStream JobConfigElementaryStreamVideoStream
    Encoding of a video stream. Structure is documented below.
    audio_stream JobConfigElementaryStreamAudioStream
    Encoding of an audio stream. Structure is documented below.
    key str
    A unique key for this atom.
    video_stream JobConfigElementaryStreamVideoStream
    Encoding of a video stream. Structure is documented below.
    audioStream Property Map
    Encoding of an audio stream. Structure is documented below.
    key String
    A unique key for this atom.
    videoStream Property Map
    Encoding of a video stream. Structure is documented below.

    JobConfigElementaryStreamAudioStream, JobConfigElementaryStreamAudioStreamArgs

    BitrateBps int
    Audio bitrate in bits per second.
    ChannelCount int
    Number of audio channels. The default is 2.
    ChannelLayouts List<string>
    A list of channel names specifying layout of the audio channels. The default is ["fl", "fr"].
    Codec string
    The codec for this audio stream. The default is aac.
    SampleRateHertz int
    The audio sample rate in Hertz. The default is 48000.
    BitrateBps int
    Audio bitrate in bits per second.
    ChannelCount int
    Number of audio channels. The default is 2.
    ChannelLayouts []string
    A list of channel names specifying layout of the audio channels. The default is ["fl", "fr"].
    Codec string
    The codec for this audio stream. The default is aac.
    SampleRateHertz int
    The audio sample rate in Hertz. The default is 48000.
    bitrateBps Integer
    Audio bitrate in bits per second.
    channelCount Integer
    Number of audio channels. The default is 2.
    channelLayouts List<String>
    A list of channel names specifying layout of the audio channels. The default is ["fl", "fr"].
    codec String
    The codec for this audio stream. The default is aac.
    sampleRateHertz Integer
    The audio sample rate in Hertz. The default is 48000.
    bitrateBps number
    Audio bitrate in bits per second.
    channelCount number
    Number of audio channels. The default is 2.
    channelLayouts string[]
    A list of channel names specifying layout of the audio channels. The default is ["fl", "fr"].
    codec string
    The codec for this audio stream. The default is aac.
    sampleRateHertz number
    The audio sample rate in Hertz. The default is 48000.
    bitrate_bps int
    Audio bitrate in bits per second.
    channel_count int
    Number of audio channels. The default is 2.
    channel_layouts Sequence[str]
    A list of channel names specifying layout of the audio channels. The default is ["fl", "fr"].
    codec str
    The codec for this audio stream. The default is aac.
    sample_rate_hertz int
    The audio sample rate in Hertz. The default is 48000.
    bitrateBps Number
    Audio bitrate in bits per second.
    channelCount Number
    Number of audio channels. The default is 2.
    channelLayouts List<String>
    A list of channel names specifying layout of the audio channels. The default is ["fl", "fr"].
    codec String
    The codec for this audio stream. The default is aac.
    sampleRateHertz Number
    The audio sample rate in Hertz. The default is 48000.

    JobConfigElementaryStreamVideoStream, JobConfigElementaryStreamVideoStreamArgs

    H264 JobConfigElementaryStreamVideoStreamH264

    H264 codec settings Structure is documented below.

    The h264 block supports:

    H264 JobConfigElementaryStreamVideoStreamH264

    H264 codec settings Structure is documented below.

    The h264 block supports:

    h264 JobConfigElementaryStreamVideoStreamH264

    H264 codec settings Structure is documented below.

    The h264 block supports:

    h264 JobConfigElementaryStreamVideoStreamH264

    H264 codec settings Structure is documented below.

    The h264 block supports:

    h264 JobConfigElementaryStreamVideoStreamH264

    H264 codec settings Structure is documented below.

    The h264 block supports:

    h264 Property Map

    H264 codec settings Structure is documented below.

    The h264 block supports:

    JobConfigElementaryStreamVideoStreamH264, JobConfigElementaryStreamVideoStreamH264Args

    BitrateBps int
    The video bitrate in bits per second.
    FrameRate int
    The target video frame rate in frames per second (FPS).
    CrfLevel int
    Target CRF level. The default is '21'.
    EntropyCoder string
    The entropy coder to use. The default is 'cabac'.
    GopDuration string
    Select the GOP size based on the specified duration. The default is '3s'.
    HeightPixels int
    The height of the video in pixels.
    Hlg JobConfigElementaryStreamVideoStreamH264Hlg
    HLG color format setting for H264.
    PixelFormat string
    Pixel format to use. The default is 'yuv420p'.
    Preset string
    Enforces the specified codec preset. The default is 'veryfast'.
    Profile string
    Enforces the specified codec profile.
    RateControlMode string
    Specify the mode. The default is 'vbr'.
    Sdr JobConfigElementaryStreamVideoStreamH264Sdr
    SDR color format setting for H264.
    VbvFullnessBits int
    Initial fullness of the Video Buffering Verifier (VBV) buffer in bits.
    VbvSizeBits int
    Size of the Video Buffering Verifier (VBV) buffer in bits.
    WidthPixels int
    The width of the video in pixels.
    BitrateBps int
    The video bitrate in bits per second.
    FrameRate int
    The target video frame rate in frames per second (FPS).
    CrfLevel int
    Target CRF level. The default is '21'.
    EntropyCoder string
    The entropy coder to use. The default is 'cabac'.
    GopDuration string
    Select the GOP size based on the specified duration. The default is '3s'.
    HeightPixels int
    The height of the video in pixels.
    Hlg JobConfigElementaryStreamVideoStreamH264Hlg
    HLG color format setting for H264.
    PixelFormat string
    Pixel format to use. The default is 'yuv420p'.
    Preset string
    Enforces the specified codec preset. The default is 'veryfast'.
    Profile string
    Enforces the specified codec profile.
    RateControlMode string
    Specify the mode. The default is 'vbr'.
    Sdr JobConfigElementaryStreamVideoStreamH264Sdr
    SDR color format setting for H264.
    VbvFullnessBits int
    Initial fullness of the Video Buffering Verifier (VBV) buffer in bits.
    VbvSizeBits int
    Size of the Video Buffering Verifier (VBV) buffer in bits.
    WidthPixels int
    The width of the video in pixels.
    bitrateBps Integer
    The video bitrate in bits per second.
    frameRate Integer
    The target video frame rate in frames per second (FPS).
    crfLevel Integer
    Target CRF level. The default is '21'.
    entropyCoder String
    The entropy coder to use. The default is 'cabac'.
    gopDuration String
    Select the GOP size based on the specified duration. The default is '3s'.
    heightPixels Integer
    The height of the video in pixels.
    hlg JobConfigElementaryStreamVideoStreamH264Hlg
    HLG color format setting for H264.
    pixelFormat String
    Pixel format to use. The default is 'yuv420p'.
    preset String
    Enforces the specified codec preset. The default is 'veryfast'.
    profile String
    Enforces the specified codec profile.
    rateControlMode String
    Specify the mode. The default is 'vbr'.
    sdr JobConfigElementaryStreamVideoStreamH264Sdr
    SDR color format setting for H264.
    vbvFullnessBits Integer
    Initial fullness of the Video Buffering Verifier (VBV) buffer in bits.
    vbvSizeBits Integer
    Size of the Video Buffering Verifier (VBV) buffer in bits.
    widthPixels Integer
    The width of the video in pixels.
    bitrateBps number
    The video bitrate in bits per second.
    frameRate number
    The target video frame rate in frames per second (FPS).
    crfLevel number
    Target CRF level. The default is '21'.
    entropyCoder string
    The entropy coder to use. The default is 'cabac'.
    gopDuration string
    Select the GOP size based on the specified duration. The default is '3s'.
    heightPixels number
    The height of the video in pixels.
    hlg JobConfigElementaryStreamVideoStreamH264Hlg
    HLG color format setting for H264.
    pixelFormat string
    Pixel format to use. The default is 'yuv420p'.
    preset string
    Enforces the specified codec preset. The default is 'veryfast'.
    profile string
    Enforces the specified codec profile.
    rateControlMode string
    Specify the mode. The default is 'vbr'.
    sdr JobConfigElementaryStreamVideoStreamH264Sdr
    SDR color format setting for H264.
    vbvFullnessBits number
    Initial fullness of the Video Buffering Verifier (VBV) buffer in bits.
    vbvSizeBits number
    Size of the Video Buffering Verifier (VBV) buffer in bits.
    widthPixels number
    The width of the video in pixels.
    bitrate_bps int
    The video bitrate in bits per second.
    frame_rate int
    The target video frame rate in frames per second (FPS).
    crf_level int
    Target CRF level. The default is '21'.
    entropy_coder str
    The entropy coder to use. The default is 'cabac'.
    gop_duration str
    Select the GOP size based on the specified duration. The default is '3s'.
    height_pixels int
    The height of the video in pixels.
    hlg JobConfigElementaryStreamVideoStreamH264Hlg
    HLG color format setting for H264.
    pixel_format str
    Pixel format to use. The default is 'yuv420p'.
    preset str
    Enforces the specified codec preset. The default is 'veryfast'.
    profile str
    Enforces the specified codec profile.
    rate_control_mode str
    Specify the mode. The default is 'vbr'.
    sdr JobConfigElementaryStreamVideoStreamH264Sdr
    SDR color format setting for H264.
    vbv_fullness_bits int
    Initial fullness of the Video Buffering Verifier (VBV) buffer in bits.
    vbv_size_bits int
    Size of the Video Buffering Verifier (VBV) buffer in bits.
    width_pixels int
    The width of the video in pixels.
    bitrateBps Number
    The video bitrate in bits per second.
    frameRate Number
    The target video frame rate in frames per second (FPS).
    crfLevel Number
    Target CRF level. The default is '21'.
    entropyCoder String
    The entropy coder to use. The default is 'cabac'.
    gopDuration String
    Select the GOP size based on the specified duration. The default is '3s'.
    heightPixels Number
    The height of the video in pixels.
    hlg Property Map
    HLG color format setting for H264.
    pixelFormat String
    Pixel format to use. The default is 'yuv420p'.
    preset String
    Enforces the specified codec preset. The default is 'veryfast'.
    profile String
    Enforces the specified codec profile.
    rateControlMode String
    Specify the mode. The default is 'vbr'.
    sdr Property Map
    SDR color format setting for H264.
    vbvFullnessBits Number
    Initial fullness of the Video Buffering Verifier (VBV) buffer in bits.
    vbvSizeBits Number
    Size of the Video Buffering Verifier (VBV) buffer in bits.
    widthPixels Number
    The width of the video in pixels.

    JobConfigEncryption, JobConfigEncryptionArgs

    Id string
    Identifier for this set of encryption options.
    Aes128 JobConfigEncryptionAes128
    Configuration for AES-128 encryption.
    DrmSystems JobConfigEncryptionDrmSystems
    DRM system(s) to use; at least one must be specified. If a DRM system is omitted, it is considered disabled. Structure is documented below.
    MpegCenc JobConfigEncryptionMpegCenc
    Configuration for MPEG Common Encryption (MPEG-CENC). Structure is documented below.
    SampleAes JobConfigEncryptionSampleAes
    Configuration for SAMPLE-AES encryption.
    SecretManagerKeySource JobConfigEncryptionSecretManagerKeySource
    Configuration for secrets stored in Google Secret Manager. Structure is documented below.
    Id string
    Identifier for this set of encryption options.
    Aes128 JobConfigEncryptionAes128
    Configuration for AES-128 encryption.
    DrmSystems JobConfigEncryptionDrmSystems
    DRM system(s) to use; at least one must be specified. If a DRM system is omitted, it is considered disabled. Structure is documented below.
    MpegCenc JobConfigEncryptionMpegCenc
    Configuration for MPEG Common Encryption (MPEG-CENC). Structure is documented below.
    SampleAes JobConfigEncryptionSampleAes
    Configuration for SAMPLE-AES encryption.
    SecretManagerKeySource JobConfigEncryptionSecretManagerKeySource
    Configuration for secrets stored in Google Secret Manager. Structure is documented below.
    id String
    Identifier for this set of encryption options.
    aes128 JobConfigEncryptionAes128
    Configuration for AES-128 encryption.
    drmSystems JobConfigEncryptionDrmSystems
    DRM system(s) to use; at least one must be specified. If a DRM system is omitted, it is considered disabled. Structure is documented below.
    mpegCenc JobConfigEncryptionMpegCenc
    Configuration for MPEG Common Encryption (MPEG-CENC). Structure is documented below.
    sampleAes JobConfigEncryptionSampleAes
    Configuration for SAMPLE-AES encryption.
    secretManagerKeySource JobConfigEncryptionSecretManagerKeySource
    Configuration for secrets stored in Google Secret Manager. Structure is documented below.
    id string
    Identifier for this set of encryption options.
    aes128 JobConfigEncryptionAes128
    Configuration for AES-128 encryption.
    drmSystems JobConfigEncryptionDrmSystems
    DRM system(s) to use; at least one must be specified. If a DRM system is omitted, it is considered disabled. Structure is documented below.
    mpegCenc JobConfigEncryptionMpegCenc
    Configuration for MPEG Common Encryption (MPEG-CENC). Structure is documented below.
    sampleAes JobConfigEncryptionSampleAes
    Configuration for SAMPLE-AES encryption.
    secretManagerKeySource JobConfigEncryptionSecretManagerKeySource
    Configuration for secrets stored in Google Secret Manager. Structure is documented below.
    id str
    Identifier for this set of encryption options.
    aes128 JobConfigEncryptionAes128
    Configuration for AES-128 encryption.
    drm_systems JobConfigEncryptionDrmSystems
    DRM system(s) to use; at least one must be specified. If a DRM system is omitted, it is considered disabled. Structure is documented below.
    mpeg_cenc JobConfigEncryptionMpegCenc
    Configuration for MPEG Common Encryption (MPEG-CENC). Structure is documented below.
    sample_aes JobConfigEncryptionSampleAes
    Configuration for SAMPLE-AES encryption.
    secret_manager_key_source JobConfigEncryptionSecretManagerKeySource
    Configuration for secrets stored in Google Secret Manager. Structure is documented below.
    id String
    Identifier for this set of encryption options.
    aes128 Property Map
    Configuration for AES-128 encryption.
    drmSystems Property Map
    DRM system(s) to use; at least one must be specified. If a DRM system is omitted, it is considered disabled. Structure is documented below.
    mpegCenc Property Map
    Configuration for MPEG Common Encryption (MPEG-CENC). Structure is documented below.
    sampleAes Property Map
    Configuration for SAMPLE-AES encryption.
    secretManagerKeySource Property Map
    Configuration for secrets stored in Google Secret Manager. Structure is documented below.

    JobConfigEncryptionDrmSystems, JobConfigEncryptionDrmSystemsArgs

    clearkey Property Map
    Clearkey configuration.
    fairplay Property Map
    Fairplay configuration.
    playready Property Map
    Playready configuration.
    widevine Property Map
    Widevine configuration.

    JobConfigEncryptionMpegCenc, JobConfigEncryptionMpegCencArgs

    Scheme string
    Specify the encryption scheme.
    Scheme string
    Specify the encryption scheme.
    scheme String
    Specify the encryption scheme.
    scheme string
    Specify the encryption scheme.
    scheme str
    Specify the encryption scheme.
    scheme String
    Specify the encryption scheme.

    JobConfigEncryptionSecretManagerKeySource, JobConfigEncryptionSecretManagerKeySourceArgs

    SecretVersion string
    The name of the Secret Version containing the encryption key in the following format: projects/{project}/secrets/{secret_id}/versions/{version_number}.
    SecretVersion string
    The name of the Secret Version containing the encryption key in the following format: projects/{project}/secrets/{secret_id}/versions/{version_number}.
    secretVersion String
    The name of the Secret Version containing the encryption key in the following format: projects/{project}/secrets/{secret_id}/versions/{version_number}.
    secretVersion string
    The name of the Secret Version containing the encryption key in the following format: projects/{project}/secrets/{secret_id}/versions/{version_number}.
    secret_version str
    The name of the Secret Version containing the encryption key in the following format: projects/{project}/secrets/{secret_id}/versions/{version_number}.
    secretVersion String
    The name of the Secret Version containing the encryption key in the following format: projects/{project}/secrets/{secret_id}/versions/{version_number}.

    JobConfigInput, JobConfigInputArgs

    Key string
    A unique key for this input. Must be specified when using advanced mapping and edit lists.
    Uri string
    URI of the media. Input files must be at least 5 seconds in duration and stored in Cloud Storage (for example, gs://bucket/inputs/file.mp4). If empty, the value is populated from Job.input_uri.
    Key string
    A unique key for this input. Must be specified when using advanced mapping and edit lists.
    Uri string
    URI of the media. Input files must be at least 5 seconds in duration and stored in Cloud Storage (for example, gs://bucket/inputs/file.mp4). If empty, the value is populated from Job.input_uri.
    key String
    A unique key for this input. Must be specified when using advanced mapping and edit lists.
    uri String
    URI of the media. Input files must be at least 5 seconds in duration and stored in Cloud Storage (for example, gs://bucket/inputs/file.mp4). If empty, the value is populated from Job.input_uri.
    key string
    A unique key for this input. Must be specified when using advanced mapping and edit lists.
    uri string
    URI of the media. Input files must be at least 5 seconds in duration and stored in Cloud Storage (for example, gs://bucket/inputs/file.mp4). If empty, the value is populated from Job.input_uri.
    key str
    A unique key for this input. Must be specified when using advanced mapping and edit lists.
    uri str
    URI of the media. Input files must be at least 5 seconds in duration and stored in Cloud Storage (for example, gs://bucket/inputs/file.mp4). If empty, the value is populated from Job.input_uri.
    key String
    A unique key for this input. Must be specified when using advanced mapping and edit lists.
    uri String
    URI of the media. Input files must be at least 5 seconds in duration and stored in Cloud Storage (for example, gs://bucket/inputs/file.mp4). If empty, the value is populated from Job.input_uri.

    JobConfigManifest, JobConfigManifestArgs

    FileName string
    The name of the generated file. The default is manifest.
    MuxStreams List<string>
    List of user supplied MuxStream.key values that should appear in this manifest.
    Type string
    Type of the manifest. Possible values are: MANIFEST_TYPE_UNSPECIFIED, HLS, DASH.
    FileName string
    The name of the generated file. The default is manifest.
    MuxStreams []string
    List of user supplied MuxStream.key values that should appear in this manifest.
    Type string
    Type of the manifest. Possible values are: MANIFEST_TYPE_UNSPECIFIED, HLS, DASH.
    fileName String
    The name of the generated file. The default is manifest.
    muxStreams List<String>
    List of user supplied MuxStream.key values that should appear in this manifest.
    type String
    Type of the manifest. Possible values are: MANIFEST_TYPE_UNSPECIFIED, HLS, DASH.
    fileName string
    The name of the generated file. The default is manifest.
    muxStreams string[]
    List of user supplied MuxStream.key values that should appear in this manifest.
    type string
    Type of the manifest. Possible values are: MANIFEST_TYPE_UNSPECIFIED, HLS, DASH.
    file_name str
    The name of the generated file. The default is manifest.
    mux_streams Sequence[str]
    List of user supplied MuxStream.key values that should appear in this manifest.
    type str
    Type of the manifest. Possible values are: MANIFEST_TYPE_UNSPECIFIED, HLS, DASH.
    fileName String
    The name of the generated file. The default is manifest.
    muxStreams List<String>
    List of user supplied MuxStream.key values that should appear in this manifest.
    type String
    Type of the manifest. Possible values are: MANIFEST_TYPE_UNSPECIFIED, HLS, DASH.

    JobConfigMuxStream, JobConfigMuxStreamArgs

    Container string
    The container format. The default is mp4.
    ElementaryStreams List<string>
    List of ElementaryStream.key values multiplexed in this stream.
    EncryptionId string
    Identifier of the encryption configuration to use.
    FileName string
    The name of the generated file.
    Key string
    A unique key for this multiplexed stream.
    SegmentSettings JobConfigMuxStreamSegmentSettings
    Segment settings for ts, fmp4 and vtt. Structure is documented below.
    Container string
    The container format. The default is mp4.
    ElementaryStreams []string
    List of ElementaryStream.key values multiplexed in this stream.
    EncryptionId string
    Identifier of the encryption configuration to use.
    FileName string
    The name of the generated file.
    Key string
    A unique key for this multiplexed stream.
    SegmentSettings JobConfigMuxStreamSegmentSettings
    Segment settings for ts, fmp4 and vtt. Structure is documented below.
    container String
    The container format. The default is mp4.
    elementaryStreams List<String>
    List of ElementaryStream.key values multiplexed in this stream.
    encryptionId String
    Identifier of the encryption configuration to use.
    fileName String
    The name of the generated file.
    key String
    A unique key for this multiplexed stream.
    segmentSettings JobConfigMuxStreamSegmentSettings
    Segment settings for ts, fmp4 and vtt. Structure is documented below.
    container string
    The container format. The default is mp4.
    elementaryStreams string[]
    List of ElementaryStream.key values multiplexed in this stream.
    encryptionId string
    Identifier of the encryption configuration to use.
    fileName string
    The name of the generated file.
    key string
    A unique key for this multiplexed stream.
    segmentSettings JobConfigMuxStreamSegmentSettings
    Segment settings for ts, fmp4 and vtt. Structure is documented below.
    container str
    The container format. The default is mp4.
    elementary_streams Sequence[str]
    List of ElementaryStream.key values multiplexed in this stream.
    encryption_id str
    Identifier of the encryption configuration to use.
    file_name str
    The name of the generated file.
    key str
    A unique key for this multiplexed stream.
    segment_settings JobConfigMuxStreamSegmentSettings
    Segment settings for ts, fmp4 and vtt. Structure is documented below.
    container String
    The container format. The default is mp4.
    elementaryStreams List<String>
    List of ElementaryStream.key values multiplexed in this stream.
    encryptionId String
    Identifier of the encryption configuration to use.
    fileName String
    The name of the generated file.
    key String
    A unique key for this multiplexed stream.
    segmentSettings Property Map
    Segment settings for ts, fmp4 and vtt. Structure is documented below.

    JobConfigMuxStreamSegmentSettings, JobConfigMuxStreamSegmentSettingsArgs

    SegmentDuration string
    Duration of the segments in seconds. The default is 6.0s.
    SegmentDuration string
    Duration of the segments in seconds. The default is 6.0s.
    segmentDuration String
    Duration of the segments in seconds. The default is 6.0s.
    segmentDuration string
    Duration of the segments in seconds. The default is 6.0s.
    segment_duration str
    Duration of the segments in seconds. The default is 6.0s.
    segmentDuration String
    Duration of the segments in seconds. The default is 6.0s.

    JobConfigOutput, JobConfigOutputArgs

    Uri string
    URI for the output file(s). For example, gs://my-bucket/outputs/.
    Uri string
    URI for the output file(s). For example, gs://my-bucket/outputs/.
    uri String
    URI for the output file(s). For example, gs://my-bucket/outputs/.
    uri string
    URI for the output file(s). For example, gs://my-bucket/outputs/.
    uri str
    URI for the output file(s). For example, gs://my-bucket/outputs/.
    uri String
    URI for the output file(s). For example, gs://my-bucket/outputs/.

    JobConfigOverlay, JobConfigOverlayArgs

    Animations List<JobConfigOverlayAnimation>
    List of animations. The list should be chronological, without any time overlap. Structure is documented below.
    Image JobConfigOverlayImage
    Image overlay. Structure is documented below.
    Animations []JobConfigOverlayAnimation
    List of animations. The list should be chronological, without any time overlap. Structure is documented below.
    Image JobConfigOverlayImage
    Image overlay. Structure is documented below.
    animations List<JobConfigOverlayAnimation>
    List of animations. The list should be chronological, without any time overlap. Structure is documented below.
    image JobConfigOverlayImage
    Image overlay. Structure is documented below.
    animations JobConfigOverlayAnimation[]
    List of animations. The list should be chronological, without any time overlap. Structure is documented below.
    image JobConfigOverlayImage
    Image overlay. Structure is documented below.
    animations Sequence[JobConfigOverlayAnimation]
    List of animations. The list should be chronological, without any time overlap. Structure is documented below.
    image JobConfigOverlayImage
    Image overlay. Structure is documented below.
    animations List<Property Map>
    List of animations. The list should be chronological, without any time overlap. Structure is documented below.
    image Property Map
    Image overlay. Structure is documented below.

    JobConfigOverlayAnimation, JobConfigOverlayAnimationArgs

    AnimationFade JobConfigOverlayAnimationAnimationFade
    Display overlay object with fade animation. Structure is documented below.
    AnimationFade JobConfigOverlayAnimationAnimationFade
    Display overlay object with fade animation. Structure is documented below.
    animationFade JobConfigOverlayAnimationAnimationFade
    Display overlay object with fade animation. Structure is documented below.
    animationFade JobConfigOverlayAnimationAnimationFade
    Display overlay object with fade animation. Structure is documented below.
    animation_fade JobConfigOverlayAnimationAnimationFade
    Display overlay object with fade animation. Structure is documented below.
    animationFade Property Map
    Display overlay object with fade animation. Structure is documented below.

    JobConfigOverlayAnimationAnimationFade, JobConfigOverlayAnimationAnimationFadeArgs

    FadeType string
    Required. Type of fade animation: FADE_IN or FADE_OUT. The possible values are:

    • FADE_TYPE_UNSPECIFIED: The fade type is not specified.
    • FADE_IN: Fade the overlay object into view.
    • FADE_OUT: Fade the overlay object out of view. Possible values are: FADE_TYPE_UNSPECIFIED, FADE_IN, FADE_OUT.
    EndTimeOffset string
    The time to end the fade animation, in seconds.
    StartTimeOffset string
    The time to start the fade animation, in seconds.
    Xy JobConfigOverlayAnimationAnimationFadeXy
    Normalized coordinates based on output video resolution. Structure is documented below.
    FadeType string
    Required. Type of fade animation: FADE_IN or FADE_OUT. The possible values are:

    • FADE_TYPE_UNSPECIFIED: The fade type is not specified.
    • FADE_IN: Fade the overlay object into view.
    • FADE_OUT: Fade the overlay object out of view. Possible values are: FADE_TYPE_UNSPECIFIED, FADE_IN, FADE_OUT.
    EndTimeOffset string
    The time to end the fade animation, in seconds.
    StartTimeOffset string
    The time to start the fade animation, in seconds.
    Xy JobConfigOverlayAnimationAnimationFadeXy
    Normalized coordinates based on output video resolution. Structure is documented below.
    fadeType String
    Required. Type of fade animation: FADE_IN or FADE_OUT. The possible values are:

    • FADE_TYPE_UNSPECIFIED: The fade type is not specified.
    • FADE_IN: Fade the overlay object into view.
    • FADE_OUT: Fade the overlay object out of view. Possible values are: FADE_TYPE_UNSPECIFIED, FADE_IN, FADE_OUT.
    endTimeOffset String
    The time to end the fade animation, in seconds.
    startTimeOffset String
    The time to start the fade animation, in seconds.
    xy JobConfigOverlayAnimationAnimationFadeXy
    Normalized coordinates based on output video resolution. Structure is documented below.
    fadeType string
    Required. Type of fade animation: FADE_IN or FADE_OUT. The possible values are:

    • FADE_TYPE_UNSPECIFIED: The fade type is not specified.
    • FADE_IN: Fade the overlay object into view.
    • FADE_OUT: Fade the overlay object out of view. Possible values are: FADE_TYPE_UNSPECIFIED, FADE_IN, FADE_OUT.
    endTimeOffset string
    The time to end the fade animation, in seconds.
    startTimeOffset string
    The time to start the fade animation, in seconds.
    xy JobConfigOverlayAnimationAnimationFadeXy
    Normalized coordinates based on output video resolution. Structure is documented below.
    fade_type str
    Required. Type of fade animation: FADE_IN or FADE_OUT. The possible values are:

    • FADE_TYPE_UNSPECIFIED: The fade type is not specified.
    • FADE_IN: Fade the overlay object into view.
    • FADE_OUT: Fade the overlay object out of view. Possible values are: FADE_TYPE_UNSPECIFIED, FADE_IN, FADE_OUT.
    end_time_offset str
    The time to end the fade animation, in seconds.
    start_time_offset str
    The time to start the fade animation, in seconds.
    xy JobConfigOverlayAnimationAnimationFadeXy
    Normalized coordinates based on output video resolution. Structure is documented below.
    fadeType String
    Required. Type of fade animation: FADE_IN or FADE_OUT. The possible values are:

    • FADE_TYPE_UNSPECIFIED: The fade type is not specified.
    • FADE_IN: Fade the overlay object into view.
    • FADE_OUT: Fade the overlay object out of view. Possible values are: FADE_TYPE_UNSPECIFIED, FADE_IN, FADE_OUT.
    endTimeOffset String
    The time to end the fade animation, in seconds.
    startTimeOffset String
    The time to start the fade animation, in seconds.
    xy Property Map
    Normalized coordinates based on output video resolution. Structure is documented below.

    JobConfigOverlayAnimationAnimationFadeXy, JobConfigOverlayAnimationAnimationFadeXyArgs

    X double
    Normalized x coordinate.
    Y double
    Normalized y coordinate.
    X float64
    Normalized x coordinate.
    Y float64
    Normalized y coordinate.
    x Double
    Normalized x coordinate.
    y Double
    Normalized y coordinate.
    x number
    Normalized x coordinate.
    y number
    Normalized y coordinate.
    x float
    Normalized x coordinate.
    y float
    Normalized y coordinate.
    x Number
    Normalized x coordinate.
    y Number
    Normalized y coordinate.

    JobConfigOverlayImage, JobConfigOverlayImageArgs

    Uri string
    URI of the image in Cloud Storage. For example, gs://bucket/inputs/image.png.
    Uri string
    URI of the image in Cloud Storage. For example, gs://bucket/inputs/image.png.
    uri String
    URI of the image in Cloud Storage. For example, gs://bucket/inputs/image.png.
    uri string
    URI of the image in Cloud Storage. For example, gs://bucket/inputs/image.png.
    uri str
    URI of the image in Cloud Storage. For example, gs://bucket/inputs/image.png.
    uri String
    URI of the image in Cloud Storage. For example, gs://bucket/inputs/image.png.

    JobConfigPubsubDestination, JobConfigPubsubDestinationArgs

    Topic string
    The name of the Pub/Sub topic to publish job completion notification to. For example: projects/{project}/topics/{topic}.
    Topic string
    The name of the Pub/Sub topic to publish job completion notification to. For example: projects/{project}/topics/{topic}.
    topic String
    The name of the Pub/Sub topic to publish job completion notification to. For example: projects/{project}/topics/{topic}.
    topic string
    The name of the Pub/Sub topic to publish job completion notification to. For example: projects/{project}/topics/{topic}.
    topic str
    The name of the Pub/Sub topic to publish job completion notification to. For example: projects/{project}/topics/{topic}.
    topic String
    The name of the Pub/Sub topic to publish job completion notification to. For example: projects/{project}/topics/{topic}.

    Import

    Job can be imported using any of these accepted formats:

    • {{project}}/{{name}}

    • {{project}} {{name}}

    • {{name}}

    When using the pulumi import command, Job can be imported using one of the formats above. For example:

    $ pulumi import gcp:transcoder/job:Job default {{project}}/{{name}}
    
    $ pulumi import gcp:transcoder/job:Job default "{{project}} {{name}}"
    
    $ pulumi import gcp:transcoder/job:Job default {{name}}
    

    To learn more about importing existing cloud resources, see Importing resources.

    Package Details

    Repository
    Google Cloud (GCP) Classic pulumi/pulumi-gcp
    License
    Apache-2.0
    Notes
    This Pulumi package is based on the google-beta Terraform Provider.
    gcp logo
    Google Cloud Classic v8.9.3 published on Monday, Nov 18, 2024 by Pulumi