v1

latestOpenAPI 3.1.02026-07-26132249.4 KB
API
FFmpeg Commands

Run Chained FFmpeg Commands which share input and output files

Submit multiple FFmpeg commands where following commands can depend on output of previous commands. Running chained FFmpeg commands is faster than running each command separately because we re-use system and network resources between the multiple ffmpeg commands. Processing quota is shared between the commands, and is more efficient than running each command separately.

post/v1/run-chained-ffmpeg-commands

Request body

input_filesobject required

Dictionary mapping file aliases to their publicly accessible paths, file name should appear in the end of the url, keys are alphanumeric, with underscore allowed, must start with 'in_'. You can use public file urls, google drive, dropbox, rendi stored files, s3 stored files, etc. as long as they are publicly accessible.

output_filesobject required

Dictionary mapping file aliases to their desired output file names, keys are alphanumeric, with underscore allowed, must start with 'out_'

max_command_run_secondsnumber

Maximum allowed runtime in seconds for a single FFmpeg command, the default is 300 seconds

vcpu_countinteger

Number of virtual CPUs to use for a single ffmpeg command, the default is 8, up to your account's maximum. Multiple commands can run in parallel as long as their total vCPU usage doesn't exceed your quota.

metadataobject nullable

Metadata to be stored with the command, useful for webhooks and custom tracking and reporting. Up to 10 key-value pairs; each key and each string value must be at most 512 characters.

is_privateboolean

If true, the command's output files are placed in private storage and can only be downloaded via a presigned URL (request one by passing presigned_ttl_seconds on the poll endpoint). Not available on free plans.

ffmpeg_commandsstring[] required

FFmpeg command strings using {{alias}} placeholders for input and output files. Each string is a separate ffmpeg command. Can contain up to 10 commands. The output files will be stored in storage for later access. Input files can be used in all specified commands. Output files from previous commands can be used as input files in later commands. If you wish to use an output file from a previous command as input file in a later command, make sure to use -i right before the output file alias. Input file keys should start with 'in_' prefix, for example: in_video1. Output file keys should start with 'out_' prefix, for example: out_1. If you're using an automation platform where curly brackets are used special as characters (like make.com, zapier, or other) add backslashes before the curly brackets, for example, replace {{in_1}} with backslashes and brackets \{\{in_1\}\}.

Example request

{
  "ffmpeg_commands": [
    "-i {{in_1}} -i {{in_2}} -filter_complex \"[0:v][1:v]hstack=inputs=2[v]\" -map [v] {{out_1}}",
    "-i {{out_1}} -vframes 1 {{out_2}}"
  ],
  "input_files": {
    "in_1": "https://storage.rendi.dev/sample/big_buck_bunny_720p_5sec_intro.mp4",
    "in_2": "https://storage.rendi.dev/sample/big_buck_bunny_720p_5sec_outro.mp4"
  },
  "max_command_run_seconds": 300,
  "metadata": {
    "key": "value"
  },
  "output_files": {
    "out_1": "output_concatenated.mp4",
    "out_2": "thumbnail.jpg"
  },
  "vcpu_count": 8
}

Response

Successfully submitted chained FFmpeg commands

command_idstring uuid required

Unique identifier for the submitted command

Example response

{
  "command_id": "123e4567-e89b-12d3-a456-426614174000"
}