Skip to main content

GCS Connector Filter

The GCS connector filter uploads video segments to Google Cloud Storage buckets. It supports segmented video outputs, optional manifest generation, and customizable upload behavior through the environment and configuration.

Features

  • Google Cloud Storage Output
    Uploads video segments to gs:// destinations, supporting wildcards and segment intervals (e.g., video_%Y-%m-%d_%H-%M-%S.mp4!segtime=1).

  • Manifest Generation
    Creates a manifest JSON file listing all uploaded files and places it into GCS alongside the videos.

  • Nested Manifest Paths
    The manifest field can be a deep path (e.g., my.happy.files) to embed the file list inside a nested structure.

  • Flexible Template Sources
    Templates for manifests can be pulled from:

    • file:// (local disk)
    • gs:// (GCS buckets)
    • Cached remote files
  • Concurrent Uploading
    Background threads upload videos as they are written and clean up local copies.

  • Segmented Video Output
    Video outputs can be chunked using !segtime options.

  • Environment Configuration
    Uses GOOGLE_APPLICATION_CREDENTIALS for GCP service account authentication.

Example Configuration

--outputs 'gs://my-bucket/video_%Y-%m-%d_%H-%M-%S.mp4!segtime=1'
--manifest file://manifest_template.json
--manifest_field videos.segmented

When to Use

Use this filter when:

  • You want to store video output directly in GCS
  • You need a JSON manifest describing stored segments
  • You're working in cloud-native environments where local storage is temporary

Configuration Reference

KeyTypeDefaultDescription
workdirstring"work"Temporary working directory for segment files
timeoutfloat60.0Timeout (in seconds) for GCS uploads
manifeststringnullManifest template path (file, GCS, or cache)
manifest_fieldstring"files"Field in the manifest to write list of uploaded files
outputsstring[]requiredList of GCS output paths with optional segtime
GOOGLE_APPLICATION_CREDENTIALSenv varrequiredPath to service account key
Note

All outputs must be unique in their gs:// path prefix to prevent collisions.