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
JobConfig 
- The configuration for this template. Structure is documented below.
- Labels Dictionary<string, string>
- The labels associated with this job. You can use these to organize and group your jobs. - Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field - effective_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.
- TemplateId string
- Specify the templateId to use for populating Job.config. The default is preset/web-hd, which is the only supported preset.
- Location string
- The location of the transcoding job resource.
- Config
JobConfig 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.
- TemplateId string
- Specify the templateId to use for populating Job.config. The default is preset/web-hd, which is the only supported preset.
- location String
- The location of the transcoding job resource.
- config
JobConfig 
- The configuration for this template. Structure is documented below.
- labels Map<String,String>
- The labels associated with this job. You can use these to organize and group your jobs. - Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field - effective_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.
- templateId String
- Specify the templateId to use for populating Job.config. The default is preset/web-hd, which is the only supported preset.
- location string
- The location of the transcoding job resource.
- config
JobConfig 
- The configuration for this template. Structure is documented below.
- labels {[key: string]: string}
- The labels associated with this job. You can use these to organize and group your jobs. - Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field - effective_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.
- templateId string
- Specify the templateId to use for populating Job.config. The default is preset/web-hd, which is the only supported preset.
- location str
- The location of the transcoding job resource.
- config
JobConfig 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.
- templateId String
- Specify the templateId to use for populating Job.config. The default is preset/web-hd, which is the only supported preset.
Outputs
All input properties are implicitly available as output properties. Additionally, the Job resource produces the following output properties:
- CreateTime string
- The time the job was created.
- EffectiveLabels Dictionary<string, string>
- All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
- EndTime string
- The time the transcoding finished.
- Id string
- The provider-assigned unique ID for this managed resource.
- Name string
- The resource name of the job.
- PulumiLabels Dictionary<string, string>
- The combination of labels configured directly on the resource and default labels configured on the provider.
- StartTime string
- The time the transcoding started.
- State string
- The current state of the job.
- CreateTime string
- The time the job was created.
- EffectiveLabels map[string]string
- All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
- EndTime string
- The time the transcoding finished.
- Id string
- The provider-assigned unique ID for this managed resource.
- Name string
- The resource name of the job.
- PulumiLabels map[string]string
- The combination of labels configured directly on the resource and default labels configured on the provider.
- StartTime string
- The time the transcoding started.
- State string
- The current state of the job.
- createTime String
- The time the job was created.
- effectiveLabels Map<String,String>
- All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
- endTime String
- The time the transcoding finished.
- id String
- The provider-assigned unique ID for this managed resource.
- name String
- The resource name of the job.
- pulumiLabels Map<String,String>
- The combination of labels configured directly on the resource and default labels configured on the provider.
- startTime String
- The time the transcoding started.
- state String
- The current state of the job.
- createTime string
- The time the job was created.
- effectiveLabels {[key: string]: string}
- All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
- endTime string
- The time the transcoding finished.
- id string
- The provider-assigned unique ID for this managed resource.
- name string
- The resource name of the job.
- pulumiLabels {[key: string]: string}
- The combination of labels configured directly on the resource and default labels configured on the provider.
- startTime string
- The time the transcoding started.
- state string
- The current state of the job.
- create_time str
- The time the job was created.
- effective_labels Mapping[str, str]
- All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
- end_time str
- The time the transcoding finished.
- id str
- The provider-assigned unique ID for this managed resource.
- name str
- The resource name of the job.
- pulumi_labels Mapping[str, str]
- The combination of labels configured directly on the resource and default labels configured on the provider.
- start_time str
- The time the transcoding started.
- state str
- The current state of the job.
- createTime String
- The time the job was created.
- effectiveLabels Map<String>
- All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
- endTime String
- The time the transcoding finished.
- id String
- The provider-assigned unique ID for this managed resource.
- name String
- The resource name of the job.
- pulumiLabels Map<String>
- The combination of labels configured directly on the resource and default labels configured on the provider.
- startTime String
- The time the transcoding started.
- state String
- The current state of the job.
Look up Existing Job Resource
Get an existing Job resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.
public static get(name: string, id: Input<ID>, state?: JobState, opts?: CustomResourceOptions): Job@staticmethod
def get(resource_name: str,
        id: str,
        opts: Optional[ResourceOptions] = None,
        config: Optional[JobConfigArgs] = None,
        create_time: Optional[str] = None,
        effective_labels: Optional[Mapping[str, str]] = None,
        end_time: Optional[str] = None,
        labels: Optional[Mapping[str, str]] = None,
        location: Optional[str] = None,
        name: Optional[str] = None,
        project: Optional[str] = None,
        pulumi_labels: Optional[Mapping[str, str]] = None,
        start_time: Optional[str] = None,
        state: Optional[str] = None,
        template_id: Optional[str] = None) -> 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
