gcp.transcoder.Job
Explore with Pulumi AI
Transcoding Job Resource
To get more information about Job, see:
- API documentation
 - How-to Guides
 
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 {
		_default, 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 {
		_default, 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 {
		_default, 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 {
		_default, 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 {
		_default, 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)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
Job
Config  - 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_labelsfor 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.
 - Template
Id 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
Job
Config Args  - 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_labelsfor 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.
 - Template
Id 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
Job
Config  - 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_labelsfor 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.
 - template
Id 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
Job
Config  - 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_labelsfor 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.
 - template
Id 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
Job
Config Args  - 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_labelsfor 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_labelsfor 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.
 - template
Id 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:
- Create
Time string - The time the job was created.
 - Effective
Labels 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.
 - End
Time 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.
 - Pulumi
Labels Dictionary<string, string> - The combination of labels configured directly on the resource and default labels configured on the provider.
 - Start
Time string - The time the transcoding started.
 - State string
 - The current state of the job.
 
- Create
Time string - The time the job was created.
 - Effective
Labels 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.
 - End
Time 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.
 - Pulumi
Labels map[string]string - The combination of labels configured directly on the resource and default labels configured on the provider.
 - Start
Time string - The time the transcoding started.
 - State string
 - The current state of the job.
 
- create
Time String - The time the job was created.
 - effective
Labels 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.
 - end
Time 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.
 - pulumi
Labels Map<String,String> - The combination of labels configured directly on the resource and default labels configured on the provider.
 - start
Time String - The time the transcoding started.
 - state String
 - The current state of the job.
 
- create
Time string - The time the job was created.
 - effective
Labels {[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.
 - end
Time 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.
 - pulumi
Labels {[key: string]: string} - The combination of labels configured directly on the resource and default labels configured on the provider.
 - start
Time 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.
 
- create
Time String - The time the job was created.
 - effective
Labels Map<String> - All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
 - end
Time 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.
 - pulumi
Labels Map<String> - The combination of labels configured directly on the resource and default labels configured on the provider.
 - start
Time 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) -> Jobfunc 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)resources:  _:    type: gcp:transcoder:Job    get:      id: ${id}- 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.
 
- Config
Job
Config  - The configuration for this template. Structure is documented below.
 - Create
Time string - The time the job was created.
 - Effective
Labels 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.
 - End
Time 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_labelsfor 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.
 - Pulumi
Labels Dictionary<string, string> - The combination of labels configured directly on the resource and default labels configured on the provider.
 - Start
Time string - The time the transcoding started.
 - State string
 - The current state of the job.
 - Template
Id string - Specify the templateId to use for populating Job.config. The default is preset/web-hd, which is the only supported preset.
 
- Config
Job
Config Args  - The configuration for this template. Structure is documented below.
 - Create
Time string - The time the job was created.
 - Effective
Labels 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.
 - End
Time 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_labelsfor 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.
 - Pulumi
Labels map[string]string - The combination of labels configured directly on the resource and default labels configured on the provider.
 - Start
Time string - The time the transcoding started.
 - State string
 - The current state of the job.
 - Template
Id string - Specify the templateId to use for populating Job.config. The default is preset/web-hd, which is the only supported preset.
 
- config
Job
Config  - The configuration for this template. Structure is documented below.
 - create
Time String - The time the job was created.
 - effective
Labels 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.
 - end
Time 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_labelsfor 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.
 - pulumi
Labels Map<String,String> - The combination of labels configured directly on the resource and default labels configured on the provider.
 - start
Time String - The time the transcoding started.
 - state String
 - The current state of the job.
 - template
Id String - Specify the templateId to use for populating Job.config. The default is preset/web-hd, which is the only supported preset.
 
- config
Job
Config  - The configuration for this template. Structure is documented below.
 - create
Time string - The time the job was created.
 - effective
Labels {[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.
 - end
Time 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_labelsfor 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.
 - pulumi
Labels {[key: string]: string} - The combination of labels configured directly on the resource and default labels configured on the provider.
 - start
Time string - The time the transcoding started.
 - state string
 - The current state of the job.
 - template
Id string - Specify the templateId to use for populating Job.config. The default is preset/web-hd, which is the only supported preset.
 
- config
Job
Config Args  - 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_labelsfor 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.
 - create
Time String - The time the job was created.
 - effective
Labels Map<String> - All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
 - end
Time 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_labelsfor 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.
 - pulumi
Labels Map<String> - The combination of labels configured directly on the resource and default labels configured on the provider.
 - start
Time String - The time the transcoding started.
 - state String
 - The current state of the job.
 - template
Id 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    
- Ad
Breaks List<JobConfig Ad Break>  - Ad break. Structure is documented below.
 - Edit
Lists List<JobConfig Edit List>  - List of input assets stored in Cloud Storage. Structure is documented below.
 - Elementary
Streams List<JobConfig Elementary Stream>  - List of input assets stored in Cloud Storage. Structure is documented below.
 - Encryptions
List<Job
Config Encryption>  - List of encryption configurations for the content. Structure is documented below.
 - Inputs
List<Job
Config Input>  - List of input assets stored in Cloud Storage. Structure is documented below.
 - Manifests
List<Job
Config Manifest>  - Manifest configuration. Structure is documented below.
 - Mux
Streams List<JobConfig Mux Stream>  - Multiplexing settings for output stream. Structure is documented below.
 - Output
Job
Config Output  - Location of output file(s) in a Cloud Storage bucket. Structure is documented below.
 - Overlays
List<Job
Config Overlay>  - List of overlays on the output video, in descending Z-order. Structure is documented below.
 - Pubsub
Destination JobConfig Pubsub Destination  - Pub/Sub destination. Structure is documented below.
 
- Ad
Breaks []JobConfig Ad Break  - Ad break. Structure is documented below.
 - Edit
Lists []JobConfig Edit List  - List of input assets stored in Cloud Storage. Structure is documented below.
 - Elementary
Streams []JobConfig Elementary Stream  - List of input assets stored in Cloud Storage. Structure is documented below.
 - Encryptions
[]Job
Config Encryption  - List of encryption configurations for the content. Structure is documented below.
 - Inputs
[]Job
Config Input Type  - List of input assets stored in Cloud Storage. Structure is documented below.
 - Manifests
[]Job
Config Manifest  - Manifest configuration. Structure is documented below.
 - Mux
Streams []JobConfig Mux Stream  - Multiplexing settings for output stream. Structure is documented below.
 - Output
Job
Config Output Type  - Location of output file(s) in a Cloud Storage bucket. Structure is documented below.
 - Overlays
[]Job
Config Overlay  - List of overlays on the output video, in descending Z-order. Structure is documented below.
 - Pubsub
Destination JobConfig Pubsub Destination  - Pub/Sub destination. Structure is documented below.
 
- ad
Breaks List<JobConfig Ad Break>  - Ad break. Structure is documented below.
 - edit
Lists List<JobConfig Edit List>  - List of input assets stored in Cloud Storage. Structure is documented below.
 - elementary
Streams List<JobConfig Elementary Stream>  - List of input assets stored in Cloud Storage. Structure is documented below.
 - encryptions
List<Job
Config Encryption>  - List of encryption configurations for the content. Structure is documented below.
 - inputs
List<Job
Config Input>  - List of input assets stored in Cloud Storage. Structure is documented below.
 - manifests
List<Job
Config Manifest>  - Manifest configuration. Structure is documented below.
 - mux
Streams List<JobConfig Mux Stream>  - Multiplexing settings for output stream. Structure is documented below.
 - output
Job
Config Output  - Location of output file(s) in a Cloud Storage bucket. Structure is documented below.
 - overlays
List<Job
Config Overlay>  - List of overlays on the output video, in descending Z-order. Structure is documented below.
 - pubsub
Destination JobConfig Pubsub Destination  - Pub/Sub destination. Structure is documented below.
 
- ad
Breaks JobConfig Ad Break[]  - Ad break. Structure is documented below.
 - edit
Lists JobConfig Edit List[]  - List of input assets stored in Cloud Storage. Structure is documented below.
 - elementary
Streams JobConfig Elementary Stream[]  - List of input assets stored in Cloud Storage. Structure is documented below.
 - encryptions
Job
Config Encryption[]  - List of encryption configurations for the content. Structure is documented below.
 - inputs
Job
Config Input[]  - List of input assets stored in Cloud Storage. Structure is documented below.
 - manifests
Job
Config Manifest[]  - Manifest configuration. Structure is documented below.
 - mux
Streams JobConfig Mux Stream[]  - Multiplexing settings for output stream. Structure is documented below.
 - output
Job
Config Output  - Location of output file(s) in a Cloud Storage bucket. Structure is documented below.
 - overlays
Job
Config Overlay[]  - List of overlays on the output video, in descending Z-order. Structure is documented below.
 - pubsub
Destination JobConfig Pubsub Destination  - Pub/Sub destination. Structure is documented below.
 
- ad_
breaks Sequence[JobConfig Ad Break]  - Ad break. Structure is documented below.
 - edit_
lists Sequence[JobConfig Edit List]  - List of input assets stored in Cloud Storage. Structure is documented below.
 - elementary_
streams Sequence[JobConfig Elementary Stream]  - List of input assets stored in Cloud Storage. Structure is documented below.
 - encryptions
Sequence[Job
Config Encryption]  - List of encryption configurations for the content. Structure is documented below.
 - inputs
Sequence[Job
Config Input]  - List of input assets stored in Cloud Storage. Structure is documented below.
 - manifests
Sequence[Job
Config Manifest]  - Manifest configuration. Structure is documented below.
 - mux_
streams Sequence[JobConfig Mux Stream]  - Multiplexing settings for output stream. Structure is documented below.
 - output
Job
Config Output  - Location of output file(s) in a Cloud Storage bucket. Structure is documented below.
 - overlays
Sequence[Job
Config Overlay]  - List of overlays on the output video, in descending Z-order. Structure is documented below.
 - pubsub_
destination JobConfig Pubsub Destination  - Pub/Sub destination. Structure is documented below.
 
- ad
Breaks List<Property Map> - Ad break. Structure is documented below.
 - edit
Lists List<Property Map> - List of input assets stored in Cloud Storage. Structure is documented below.
 - elementary
Streams 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.
 - mux
Streams 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.
 - pubsub
Destination Property Map - Pub/Sub destination. Structure is documented below.
 
JobConfigAdBreak, JobConfigAdBreakArgs        
- Start
Time stringOffset  - Start time in seconds for the ad break, relative to the output file timeline
 
- Start
Time stringOffset  - Start time in seconds for the ad break, relative to the output file timeline
 
- start
Time StringOffset  - Start time in seconds for the ad break, relative to the output file timeline
 
- start
Time stringOffset  - Start time in seconds for the ad break, relative to the output file timeline
 
- start_
time_ stroffset  - Start time in seconds for the ad break, relative to the output file timeline
 
- start
Time StringOffset  - 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.
 - Start
Time stringOffset  - 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.
 - Start
Time stringOffset  - 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.
 - start
Time StringOffset  - 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.
 - start
Time stringOffset  - 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_ stroffset  - 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.
 - start
Time StringOffset  - Start time in seconds for the atom, relative to the input file timeline. The default is 
0s. 
JobConfigElementaryStream, JobConfigElementaryStreamArgs        
- Audio
Stream JobConfig Elementary Stream Audio Stream  - Encoding of an audio stream. Structure is documented below.
 - Key string
 - A unique key for this atom.
 - Video
Stream JobConfig Elementary Stream Video Stream  - Encoding of a video stream. Structure is documented below.
 
- Audio
Stream JobConfig Elementary Stream Audio Stream  - Encoding of an audio stream. Structure is documented below.
 - Key string
 - A unique key for this atom.
 - Video
Stream JobConfig Elementary Stream Video Stream  - Encoding of a video stream. Structure is documented below.
 
- audio
Stream JobConfig Elementary Stream Audio Stream  - Encoding of an audio stream. Structure is documented below.
 - key String
 - A unique key for this atom.
 - video
Stream JobConfig Elementary Stream Video Stream  - Encoding of a video stream. Structure is documented below.
 
- audio
Stream JobConfig Elementary Stream Audio Stream  - Encoding of an audio stream. Structure is documented below.
 - key string
 - A unique key for this atom.
 - video
Stream JobConfig Elementary Stream Video Stream  - Encoding of a video stream. Structure is documented below.
 
- audio_
stream JobConfig Elementary Stream Audio Stream  - Encoding of an audio stream. Structure is documented below.
 - key str
 - A unique key for this atom.
 - video_
stream JobConfig Elementary Stream Video Stream  - Encoding of a video stream. Structure is documented below.
 
- audio
Stream Property Map - Encoding of an audio stream. Structure is documented below.
 - key String
 - A unique key for this atom.
 - video
Stream Property Map - Encoding of a video stream. Structure is documented below.
 
JobConfigElementaryStreamAudioStream, JobConfigElementaryStreamAudioStreamArgs            
- Bitrate
Bps int - Audio bitrate in bits per second.
 - Channel
Count int - Number of audio channels. The default is 
2. - Channel
Layouts 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. - Sample
Rate intHertz  - 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 []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. - Sample
Rate intHertz  - The audio sample rate in Hertz. The default is 
48000. 
- bitrate
Bps Integer - Audio bitrate in bits per second.
 - channel
Count Integer - Number of audio channels. The default is 
2. - channel
Layouts 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. - sample
Rate IntegerHertz  - The audio sample rate in Hertz. The default is 
48000. 
- bitrate
Bps number - Audio bitrate in bits per second.
 - channel
Count number - Number of audio channels. The default is 
2. - channel
Layouts 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. - sample
Rate numberHertz  - 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_ inthertz  - The audio sample rate in Hertz. The default is 
48000. 
- bitrate
Bps Number - Audio bitrate in bits per second.
 - channel
Count Number - Number of audio channels. The default is 
2. - channel
Layouts 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. - sample
Rate NumberHertz  - The audio sample rate in Hertz. The default is 
48000. 
JobConfigElementaryStreamVideoStream, JobConfigElementaryStreamVideoStreamArgs            
- H264
Job
Config Elementary Stream Video Stream H264  H264 codec settings Structure is documented below.
The
h264block supports:
- H264
Job
Config Elementary Stream Video Stream H264  H264 codec settings Structure is documented below.
The
h264block supports:
- h264
Job
Config Elementary Stream Video Stream H264  H264 codec settings Structure is documented below.
The
h264block supports:
- h264
Job
Config Elementary Stream Video Stream H264  H264 codec settings Structure is documented below.
The
h264block supports:
- h264
Job
Config Elementary Stream Video Stream H264  H264 codec settings Structure is documented below.
The
h264block supports:
- h264 Property Map
 H264 codec settings Structure is documented below.
The
h264block supports:
JobConfigElementaryStreamVideoStreamH264, JobConfigElementaryStreamVideoStreamH264Args              
- 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 string - The entropy coder to use. The default is 'cabac'.
 - Gop
Duration string - Select the GOP size based on the specified duration. The default is '3s'.
 - Height
Pixels int - The height of the video in pixels.
 - Hlg
Job
Config Elementary Stream Video Stream H264Hlg  - HLG color format setting for H264.
 - Pixel
Format 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.
 - Rate
Control stringMode  - Specify the mode. The default is 'vbr'.
 - Sdr
Job
Config Elementary Stream Video Stream H264Sdr  - SDR color format setting for H264.
 - Vbv
Fullness intBits  - Initial fullness of the Video Buffering Verifier (VBV) buffer in bits.
 - Vbv
Size intBits  - Size of the Video Buffering Verifier (VBV) buffer in bits.
 - Width
Pixels int - 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 string - The entropy coder to use. The default is 'cabac'.
 - Gop
Duration string - Select the GOP size based on the specified duration. The default is '3s'.
 - Height
Pixels int - The height of the video in pixels.
 - Hlg
Job
Config Elementary Stream Video Stream H264Hlg  - HLG color format setting for H264.
 - Pixel
Format 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.
 - Rate
Control stringMode  - Specify the mode. The default is 'vbr'.
 - Sdr
Job
Config Elementary Stream Video Stream H264Sdr  - SDR color format setting for H264.
 - Vbv
Fullness intBits  - Initial fullness of the Video Buffering Verifier (VBV) buffer in bits.
 - Vbv
Size intBits  - Size of the Video Buffering Verifier (VBV) buffer in bits.
 - Width
Pixels int - The width of the video in pixels.
 
- bitrate
Bps Integer - The video bitrate in bits per second.
 - frame
Rate Integer - The target video frame rate in frames per second (FPS).
 - crf
Level Integer - Target CRF level. The default is '21'.
 - entropy
Coder String - The entropy coder to use. The default is 'cabac'.
 - gop
Duration String - Select the GOP size based on the specified duration. The default is '3s'.
 - height
Pixels Integer - The height of the video in pixels.
 - hlg
Job
Config Elementary Stream Video Stream H264Hlg  - HLG color format setting for H264.
 - pixel
Format 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.
 - rate
Control StringMode  - Specify the mode. The default is 'vbr'.
 - sdr
Job
Config Elementary Stream Video Stream H264Sdr  - SDR color format setting for H264.
 - vbv
Fullness IntegerBits  - Initial fullness of the Video Buffering Verifier (VBV) buffer in bits.
 - vbv
Size IntegerBits  - Size of the Video Buffering Verifier (VBV) buffer in bits.
 - width
Pixels Integer - The width of the video in pixels.
 
- bitrate
Bps number - The video bitrate in bits per second.
 - frame
Rate number - The target video frame rate in frames per second (FPS).
 - crf
Level number - Target CRF level. The default is '21'.
 - entropy
Coder string - The entropy coder to use. The default is 'cabac'.
 - gop
Duration string - Select the GOP size based on the specified duration. The default is '3s'.
 - height
Pixels number - The height of the video in pixels.
 - hlg
Job
Config Elementary Stream Video Stream H264Hlg  - HLG color format setting for H264.
 - pixel
Format 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.
 - rate
Control stringMode  - Specify the mode. The default is 'vbr'.
 - sdr
Job
Config Elementary Stream Video Stream H264Sdr  - SDR color format setting for H264.
 - vbv
Fullness numberBits  - Initial fullness of the Video Buffering Verifier (VBV) buffer in bits.
 - vbv
Size numberBits  - Size of the Video Buffering Verifier (VBV) buffer in bits.
 - width
Pixels 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
Job
Config Elementary Stream Video Stream H264Hlg  - 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_ strmode  - Specify the mode. The default is 'vbr'.
 - sdr
Job
Config Elementary Stream Video Stream H264Sdr  - SDR color format setting for H264.
 - vbv_
fullness_ intbits  - Initial fullness of the Video Buffering Verifier (VBV) buffer in bits.
 - vbv_
size_ intbits  - Size of the Video Buffering Verifier (VBV) buffer in bits.
 - width_
pixels int - The width of the video in pixels.
 
- bitrate
Bps Number - The video bitrate in bits per second.
 - frame
Rate Number - The target video frame rate in frames per second (FPS).
 - crf
Level Number - Target CRF level. The default is '21'.
 - entropy
Coder String - The entropy coder to use. The default is 'cabac'.
 - gop
Duration String - Select the GOP size based on the specified duration. The default is '3s'.
 - height
Pixels Number - The height of the video in pixels.
 - hlg Property Map
 - HLG color format setting for H264.
 - pixel
Format 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.
 - rate
Control StringMode  - Specify the mode. The default is 'vbr'.
 - sdr Property Map
 - SDR color format setting for H264.
 - vbv
Fullness NumberBits  - Initial fullness of the Video Buffering Verifier (VBV) buffer in bits.
 - vbv
Size NumberBits  - Size of the Video Buffering Verifier (VBV) buffer in bits.
 - width
Pixels Number - The width of the video in pixels.
 
JobConfigEncryption, JobConfigEncryptionArgs      
- Id string
 - Identifier for this set of encryption options.
 - Aes128
Job
Config Encryption Aes128  - Configuration for AES-128 encryption.
 - Drm
Systems JobConfig Encryption Drm Systems  - 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 JobConfig Encryption Mpeg Cenc  - Configuration for MPEG Common Encryption (MPEG-CENC). Structure is documented below.
 - Sample
Aes JobConfig Encryption Sample Aes  - Configuration for SAMPLE-AES encryption.
 - Secret
Manager JobKey Source Config Encryption Secret Manager Key Source  - Configuration for secrets stored in Google Secret Manager. Structure is documented below.
 
- Id string
 - Identifier for this set of encryption options.
 - Aes128
Job
Config Encryption Aes128  - Configuration for AES-128 encryption.
 - Drm
Systems JobConfig Encryption Drm Systems  - 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 JobConfig Encryption Mpeg Cenc  - Configuration for MPEG Common Encryption (MPEG-CENC). Structure is documented below.
 - Sample
Aes JobConfig Encryption Sample Aes  - Configuration for SAMPLE-AES encryption.
 - Secret
Manager JobKey Source Config Encryption Secret Manager Key Source  - Configuration for secrets stored in Google Secret Manager. Structure is documented below.
 
- id String
 - Identifier for this set of encryption options.
 - aes128
Job
Config Encryption Aes128  - Configuration for AES-128 encryption.
 - drm
Systems JobConfig Encryption Drm Systems  - 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 JobConfig Encryption Mpeg Cenc  - Configuration for MPEG Common Encryption (MPEG-CENC). Structure is documented below.
 - sample
Aes JobConfig Encryption Sample Aes  - Configuration for SAMPLE-AES encryption.
 - secret
Manager JobKey Source Config Encryption Secret Manager Key Source  - Configuration for secrets stored in Google Secret Manager. Structure is documented below.
 
- id string
 - Identifier for this set of encryption options.
 - aes128
Job
Config Encryption Aes128  - Configuration for AES-128 encryption.
 - drm
Systems JobConfig Encryption Drm Systems  - 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 JobConfig Encryption Mpeg Cenc  - Configuration for MPEG Common Encryption (MPEG-CENC). Structure is documented below.
 - sample
Aes JobConfig Encryption Sample Aes  - Configuration for SAMPLE-AES encryption.
 - secret
Manager JobKey Source Config Encryption Secret Manager Key Source  - Configuration for secrets stored in Google Secret Manager. Structure is documented below.
 
- id str
 - Identifier for this set of encryption options.
 - aes128
Job
Config Encryption Aes128  - Configuration for AES-128 encryption.
 - drm_
systems JobConfig Encryption Drm Systems  - 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 JobConfig Encryption Mpeg Cenc  - Configuration for MPEG Common Encryption (MPEG-CENC). Structure is documented below.
 - sample_
aes JobConfig Encryption Sample Aes  - Configuration for SAMPLE-AES encryption.
 - secret_
manager_ Jobkey_ source Config Encryption Secret Manager Key Source  - 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.
 - drm
Systems 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.
 - mpeg
Cenc Property Map - Configuration for MPEG Common Encryption (MPEG-CENC). Structure is documented below.
 - sample
Aes Property Map - Configuration for SAMPLE-AES encryption.
 - secret
Manager Property MapKey Source  - Configuration for secrets stored in Google Secret Manager. Structure is documented below.
 
JobConfigEncryptionDrmSystems, JobConfigEncryptionDrmSystemsArgs          
- Clearkey
Job
Config Encryption Drm Systems Clearkey  - Clearkey configuration.
 - Fairplay
Job
Config Encryption Drm Systems Fairplay  - Fairplay configuration.
 - Playready
Job
Config Encryption Drm Systems Playready  - Playready configuration.
 - Widevine
Job
Config Encryption Drm Systems Widevine  - Widevine configuration.
 
- Clearkey
Job
Config Encryption Drm Systems Clearkey  - Clearkey configuration.
 - Fairplay
Job
Config Encryption Drm Systems Fairplay  - Fairplay configuration.
 - Playready
Job
Config Encryption Drm Systems Playready  - Playready configuration.
 - Widevine
Job
Config Encryption Drm Systems Widevine  - Widevine configuration.
 
- clearkey
Job
Config Encryption Drm Systems Clearkey  - Clearkey configuration.
 - fairplay
Job
Config Encryption Drm Systems Fairplay  - Fairplay configuration.
 - playready
Job
Config Encryption Drm Systems Playready  - Playready configuration.
 - widevine
Job
Config Encryption Drm Systems Widevine  - Widevine configuration.
 
- clearkey
Job
Config Encryption Drm Systems Clearkey  - Clearkey configuration.
 - fairplay
Job
Config Encryption Drm Systems Fairplay  - Fairplay configuration.
 - playready
Job
Config Encryption Drm Systems Playready  - Playready configuration.
 - widevine
Job
Config Encryption Drm Systems Widevine  - Widevine configuration.
 
- clearkey
Job
Config Encryption Drm Systems Clearkey  - Clearkey configuration.
 - fairplay
Job
Config Encryption Drm Systems Fairplay  - Fairplay configuration.
 - playready
Job
Config Encryption Drm Systems Playready  - Playready configuration.
 - widevine
Job
Config Encryption Drm Systems Widevine  - Widevine configuration.
 
- 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              
- Secret
Version 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 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 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 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}.
 
- secret
Version 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 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      
- File
Name string - The name of the generated file. The default is 
manifest. - Mux
Streams 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. 
- File
Name string - The name of the generated file. The default is 
manifest. - Mux
Streams []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 String - The name of the generated file. The default is 
manifest. - mux
Streams 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. 
- file
Name string - The name of the generated file. The default is 
manifest. - mux
Streams 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. 
- file
Name String - The name of the generated file. The default is 
manifest. - mux
Streams 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. - Elementary
Streams List<string> - List of ElementaryStream.key values multiplexed in this stream.
 - Encryption
Id string - Identifier of the encryption configuration to use.
 - File
Name string - The name of the generated file.
 - Key string
 - A unique key for this multiplexed stream.
 - Segment
Settings JobConfig Mux Stream Segment Settings  - Segment settings for ts, fmp4 and vtt. Structure is documented below.
 
- Container string
 - The container format. The default is 
mp4. - Elementary
Streams []string - List of ElementaryStream.key values multiplexed in this stream.
 - Encryption
Id string - Identifier of the encryption configuration to use.
 - File
Name string - The name of the generated file.
 - Key string
 - A unique key for this multiplexed stream.
 - Segment
Settings JobConfig Mux Stream Segment Settings  - Segment settings for ts, fmp4 and vtt. Structure is documented below.
 
- container String
 - The container format. The default is 
mp4. - elementary
Streams List<String> - List of ElementaryStream.key values multiplexed in this stream.
 - encryption
Id String - Identifier of the encryption configuration to use.
 - file
Name String - The name of the generated file.
 - key String
 - A unique key for this multiplexed stream.
 - segment
Settings JobConfig Mux Stream Segment Settings  - Segment settings for ts, fmp4 and vtt. Structure is documented below.
 
- container string
 - The container format. The default is 
mp4. - elementary
Streams string[] - List of ElementaryStream.key values multiplexed in this stream.
 - encryption
Id string - Identifier of the encryption configuration to use.
 - file
Name string - The name of the generated file.
 - key string
 - A unique key for this multiplexed stream.
 - segment
Settings JobConfig Mux Stream Segment Settings  - 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 JobConfig Mux Stream Segment Settings  - Segment settings for ts, fmp4 and vtt. Structure is documented below.
 
- container String
 - The container format. The default is 
mp4. - elementary
Streams List<String> - List of ElementaryStream.key values multiplexed in this stream.
 - encryption
Id String - Identifier of the encryption configuration to use.
 - file
Name String - The name of the generated file.
 - key String
 - A unique key for this multiplexed stream.
 - segment
Settings Property Map - Segment settings for ts, fmp4 and vtt. Structure is documented below.
 
JobConfigMuxStreamSegmentSettings, JobConfigMuxStreamSegmentSettingsArgs            
- Segment
Duration string - Duration of the segments in seconds. The default is 
6.0s. 
- Segment
Duration string - Duration of the segments in seconds. The default is 
6.0s. 
- segment
Duration String - Duration of the segments in seconds. The default is 
6.0s. 
- segment
Duration 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. 
- segment
Duration 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<Job
Config Overlay Animation>  - List of animations. The list should be chronological, without any time overlap. Structure is documented below.
 - Image
Job
Config Overlay Image  - Image overlay. Structure is documented below.
 
- Animations
[]Job
Config Overlay Animation  - List of animations. The list should be chronological, without any time overlap. Structure is documented below.
 - Image
Job
Config Overlay Image  - Image overlay. Structure is documented below.
 
- animations
List<Job
Config Overlay Animation>  - List of animations. The list should be chronological, without any time overlap. Structure is documented below.
 - image
Job
Config Overlay Image  - Image overlay. Structure is documented below.
 
- animations
Job
Config Overlay Animation[]  - List of animations. The list should be chronological, without any time overlap. Structure is documented below.
 - image
Job
Config Overlay Image  - Image overlay. Structure is documented below.
 
- animations
Sequence[Job
Config Overlay Animation]  - List of animations. The list should be chronological, without any time overlap. Structure is documented below.
 - image
Job
Config Overlay Image  - 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        
- Animation
Fade JobConfig Overlay Animation Animation Fade  - Display overlay object with fade animation. Structure is documented below.
 
- Animation
Fade JobConfig Overlay Animation Animation Fade  - Display overlay object with fade animation. Structure is documented below.
 
- animation
Fade JobConfig Overlay Animation Animation Fade  - Display overlay object with fade animation. Structure is documented below.
 
- animation
Fade JobConfig Overlay Animation Animation Fade  - Display overlay object with fade animation. Structure is documented below.
 
- animation_
fade JobConfig Overlay Animation Animation Fade  - Display overlay object with fade animation. Structure is documented below.
 
- animation
Fade Property Map - Display overlay object with fade animation. Structure is documented below.
 
JobConfigOverlayAnimationAnimationFade, JobConfigOverlayAnimationAnimationFadeArgs            
- Fade
Type string - Required. Type of fade animation: 
FADE_INorFADE_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 stringOffset  - The time to end the fade animation, in seconds.
 - Start
Time stringOffset  - The time to start the fade animation, in seconds.
 - Xy
Job
Config Overlay Animation Animation Fade Xy  - Normalized coordinates based on output video resolution. Structure is documented below.
 
- Fade
Type string - Required. Type of fade animation: 
FADE_INorFADE_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 stringOffset  - The time to end the fade animation, in seconds.
 - Start
Time stringOffset  - The time to start the fade animation, in seconds.
 - Xy
Job
Config Overlay Animation Animation Fade Xy  - Normalized coordinates based on output video resolution. Structure is documented below.
 
- fade
Type String - Required. Type of fade animation: 
FADE_INorFADE_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 StringOffset  - The time to end the fade animation, in seconds.
 - start
Time StringOffset  - The time to start the fade animation, in seconds.
 - xy
Job
Config Overlay Animation Animation Fade Xy  - Normalized coordinates based on output video resolution. Structure is documented below.
 
- fade
Type string - Required. Type of fade animation: 
FADE_INorFADE_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 stringOffset  - The time to end the fade animation, in seconds.
 - start
Time stringOffset  - The time to start the fade animation, in seconds.
 - xy
Job
Config Overlay Animation Animation Fade Xy  - Normalized coordinates based on output video resolution. Structure is documented below.
 
- fade_
type str - Required. Type of fade animation: 
FADE_INorFADE_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_ stroffset  - The time to end the fade animation, in seconds.
 - start_
time_ stroffset  - The time to start the fade animation, in seconds.
 - xy
Job
Config Overlay Animation Animation Fade Xy  - Normalized coordinates based on output video resolution. Structure is documented below.
 
- fade
Type String - Required. Type of fade animation: 
FADE_INorFADE_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 StringOffset  - The time to end the fade animation, in seconds.
 - start
Time StringOffset  - 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              
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-betaTerraform Provider.