Very Good FFmpeg
How it worksPricingCompareFAQDocs
Documentation
API Reference
Documentation
Documentation
Getting Started
Fundamentals
AuthenticationCore ConceptsRunning CommandsJobsAPI Limits and Error Codes
Advanced Topics
Fundamentals
  1. Fundamentals
  2. Core Concepts

Core Concepts

The main parts of an FFmpeg job request.

Very Good FFmpeg runs FFmpeg commands on remote workers. You send file URLs, command strings, and output names. The API returns a job you can poll.

Jobs

A job is one FFmpeg run. It can contain one command or many commands.

Jobs start as queued, move to running, and then finish as succeeded, failed, or cancelled.

Inputs

input_files is a map of names to URLs.

Input files
{
  "input_files": {
    "input": "https://example.com/video.mp4"
  }
}

The worker downloads each input before it runs FFmpeg.

Outputs

output_files is a list of files you want back.

Output files
{
  "output_files": ["output.mp4"]
}

When the job succeeds, the job response includes output_files as a map of output name to download URL.

Placeholders

Use {{name}} in commands to refer to inputs and outputs.

Command placeholders
{
  "ffmpeg_commands": ["-i {{input}} -c:v libx264 {{output.mp4}}"]
}

{{input}} must match a key in input_files. {{output.mp4}} must match a name in output_files.

Machines

Jobs use the CPU worker by default.

Set "machine": "nvidia" only when your command uses GPU features like h264_nvenc, hevc_nvenc, CUDA filters, or NVDEC decode.

Local Files

The API needs URLs. If a file is only on your machine, upload it first with Temporary Files.

Running Commands

Submit jobs and use placeholders.

Jobs

Poll status and read outputs.

Authentication

How to authenticate your requests to the Very Good FFmpeg API.

Running Commands

How to structure requests and track job status.

On this page

JobsInputsOutputsPlaceholdersMachinesLocal Files