JobConfig 
- The configuration for this template. Structure is documented below.
- CreateTime string
- The time the job was created.
- EffectiveLabels Dictionary<string, string>
- All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
- EndTime string
- The time the transcoding finished.
- Labels Dictionary<string, string>
- The labels associated with this job. You can use these to organize and group your jobs. - Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field - effective_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.
- PulumiLabels Dictionary<string, string>
- The combination of labels configured directly on the resource and default labels configured on the provider.
- StartTime string
- The time the transcoding started.
- State string
- The current state of the job.
- TemplateId string
- Specify the templateId to use for populating Job.config. The default is preset/web-hd, which is the only supported preset.
- Config
JobConfig Args 
- The configuration for this template. Structure is documented below.
- CreateTime string
- The time the job was created.
- EffectiveLabels map[string]string
- All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
- EndTime string
- The time the transcoding finished.
- Labels map[string]string
- The labels associated with this job. You can use these to organize and group your jobs. - Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field - effective_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.
- PulumiLabels map[string]string
- The combination of labels configured directly on the resource and default labels configured on the provider.
- StartTime string
- The time the transcoding started.
- State string
- The current state of the job.
- TemplateId string
- Specify the templateId to use for populating Job.config. The default is preset/web-hd, which is the only supported preset.
- config
JobConfig 
- The configuration for this template. Structure is documented below.
- createTime String
- The time the job was created.
- effectiveLabels Map<String,String>
- All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
- endTime String
- The time the transcoding finished.
- labels Map<String,String>
- The labels associated with this job. You can use these to organize and group your jobs. - Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field - effective_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.
- pulumiLabels Map<String,String>
- The combination of labels configured directly on the resource and default labels configured on the provider.
- startTime String
- The time the transcoding started.
- state String
- The current state of the job.
- templateId String
- Specify the templateId to use for populating Job.config. The default is preset/web-hd, which is the only supported preset.
- config
JobConfig 
- The configuration for this template. Structure is documented below.
- createTime string
- The time the job was created.
- effectiveLabels {[key: string]: string}
- All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
- endTime string
- The time the transcoding finished.
- labels {[key: string]: string}
- The labels associated with this job. You can use these to organize and group your jobs. - Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field - effective_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.
- pulumiLabels {[key: string]: string}
- The combination of labels configured directly on the resource and default labels configured on the provider.
- startTime string
- The time the transcoding started.
- state string
- The current state of the job.
- templateId string
- Specify the templateId to use for populating Job.config. The default is preset/web-hd, which is the only supported preset.
- config
JobConfig 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.
- createTime String
- The time the job was created.
- effectiveLabels Map<String>
- All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
- endTime String
- The time the transcoding finished.
- labels Map<String>
- The labels associated with this job. You can use these to organize and group your jobs. - Note: This field is non-authoritative, and will only manage the labels present in your configuration. Please refer to the field - effective_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.
- pulumiLabels Map<String>
- The combination of labels configured directly on the resource and default labels configured on the provider.
- startTime String
- The time the transcoding started.
- state String
- The current state of the job.
- templateId String
- Specify the templateId to use for populating Job.config. The default is preset/web-hd, which is the only supported preset.
Supporting Types
JobConfig, JobConfigArgs    
- AdBreaks List<JobConfig Ad Break> 
- Ad break. Structure is documented below.
- EditLists List<JobConfig Edit List> 
- List of input assets stored in Cloud Storage. Structure is documented below.
- ElementaryStreams List<JobConfig Elementary Stream> 
- List of input assets stored in Cloud Storage. Structure is documented below.
- Encryptions
List<JobConfig Encryption> 
- List of encryption configurations for the content. Structure is documented below.
- Inputs
List<JobConfig Input> 
- List of input assets stored in Cloud Storage. Structure is documented below.
- Manifests
List<JobConfig Manifest> 
- Manifest configuration. Structure is documented below.
- MuxStreams List<JobConfig Mux Stream> 
- Multiplexing settings for output stream. Structure is documented below.
- Output
JobConfig Output 
- Location of output file(s) in a Cloud Storage bucket. Structure is documented below.
- Overlays
List<JobConfig Overlay> 
- List of overlays on the output video, in descending Z-order. Structure is documented below.
- PubsubDestination JobConfig Pubsub Destination 
- Pub/Sub destination. Structure is documented below.
- AdBreaks []JobConfig Ad Break 
- Ad break. Structure is documented below.
- EditLists []JobConfig Edit List 
- List of input assets stored in Cloud Storage. Structure is documented below.
- ElementaryStreams []JobConfig Elementary Stream 
- List of input assets stored in Cloud Storage. Structure is documented below.
- Encryptions
[]JobConfig Encryption 
- List of encryption configurations for the content. Structure is documented below.
- Inputs
[]JobConfig Input Type 
- List of input assets stored in Cloud Storage. Structure is documented below.
- Manifests
[]JobConfig Manifest 
- Manifest configuration. Structure is documented below.
- MuxStreams []JobConfig Mux Stream 
- Multiplexing settings for output stream. Structure is documented below.
- Output
JobConfig Output Type 
- Location of output file(s) in a Cloud Storage bucket. Structure is documented below.
- Overlays
[]JobConfig Overlay 
- List of overlays on the output video, in descending Z-order. Structure is documented below.
- PubsubDestination JobConfig Pubsub Destination 
- Pub/Sub destination. Structure is documented below.
- adBreaks List<JobConfig Ad Break> 
- Ad break. Structure is documented below.
- editLists List<JobConfig Edit List> 
- List of input assets stored in Cloud Storage. Structure is documented below.
- elementaryStreams List<JobConfig Elementary Stream> 
- List of input assets stored in Cloud Storage. Structure is documented below.
- encryptions
List<JobConfig Encryption> 
- List of encryption configurations for the content. Structure is documented below.
- inputs
List<JobConfig Input> 
- List of input assets stored in Cloud Storage. Structure is documented below.
- manifests
List<JobConfig Manifest> 
- Manifest configuration. Structure is documented below.
- muxStreams List<JobConfig Mux Stream> 
- Multiplexing settings for output stream. Structure is documented below.
- output
JobConfig Output 
- Location of output file(s) in a Cloud Storage bucket. Structure is documented below.
- overlays
List<JobConfig Overlay> 
- List of overlays on the output video, in descending Z-order. Structure is documented below.
- pubsubDestination JobConfig Pubsub Destination 
- Pub/Sub destination. Structure is documented below.
- adBreaks JobConfig Ad Break[] 
- Ad break. Structure is documented below.
- editLists JobConfig Edit List[] 
- List of input assets stored in Cloud Storage. Structure is documented below.
- elementaryStreams JobConfig Elementary Stream[] 
- List of input assets stored in Cloud Storage. Structure is documented below.
- encryptions
JobConfig Encryption[] 
- List of encryption configurations for the content. Structure is documented below.
- inputs
JobConfig Input[] 
- List of input assets stored in Cloud Storage. Structure is documented below.
- manifests
JobConfig Manifest[] 
- Manifest configuration. Structure is documented below.
- muxStreams JobConfig Mux Stream[] 
- Multiplexing settings for output stream. Structure is documented below.
- output
JobConfig Output 
- Location of output file(s) in a Cloud Storage bucket. Structure is documented below.
- overlays
JobConfig Overlay[] 
- List of overlays on the output video, in descending Z-order. Structure is documented below.
- pubsubDestination 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[JobConfig Encryption] 
- List of encryption configurations for the content. Structure is documented below.
- inputs
Sequence[JobConfig Input] 
- List of input assets stored in Cloud Storage. Structure is documented below.
- manifests
Sequence[JobConfig Manifest] 
- Manifest configuration. Structure is documented below.
- mux_streams Sequence[JobConfig Mux Stream] 
- Multiplexing settings for output stream. Structure is documented below.
- output
JobConfig Output 
- Location of output file(s) in a Cloud Storage bucket. Structure is documented below.
- overlays
Sequence[JobConfig 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.
- adBreaks List<Property Map>
- Ad break. Structure is documented below.
- editLists List<Property Map>
- List of input assets stored in Cloud Storage. Structure is documented below.
- elementaryStreams List<Property Map>
- List of input assets stored in Cloud Storage. Structure is documented below.
- encryptions List<Property Map>
- List of encryption configurations for the content. Structure is documented below.
- inputs List<Property Map>
- List of input assets stored in Cloud Storage. Structure is documented below.
- manifests List<Property Map>
- Manifest configuration. Structure is documented below.
- muxStreams List<Property Map>
- Multiplexing settings for output stream. Structure is documented below.
- output Property Map
- Location of output file(s) in a Cloud Storage bucket. Structure is documented below.
- overlays List<Property Map>
- List of overlays on the output video, in descending Z-order. Structure is documented below.
- pubsubDestination Property Map
- Pub/Sub destination. Structure is documented below.
JobConfigAdBreak, JobConfigAdBreakArgs        
- StartTime stringOffset 
- Start time in seconds for the ad break, relative to the output file timeline
- StartTime stringOffset 
- Start time in seconds for the ad break, relative to the output file timeline
- startTime StringOffset 
- Start time in seconds for the ad break, relative to the output file timeline
- startTime 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
- startTime 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.
- StartTime 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.
- StartTime 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.
- startTime 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.
- startTime 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.
- startTime StringOffset 
- Start time in seconds for the atom, relative to the input file timeline. The default is 0s.
JobConfigElementaryStream, JobConfigElementaryStreamArgs        
- AudioStream JobConfig Elementary Stream Audio Stream 
- Encoding of an audio stream. Structure is documented below.
- Key string
- A unique key for this atom.
- VideoStream JobConfig Elementary Stream Video Stream 
- Encoding of a video stream. Structure is documented below.
- AudioStream JobConfig Elementary Stream Audio Stream 
- Encoding of an audio stream. Structure is documented below.
- Key string
- A unique key for this atom.
- VideoStream JobConfig Elementary Stream Video Stream 
- Encoding of a video stream. Structure is documented below.
- audioStream JobConfig Elementary Stream Audio Stream 
- Encoding of an audio stream. Structure is documented below.
- key String
- A unique key for this atom.
- videoStream JobConfig Elementary Stream Video Stream 
- Encoding of a video stream. Structure is documented below.
- audioStream JobConfig Elementary Stream Audio Stream 
- Encoding of an audio stream. Structure is documented below.
- key string
- A unique key for this atom.
- videoStream 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.
- audioStream Property Map
- Encoding of an audio stream. Structure is documented below.
- key String
- A unique key for this atom.
- videoStream Property Map
- Encoding of a video stream. Structure is documented below.
JobConfigElementaryStreamAudioStream, JobConfigElementaryStreamAudioStreamArgs            
- BitrateBps int
- Audio bitrate in bits per second.
- ChannelCount int
- Number of audio channels. The default is 2.
- ChannelLayouts List<string>
- A list of channel names specifying layout of the audio channels. The default is ["fl", "fr"].
- Codec string
- The codec for this audio stream. The default is aac.
- SampleRate intHertz 
- The audio sample rate in Hertz. The default is 48000.
- BitrateBps int
- Audio bitrate in bits per second.
- ChannelCount int
- Number of audio channels. The default is 2.
- ChannelLayouts []string
- A list of channel names specifying layout of the audio channels. The default is ["fl", "fr"].
- Codec string
- The codec for this audio stream. The default is aac.
- SampleRate intHertz 
- The audio sample rate in Hertz. The default is 48000.
- bitrateBps Integer
- Audio bitrate in bits per second.
- channelCount Integer
- Number of audio channels. The default is 2.
- channelLayouts List<String>
- A list of channel names specifying layout of the audio channels. The default is ["fl", "fr"].
- codec String
- The codec for this audio stream. The default is aac.
- sampleRate IntegerHertz 
- The audio sample rate in Hertz. The default is 48000.
- bitrateBps number
- Audio bitrate in bits per second.
- channelCount number
- Number of audio channels. The default is 2.
- channelLayouts string[]
- A list of channel names specifying layout of the audio channels. The default is ["fl", "fr"].
- codec string
- The codec for this audio stream. The default is aac.
- sampleRate 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.
- bitrateBps Number
- Audio bitrate in bits per second.
- channelCount Number
- Number of audio channels. The default is 2.
- channelLayouts List<String>
- A list of channel names specifying layout of the audio channels. The default is ["fl", "fr"].
- codec String
- The codec for this audio stream. The default is aac.
- sampleRate NumberHertz 
- The audio sample rate in Hertz. The default is 48000.
JobConfigElementaryStreamVideoStream, JobConfigElementaryStreamVideoStreamArgs            
- H264
JobConfig Elementary Stream Video Stream H264 
- H264 codec settings Structure is documented below. - The - h264block supports:
- H264
JobConfig Elementary Stream Video Stream H264 
- H264 codec settings Structure is documented below. - The - h264block supports:
- h264
JobConfig Elementary Stream Video Stream H264 
- H264 codec settings Structure is documented below. - The - h264block supports:
- h264
JobConfig Elementary Stream Video Stream H264 
- H264 codec settings Structure is documented below. - The - h264block supports:
- h264
JobConfig 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              
- BitrateBps int
- The video bitrate in bits per second.
- FrameRate int
- The target video frame rate in frames per second (FPS).
- CrfLevel int
- Target CRF level. The default is '21'.
- EntropyCoder string
- The entropy coder to use. The default is 'cabac'.
- GopDuration string
- Select the GOP size based on the specified duration. The default is '3s'.
- HeightPixels int
- The height of the video in pixels.
- Hlg
JobConfig Elementary Stream Video Stream H264Hlg 
- HLG color format setting for H264.
- PixelFormat string
- Pixel format to use. The default is 'yuv420p'.
- Preset string
- Enforces the specified codec preset. The default is 'veryfast'.
- Profile string
- Enforces the specified codec profile.
- RateControl stringMode 
- Specify the mode. The default is 'vbr'.
- Sdr
JobConfig Elementary Stream Video Stream H264Sdr 
- SDR color format setting for H264.
- VbvFullness intBits 
- Initial fullness of the Video Buffering Verifier (VBV) buffer in bits.
- VbvSize intBits 
- Size of the Video Buffering Verifier (VBV) buffer in bits.
- WidthPixels int
- The width of the video in pixels.
- BitrateBps int
- The video bitrate in bits per second.
- FrameRate int
- The target video frame rate in frames per second (FPS).
- CrfLevel int
- Target CRF level. The default is '21'.
- EntropyCoder string
- The entropy coder to use. The default is 'cabac'.
- GopDuration string
- Select the GOP size based on the specified duration. The default is '3s'.
- HeightPixels int
- The height of the video in pixels.
- Hlg
JobConfig Elementary Stream Video Stream H264Hlg 
- HLG color format setting for H264.
- PixelFormat string
- Pixel format to use. The default is 'yuv420p'.
- Preset string
- Enforces the specified codec preset. The default is 'veryfast'.
- Profile string
- Enforces the specified codec profile.
- RateControl stringMode 
- Specify the mode. The default is 'vbr'.
- Sdr
JobConfig Elementary Stream Video Stream H264Sdr 
- SDR color format setting for H264.
- VbvFullness intBits 
- Initial fullness of the Video Buffering Verifier (VBV) buffer in bits.
- VbvSize intBits 
- Size of the Video Buffering Verifier (VBV) buffer in bits.
- WidthPixels int
- The width of the video in pixels.
- bitrateBps Integer
- The video bitrate in bits per second.
- frameRate Integer
- The target video frame rate in frames per second (FPS).
- crfLevel Integer
- Target CRF level. The default is '21'.
- entropyCoder String
- The entropy coder to use. The default is 'cabac'.
- gopDuration String
- Select the GOP size based on the specified duration. The default is '3s'.
- heightPixels Integer
- The height of the video in pixels.
- hlg
JobConfig Elementary Stream Video Stream H264Hlg 
- HLG color format setting for H264.
- pixelFormat String
- Pixel format to use. The default is 'yuv420p'.
- preset String
- Enforces the specified codec preset. The default is 'veryfast'.
- profile String
- Enforces the specified codec profile.
- rateControl StringMode 
- Specify the mode. The default is 'vbr'.
- sdr
JobConfig Elementary Stream Video Stream H264Sdr 
- SDR color format setting for H264.
- vbvFullness IntegerBits 
- Initial fullness of the Video Buffering Verifier (VBV) buffer in bits.
- vbvSize IntegerBits 
- Size of the Video Buffering Verifier (VBV) buffer in bits.
- widthPixels Integer
- The width of the video in pixels.
- bitrateBps number
- The video bitrate in bits per second.
- frameRate number
- The target video frame rate in frames per second (FPS).
- crfLevel number
- Target CRF level. The default is '21'.
- entropyCoder string
- The entropy coder to use. The default is 'cabac'.
- gopDuration string
- Select the GOP size based on the specified duration. The default is '3s'.
- heightPixels number
- The height of the video in pixels.
- hlg
JobConfig Elementary Stream Video Stream H264Hlg 
- HLG color format setting for H264.
- pixelFormat string
- Pixel format to use. The default is 'yuv420p'.
- preset string
- Enforces the specified codec preset. The default is 'veryfast'.
- profile string
- Enforces the specified codec profile.
- rateControl stringMode 
- Specify the mode. The default is 'vbr'.
- sdr
JobConfig Elementary Stream Video Stream H264Sdr 
- SDR color format setting for H264.
- vbvFullness numberBits 
- Initial fullness of the Video Buffering Verifier (VBV) buffer in bits.
- vbvSize numberBits 
- Size of the Video Buffering Verifier (VBV) buffer in bits.
- widthPixels number
- The width of the video in pixels.
- bitrate_bps int
- The video bitrate in bits per second.
- frame_rate int
- The target video frame rate in frames per second (FPS).
- crf_level int
- Target CRF level. The default is '21'.
- entropy_coder str
- The entropy coder to use. The default is 'cabac'.
- gop_duration str
- Select the GOP size based on the specified duration. The default is '3s'.
- height_pixels int
- The height of the video in pixels.
- hlg
JobConfig 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
JobConfig 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.
- bitrateBps Number
- The video bitrate in bits per second.
- frameRate Number
- The target video frame rate in frames per second (FPS).
- crfLevel Number
- Target CRF level. The default is '21'.
- entropyCoder String
- The entropy coder to use. The default is 'cabac'.
- gopDuration String
- Select the GOP size based on the specified duration. The default is '3s'.
- heightPixels Number
- The height of the video in pixels.
- hlg Property Map
- HLG color format setting for H264.
- pixelFormat String
- Pixel format to use. The default is 'yuv420p'.
- preset String
- Enforces the specified codec preset. The default is 'veryfast'.
- profile String
- Enforces the specified codec profile.
- rateControl StringMode 
- Specify the mode. The default is 'vbr'.
- sdr Property Map
- SDR color format setting for H264.
- vbvFullness NumberBits 
- Initial fullness of the Video Buffering Verifier (VBV) buffer in bits.
- vbvSize NumberBits 
- Size of the Video Buffering Verifier (VBV) buffer in bits.
- widthPixels Number
- The width of the video in pixels.
JobConfigEncryption, JobConfigEncryptionArgs      
- Id string
- Identifier for this set of encryption options.
- Aes128
JobConfig Encryption Aes128 
- Configuration for AES-128 encryption.
- DrmSystems 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.
- MpegCenc JobConfig Encryption Mpeg Cenc 
- Configuration for MPEG Common Encryption (MPEG-CENC). Structure is documented below.
- SampleAes JobConfig Encryption Sample Aes 
- Configuration for SAMPLE-AES encryption.
- SecretManager 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
JobConfig Encryption Aes128 
- Configuration for AES-128 encryption.
- DrmSystems 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.
- MpegCenc JobConfig Encryption Mpeg Cenc 
- Configuration for MPEG Common Encryption (MPEG-CENC). Structure is documented below.
- SampleAes JobConfig Encryption Sample Aes 
- Configuration for SAMPLE-AES encryption.
- SecretManager 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
JobConfig Encryption Aes128 
- Configuration for AES-128 encryption.
- drmSystems 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.
- mpegCenc JobConfig Encryption Mpeg Cenc 
- Configuration for MPEG Common Encryption (MPEG-CENC). Structure is documented below.
- sampleAes JobConfig Encryption Sample Aes 
- Configuration for SAMPLE-AES encryption.
- secretManager 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
JobConfig Encryption Aes128 
- Configuration for AES-128 encryption.
- drmSystems 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.
- mpegCenc JobConfig Encryption Mpeg Cenc 
- Configuration for MPEG Common Encryption (MPEG-CENC). Structure is documented below.
- sampleAes JobConfig Encryption Sample Aes 
- Configuration for SAMPLE-AES encryption.
- secretManager 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
JobConfig 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.
- drmSystems Property Map
- DRM system(s) to use; at least one must be specified. If a DRM system is omitted, it is considered disabled. Structure is documented below.
- mpegCenc Property Map
- Configuration for MPEG Common Encryption (MPEG-CENC). Structure is documented below.
- sampleAes Property Map
- Configuration for SAMPLE-AES encryption.
- secretManager Property MapKey Source 
- Configuration for secrets stored in Google Secret Manager. Structure is documented below.
JobConfigEncryptionDrmSystems, JobConfigEncryptionDrmSystemsArgs          
- Clearkey
JobConfig Encryption Drm Systems Clearkey 
- Clearkey configuration.
- Fairplay
JobConfig Encryption Drm Systems Fairplay 
- Fairplay configuration.
- Playready
JobConfig Encryption Drm Systems Playready 
- Playready configuration.
- Widevine
JobConfig Encryption Drm Systems Widevine 
- Widevine configuration.
- Clearkey
JobConfig Encryption Drm Systems Clearkey 
- Clearkey configuration.
- Fairplay
JobConfig Encryption Drm Systems Fairplay 
- Fairplay configuration.
- Playready
JobConfig Encryption Drm Systems Playready 
- Playready configuration.
- Widevine
JobConfig Encryption Drm Systems Widevine 
- Widevine configuration.
- clearkey
JobConfig Encryption Drm Systems Clearkey 
- Clearkey configuration.
- fairplay
JobConfig Encryption Drm Systems Fairplay 
- Fairplay configuration.
- playready
JobConfig Encryption Drm Systems Playready 
- Playready configuration.
- widevine
JobConfig Encryption Drm Systems Widevine 
- Widevine configuration.
- clearkey
JobConfig Encryption Drm Systems Clearkey 
- Clearkey configuration.
- fairplay
JobConfig Encryption Drm Systems Fairplay 
- Fairplay configuration.
- playready
JobConfig Encryption Drm Systems Playready 
- Playready configuration.
- widevine
JobConfig Encryption Drm Systems Widevine 
- Widevine configuration.
- clearkey
JobConfig Encryption Drm Systems Clearkey 
- Clearkey configuration.
- fairplay
JobConfig Encryption Drm Systems Fairplay 
- Fairplay configuration.
- playready
JobConfig Encryption Drm Systems Playready 
- Playready configuration.
- widevine
JobConfig 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              
- SecretVersion string
- The name of the Secret Version containing the encryption key in the following format: projects/{project}/secrets/{secret_id}/versions/{version_number}.
- SecretVersion string
- The name of the Secret Version containing the encryption key in the following format: projects/{project}/secrets/{secret_id}/versions/{version_number}.
- secretVersion String
- The name of the Secret Version containing the encryption key in the following format: projects/{project}/secrets/{secret_id}/versions/{version_number}.
- secretVersion string
- The name of the Secret Version containing the encryption key in the following format: projects/{project}/secrets/{secret_id}/versions/{version_number}.
- secret_version str
- The name of the Secret Version containing the encryption key in the following format: projects/{project}/secrets/{secret_id}/versions/{version_number}.
- secretVersion String
- The name of the Secret Version containing the encryption key in the following format: projects/{project}/secrets/{secret_id}/versions/{version_number}.
JobConfigInput, JobConfigInputArgs      
- Key string
- A unique key for this input. Must be specified when using advanced mapping and edit lists.
- Uri string
- URI of the media. Input files must be at least 5 seconds in duration and stored in Cloud Storage (for example, gs://bucket/inputs/file.mp4). If empty, the value is populated from Job.input_uri.
- Key string
- A unique key for this input. Must be specified when using advanced mapping and edit lists.
- Uri string
- URI of the media. Input files must be at least 5 seconds in duration and stored in Cloud Storage (for example, gs://bucket/inputs/file.mp4). If empty, the value is populated from Job.input_uri.
- key String
- A unique key for this input. Must be specified when using advanced mapping and edit lists.
- uri String
- URI of the media. Input files must be at least 5 seconds in duration and stored in Cloud Storage (for example, gs://bucket/inputs/file.mp4). If empty, the value is populated from Job.input_uri.
- key string
- A unique key for this input. Must be specified when using advanced mapping and edit lists.
- uri string
- URI of the media. Input files must be at least 5 seconds in duration and stored in Cloud Storage (for example, gs://bucket/inputs/file.mp4). If empty, the value is populated from Job.input_uri.
- key String
- A unique key for this input. Must be specified when using advanced mapping and edit lists.
- uri String
- URI of the media. Input files must be at least 5 seconds in duration and stored in Cloud Storage (for example, gs://bucket/inputs/file.mp4). If empty, the value is populated from Job.input_uri.
JobConfigManifest, JobConfigManifestArgs      
- FileName string
- The name of the generated file. The default is manifest.
- MuxStreams List<string>
- List of user supplied MuxStream.key values that should appear in this manifest.
- Type string
- Type of the manifest.
Possible values are: MANIFEST_TYPE_UNSPECIFIED,HLS,DASH.
- FileName string
- The name of the generated file. The default is manifest.
- MuxStreams []string
- List of user supplied MuxStream.key values that should appear in this manifest.
- Type string
- Type of the manifest.
Possible values are: MANIFEST_TYPE_UNSPECIFIED,HLS,DASH.
- fileName String
- The name of the generated file. The default is manifest.
- muxStreams List<String>
- List of user supplied MuxStream.key values that should appear in this manifest.
- type String
- Type of the manifest.
Possible values are: MANIFEST_TYPE_UNSPECIFIED,HLS,DASH.
- fileName string
- The name of the generated file. The default is manifest.
- muxStreams string[]
- List of user supplied MuxStream.key values that should appear in this manifest.
- type string
- Type of the manifest.
Possible values are: MANIFEST_TYPE_UNSPECIFIED,HLS,DASH.
- file_name str
- The name of the generated file. The default is manifest.
- mux_streams Sequence[str]
- List of user supplied MuxStream.key values that should appear in this manifest.
- type str
- Type of the manifest.
Possible values are: MANIFEST_TYPE_UNSPECIFIED,HLS,DASH.
- fileName String
- The name of the generated file. The default is manifest.
- muxStreams List<String>
- List of user supplied MuxStream.key values that should appear in this manifest.
- type String
- Type of the manifest.
Possible values are: MANIFEST_TYPE_UNSPECIFIED,HLS,DASH.
JobConfigMuxStream, JobConfigMuxStreamArgs        
- Container string
- The container format. The default is mp4.
- ElementaryStreams List<string>
- List of ElementaryStream.key values multiplexed in this stream.
- EncryptionId string
- Identifier of the encryption configuration to use.
- FileName string
- The name of the generated file.
- Key string
- A unique key for this multiplexed stream.
- SegmentSettings 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.
- ElementaryStreams []string
- List of ElementaryStream.key values multiplexed in this stream.
- EncryptionId string
- Identifier of the encryption configuration to use.
- FileName string
- The name of the generated file.
- Key string
- A unique key for this multiplexed stream.
- SegmentSettings 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.
- elementaryStreams List<String>
- List of ElementaryStream.key values multiplexed in this stream.
- encryptionId String
- Identifier of the encryption configuration to use.
- fileName String
- The name of the generated file.
- key String
- A unique key for this multiplexed stream.
- segmentSettings 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.
- elementaryStreams string[]
- List of ElementaryStream.key values multiplexed in this stream.
- encryptionId string
- Identifier of the encryption configuration to use.
- fileName string
- The name of the generated file.
- key string
- A unique key for this multiplexed stream.
- segmentSettings 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.
- elementaryStreams List<String>
- List of ElementaryStream.key values multiplexed in this stream.
- encryptionId String
- Identifier of the encryption configuration to use.
- fileName String
- The name of the generated file.
- key String
- A unique key for this multiplexed stream.
- segmentSettings Property Map
- Segment settings for ts, fmp4 and vtt. Structure is documented below.
JobConfigMuxStreamSegmentSettings, JobConfigMuxStreamSegmentSettingsArgs            
- SegmentDuration string
- Duration of the segments in seconds. The default is 6.0s.
- SegmentDuration string
- Duration of the segments in seconds. The default is 6.0s.
- segmentDuration String
- Duration of the segments in seconds. The default is 6.0s.
- segmentDuration string
- Duration of the segments in seconds. The default is 6.0s.
- segment_duration str
- Duration of the segments in seconds. The default is 6.0s.
- segmentDuration String
- Duration of the segments in seconds. The default is 6.0s.
JobConfigOutput, JobConfigOutputArgs      
- Uri string
- URI for the output file(s). For example, gs://my-bucket/outputs/.
- Uri string
- URI for the output file(s). For example, gs://my-bucket/outputs/.
- uri String
- URI for the output file(s). For example, gs://my-bucket/outputs/.
- uri string
- URI for the output file(s). For example, gs://my-bucket/outputs/.
- uri str
- URI for the output file(s). For example, gs://my-bucket/outputs/.
- uri String
- URI for the output file(s). For example, gs://my-bucket/outputs/.
JobConfigOverlay, JobConfigOverlayArgs      
- Animations
List<JobConfig Overlay Animation> 
- List of animations. The list should be chronological, without any time overlap. Structure is documented below.
- Image
JobConfig Overlay Image 
- Image overlay. Structure is documented below.
- Animations
[]JobConfig Overlay Animation 
- List of animations. The list should be chronological, without any time overlap. Structure is documented below.
- Image
JobConfig Overlay Image 
- Image overlay. Structure is documented below.
- animations
List<JobConfig Overlay Animation> 
- List of animations. The list should be chronological, without any time overlap. Structure is documented below.
- image
JobConfig Overlay Image 
- Image overlay. Structure is documented below.
- animations
JobConfig Overlay Animation[] 
- List of animations. The list should be chronological, without any time overlap. Structure is documented below.
- image
JobConfig Overlay Image 
- Image overlay. Structure is documented below.
- animations
Sequence[JobConfig Overlay Animation] 
- List of animations. The list should be chronological, without any time overlap. Structure is documented below.
- image
JobConfig 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        
- AnimationFade JobConfig Overlay Animation Animation Fade 
- Display overlay object with fade animation. Structure is documented below.
- AnimationFade JobConfig Overlay Animation Animation Fade 
- Display overlay object with fade animation. Structure is documented below.
- animationFade JobConfig Overlay Animation Animation Fade 
- Display overlay object with fade animation. Structure is documented below.
- animationFade 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.
- animationFade Property Map
- Display overlay object with fade animation. Structure is documented below.
JobConfigOverlayAnimationAnimationFade, JobConfigOverlayAnimationAnimationFadeArgs            
- FadeType 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.
 
- EndTime stringOffset 
- The time to end the fade animation, in seconds.
- StartTime stringOffset 
- The time to start the fade animation, in seconds.
- Xy
JobConfig Overlay Animation Animation Fade Xy 
- Normalized coordinates based on output video resolution. Structure is documented below.
- FadeType 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.
 
- EndTime stringOffset 
- The time to end the fade animation, in seconds.
- StartTime stringOffset 
- The time to start the fade animation, in seconds.
- Xy
JobConfig Overlay Animation Animation Fade Xy 
- Normalized coordinates based on output video resolution. Structure is documented below.
- fadeType 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.
 
- endTime StringOffset 
- The time to end the fade animation, in seconds.
- startTime StringOffset 
- The time to start the fade animation, in seconds.
- xy
JobConfig Overlay Animation Animation Fade Xy 
- Normalized coordinates based on output video resolution. Structure is documented below.
- fadeType 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.
 
- endTime stringOffset 
- The time to end the fade animation, in seconds.
- startTime stringOffset 
- The time to start the fade animation, in seconds.
- xy
JobConfig 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
JobConfig Overlay Animation Animation Fade Xy 
- Normalized coordinates based on output video resolution. Structure is documented below.
- fadeType 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.
 
- endTime StringOffset 
- The time to end the fade animation, in seconds.
- startTime 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.