storage-transcode-videos/extension.yaml (106 lines of code) (raw):
name: storage-transcode-videos
version: 0.0.2
specVersion: v1beta
displayName: Transcode Videos on Google Cloud Storage
description:
Transcode video files into formats suitable for consumer distribution.
license: Apache-2.0
author:
authorName: Firebase
url: https://firebase.google.com
sourceUrl: https://github.com/FirebaseExtended/experimental-extensions/tree/main/storage-transcode-videos
billingRequired: true
apis:
- apiName: transcoder.googleapis.com
reason: Powers all Video Transcoding tasks performed by the extension.
resources:
- name: transcodevideo
type: firebaseextensions.v1beta.function
description:
Listens to incoming Storage documents that are videos and executes a video
transcoding job on them.
properties:
location: ${param:LOCATION}
availableMemoryMb: 128
eventTrigger:
eventType: google.storage.object.finalize
resource: projects/_/buckets/${param:INPUT_VIDEOS_BUCKET}
runtime: 'nodejs20'
params:
- param: LOCATION
label: Cloud Functions location
description: >
Cloud region where transcoding should take place. For help selecting a
location, refer to the [location selection
guide](https://firebase.google.com/docs/functions/locations).
type: select
# Options limited to regions available in:
# - https://cloud.google.com/transcoder/docs/concepts/regions#available_regions
# - https://firebase.google.com/docs/functions/locations
options:
- label: Iowa (us-central1)
value: us-central1
- label: South Carolina (us-east1)
value: us-east1
- label: Belgium (europe-west1)
value: europe-west1
- label: Sao Paulo (southamerica-east1)
value: southamerica-east1
default: us-central1
required: true
immutable: true
- param: INPUT_VIDEOS_BUCKET
label: Cloud Storage bucket where videos should be picked up and processed.
description: >
Cloud Storage bucket where videos should be picked up and processed.
type: string
example: my-project-12345.appspot.com
validationRegex: ^([0-9a-z_.-]*)$
validationErrorMessage: Invalid storage bucket
default: ${STORAGE_BUCKET}
required: true
- param: OUTPUT_VIDEOS_BUCKET
label: Cloud Storage bucket where processed videos should be output to.
description: >
A Storage bucket that the extension should process videos to.
type: string
example: my-project-12345.appspot.com
validationRegex: ^([0-9a-z_.-]*)$
validationErrorMessage: Invalid storage bucket
default: ${STORAGE_BUCKET}
required: true
- param: INPUT_VIDEOS_PATH
label: Input videos path
description: >
A Storage path in the input video bucket that the extension should process
videos from.
type: string
example: /video_transcoding_input/
validationRegex: ^\/([0-9a-zA-Z_\/\-]*\/){0,1}$
validationErrorMessage: Invalid storage folder name
default: /video_transcoding_input/
required: true
- param: OUTPUT_VIDEOS_PATH
label: Output videos path
description: >
A Storage path in the output video bucket that the processed videos should
be output to.
type: string
example: /video_transcoding_output/
validationRegex: ^\/([0-9a-zA-Z_\/\-]*\/){0,1}$
validationErrorMessage: Invalid storage folder name
default: /video_transcoding_output/
required: true
- param: DEFAULT_TEMPLATE_ID
label: The default transcoding template ID to use for transcoding jobs.
description: >
A template id for populating a job configuration.
example: preset/web-hd
validationRegex: ^[a-zA-Z0-9\/\-_]+$
validationErrorMessage:
Must be an alphanumeric string. Dashes, underscores and forward slashes
are also allowed
default: preset/web-hd
required: true
roles:
- role: transcoder.admin
reason: Allows the extension to create video transcoding jobs.
- role: storage.admin
reason: Allows the extension to write to your Cloud Storage.