mmv1/products/transcoder/Job.yaml (557 lines of code) (raw):
# Copyright 2024 Google Inc.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
---
name: 'Job'
description: "Transcoding Job Resource"
references:
guides:
'Transcoder': 'https://cloud.google.com/transcoder/docs/'
api: 'https://cloud.google.com/transcoder/docs/reference/rest/v1/projects.locations.jobs'
docs:
base_url: 'projects/{{project}}/locations/{{location}}/jobs'
self_link: '{{name}}'
create_url: 'projects/{{project}}/locations/{{location}}/jobs'
immutable: true
import_format:
- '{{project}} {{name}}'
- '{{name}}'
timeouts:
insert_minutes: 20
update_minutes: 20
delete_minutes: 20
custom_code:
custom_import: 'templates/terraform/custom_import/self_link_as_name.tmpl'
examples:
- name: 'transcoder_job_basic'
primary_resource_id: 'default'
vars:
job_template_id: 'example-job-template'
bucket_name: 'transcoder-job'
ignore_read_extra:
- 'state'
- 'end_time'
- name: 'transcoder_job_pubsub'
primary_resource_id: 'default'
vars:
job_template_id: 'example-job-template'
bucket_name: 'transcoder-job'
pub_sub_topic_name: 'transcoder-notifications'
ignore_read_extra:
- 'state'
- 'end_time'
- name: 'transcoder_job_encryptions'
primary_resource_id: 'default'
min_version: 'beta'
vars:
job_template_id: 'example-job-template'
bucket_name: 'transcoder-job'
secret_manager_secret_id: 'transcoder-encryption-key'
ignore_read_extra:
- 'state'
- 'end_time'
- name: 'transcoder_job_overlays'
primary_resource_id: 'default'
vars:
job_template_id: 'example-job-template'
bucket_name: 'transcoder-job'
ignore_read_extra:
- 'state'
- 'end_time'
- name: 'transcoder_job_manifests'
primary_resource_id: 'default'
vars:
job_template_id: 'example-job-template'
bucket_name: 'transcoder-job'
ignore_read_extra:
- 'state'
- 'start_time'
- 'end_time'
parameters:
- name: 'location'
type: String
description: |
The location of the transcoding job resource.
url_param_only: true
required: true
immutable: true
properties:
- name: 'name'
type: String
description: |
The resource name of the job.
output: true
- name: 'createTime'
type: Time
description: |
The time the job was created.
output: true
- name: 'startTime'
type: Time
description: |
The time the transcoding started.
output: true
- name: 'endTime'
type: Time
description: |
The time the transcoding finished.
output: true
- name: 'state'
type: Enum
description: |
The current state of the job.
output: true
enum_values:
- 'PROCESSING_STATE_UNSPECIFIED'
- 'PENDING'
- 'RUNNING'
- 'SUCCEEDED'
- 'FAILED'
- name: 'labels'
type: KeyValueLabels
description: |
The labels associated with this job. You can use these to organize and group your jobs.
- name: 'templateId'
type: String
description: |
Specify the templateId to use for populating Job.config.
The default is preset/web-hd, which is the only supported preset.
ignore_read: true
default_from_api: true
- name: 'config'
type: NestedObject
description: |
The configuration for this template.
default_from_api: true
properties:
- name: 'inputs'
type: Array
description: |
List of input assets stored in Cloud Storage.
default_from_api: true
item_type:
type: NestedObject
properties:
- name: 'key'
type: String
description: |
A unique key for this input. Must be specified when using advanced mapping and edit lists.
default_from_api: true
- name: 'uri'
type: String
description: |
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.
default_from_api: true
- name: 'editList'
type: Array
description: |
List of input assets stored in Cloud Storage.
default_from_api: true
item_type:
type: NestedObject
properties:
- name: 'key'
type: String
description: |
A unique key for this atom.
default_from_api: true
- name: 'inputs'
type: Array
description: |
List of values identifying files that should be used in this atom.
default_from_api: true
item_type:
type: String
- name: 'startTimeOffset'
type: Time
description: |
Start time in seconds for the atom, relative to the input file timeline. The default is `0s`.
default_from_api: true
- name: 'elementaryStreams'
type: Array
description: |
List of input assets stored in Cloud Storage.
default_from_api: true
item_type:
type: NestedObject
properties:
- name: 'key'
type: String
description: |
A unique key for this atom.
default_from_api: true
- name: 'videoStream'
type: NestedObject
description: |
Encoding of a video stream.
default_from_api: true
properties:
- name: 'h264'
type: NestedObject
description: |
H264 codec settings
default_from_api: true
properties:
- name: 'widthPixels'
type: Integer
description: |
The width of the video in pixels.
default_from_api: true
- name: 'heightPixels'
type: Integer
description: |
The height of the video in pixels.
default_from_api: true
- name: 'frameRate'
type: Integer
description: The target video frame rate in frames per second (FPS).
required: true
- name: 'bitrateBps'
type: Integer
description: The video bitrate in bits per second.
required: true
- name: 'pixelFormat'
type: String
description: Pixel format to use. The default is `yuv420p`.
default_from_api: true
- name: 'rateControlMode'
type: String
description: Specify the mode. The default is `vbr`.
default_from_api: true
- name: 'crfLevel'
type: Integer
description: Target CRF level. The default is `21`.
default_from_api: true
- name: 'vbvSizeBits'
type: Integer
description: Size of the Video Buffering Verifier (VBV) buffer in bits.
default_from_api: true
- name: 'vbvFullnessBits'
type: Integer
description: Initial fullness of the Video Buffering Verifier (VBV) buffer in bits.
default_from_api: true
- name: 'entropyCoder'
type: String
description: The entropy coder to use. The default is `cabac`.
default_from_api: true
- name: 'profile'
type: String
description: Enforces the specified codec profile.
default_from_api: true
- name: 'preset'
type: String
description: Enforces the specified codec preset. The default is `veryfast`.
default_from_api: true
- name: 'gopDuration'
type: Time
description: Select the GOP size based on the specified duration. The default is `3s`.
default_from_api: true
- name: 'sdr'
type: NestedObject
description: SDR color format setting for H264.
send_empty_value: true
allow_empty_object: true
properties:
[]
- name: 'hlg'
type: NestedObject
description: HLG color format setting for H264.
send_empty_value: true
allow_empty_object: true
properties:
[]
- name: 'audioStream'
type: NestedObject
description: |
Encoding of an audio stream.
default_from_api: true
properties:
- name: 'codec'
type: String
description: The codec for this audio stream. The default is `aac`.
default_from_api: true
- name: 'bitrateBps'
type: Integer
description: Audio bitrate in bits per second.
required: true
- name: 'channelCount'
type: Integer
description: Number of audio channels. The default is `2`.
default_from_api: true
- name: 'channelLayout'
type: Array
description: |
A list of channel names specifying layout of the audio channels. The default is ["fl", "fr"].
default_from_api: true
item_type:
type: String
- name: 'sampleRateHertz'
type: Integer
description: |
The audio sample rate in Hertz. The default is `48000`.
default_from_api: true
- name: 'muxStreams'
type: Array
description: |
Multiplexing settings for output stream.
default_from_api: true
item_type:
type: NestedObject
properties:
- name: 'key'
type: String
description: |
A unique key for this multiplexed stream.
default_from_api: true
- name: 'fileName'
type: String
description: |
The name of the generated file.
default_from_api: true
- name: 'container'
type: String
description: |
The container format. The default is `mp4`.
default_from_api: true
- name: 'elementaryStreams'
type: Array
description: |
List of ElementaryStream.key values multiplexed in this stream.
default_from_api: true
item_type:
type: String
- name: 'segmentSettings'
type: NestedObject
description: |
Segment settings for ts, fmp4 and vtt.
default_from_api: true
properties:
- name: 'segmentDuration'
type: Time
description: |
Duration of the segments in seconds. The default is `6.0s`.
default_from_api: true
- name: 'encryptionId'
type: String
description: |
Identifier of the encryption configuration to use.
default_from_api: true
- name: 'manifests'
type: Array
description: |
Manifest configuration.
default_from_api: true
item_type:
type: NestedObject
properties:
- name: 'fileName'
type: String
description: |
The name of the generated file. The default is `manifest`.
default_from_api: true
- name: 'type'
type: Enum
description: |
Type of the manifest.
required: true
default_from_api: true
enum_values:
- 'MANIFEST_TYPE_UNSPECIFIED'
- 'HLS'
- 'DASH'
- name: 'muxStreams'
type: Array
description: |
List of user supplied MuxStream.key values that should appear in this manifest.
default_from_api: true
item_type:
type: String
- name: 'output'
type: NestedObject
description: |
Location of output file(s) in a Cloud Storage bucket.
default_from_api: true
properties:
- name: 'uri'
type: String
description: |
URI for the output file(s). For example, gs://my-bucket/outputs/.
default_from_api: true
- name: 'adBreaks'
type: Array
description: |
Ad break.
default_from_api: true
item_type:
type: NestedObject
properties:
- name: 'startTimeOffset'
type: Time
description: |
Start time in seconds for the ad break, relative to the output file timeline
default_from_api: true
- name: 'pubsubDestination'
type: NestedObject
description: |
Pub/Sub destination.
default_from_api: true
properties:
- name: 'topic'
type: String
description: |
The name of the Pub/Sub topic to publish job completion notification to. For example: projects/{project}/topics/{topic}.
- name: 'overlays'
type: Array
description: |
List of overlays on the output video, in descending Z-order.
default_from_api: true
item_type:
type: NestedObject
properties:
- name: 'image'
type: NestedObject
description: |
Image overlay.
default_from_api: true
properties:
- name: 'uri'
type: String
description: |
URI of the image in Cloud Storage. For example, gs://bucket/inputs/image.png.
required: true
- name: 'animations'
type: Array
description: |
List of animations. The list should be chronological, without any time overlap.
default_from_api: true
item_type:
type: NestedObject
properties:
- name: 'animationFade'
type: NestedObject
description: |
Display overlay object with fade animation.
default_from_api: true
properties:
- name: 'xy'
type: NestedObject
description: |
Normalized coordinates based on output video resolution.
default_from_api: true
properties:
- name: 'x'
type: Double
description: |
Normalized x coordinate.
default_from_api: true
- name: 'y'
type: Double
description: |
Normalized y coordinate.
default_from_api: true
- name: 'startTimeOffset'
type: Time
description: |
The time to start the fade animation, in seconds.
default_from_api: true
- name: 'endTimeOffset'
type: Time
description: |
The time to end the fade animation, in seconds.
default_from_api: true
- name: 'fadeType'
type: Enum
description: |
Required. Type of fade animation: `FADE_IN` or `FADE_OUT`.
The possible values are:
* `FADE_TYPE_UNSPECIFIED`: The fade type is not specified.
* `FADE_IN`: Fade the overlay object into view.
* `FADE_OUT`: Fade the overlay object out of view.
required: true
enum_values:
- 'FADE_TYPE_UNSPECIFIED'
- 'FADE_IN'
- 'FADE_OUT'
- name: 'encryptions'
type: Array
description: |
List of encryption configurations for the content.
default_from_api: true
item_type:
type: NestedObject
properties:
- name: 'id'
type: String
description: |
Identifier for this set of encryption options.
required: true
- name: 'drmSystems'
type: NestedObject
description: |
DRM system(s) to use; at least one must be specified. If a DRM system is omitted, it is considered disabled.
default_from_api: true
properties:
- name: 'widevine'
type: NestedObject
description: Widevine configuration.
send_empty_value: true
allow_empty_object: true
properties:
[]
- name: 'fairplay'
type: NestedObject
description: Fairplay configuration.
send_empty_value: true
allow_empty_object: true
properties:
[]
- name: 'playready'
type: NestedObject
description: Playready configuration.
send_empty_value: true
allow_empty_object: true
properties:
[]
- name: 'clearkey'
type: NestedObject
description: Clearkey configuration.
send_empty_value: true
allow_empty_object: true
properties:
[]
- name: 'aes128'
type: NestedObject
description: |
Configuration for AES-128 encryption.
send_empty_value: true
allow_empty_object: true
properties:
[]
- name: 'sampleAes'
type: NestedObject
description: |
Configuration for SAMPLE-AES encryption.
send_empty_value: true
allow_empty_object: true
properties:
[]
- name: 'mpegCenc'
type: NestedObject
description: |
Configuration for MPEG Common Encryption (MPEG-CENC).
default_from_api: true
properties:
- name: 'scheme'
type: String
description: |
Specify the encryption scheme.
required: true
- name: 'secretManagerKeySource'
type: NestedObject
description: |
Configuration for secrets stored in Google Secret Manager.
default_from_api: true
properties:
- name: 'secretVersion'
type: String
description: |
The name of the Secret Version containing the encryption key in the following format: projects/{project}/secrets/{secret_id}/versions/{version_number}.
required: true