Add video processing to n8n Cloud

Run FFmpeg, compression and captions on n8n Cloud with the verified Rendobar node, installed from the nodes panel, with long jobs parked instead of polled.

Share

The most repeated video question on the n8n forum is whether FFmpeg works on n8n Cloud. It was asked in August 2025 and again in April 2026, and the answer both times was no: Cloud ships no FFmpeg binary and allows no shell. Since n8n 2.0 the Execute Command node is off by default on self-hosted instances too, so the workaround of running ffmpeg in a shell step went with it.

Short version

The Rendobar node is verified by n8n and live on n8n Cloud. Press + on the canvas, search for Rendobar, and install it from More from the community. A Create Job step then runs any of the live job types on Rendobar’s workers, including raw FFmpeg commands, and hands the output back. Three ready-made workflows cover compression, captions and arbitrary FFmpeg, all built for Cloud. In a measured run through the node, a 344 KB clip came back at 191 KB in 19.6 seconds for $0.0136. The rest of this post is how the pieces fit, and where they stop.

Installing from the canvas

A verified community node is one n8n has reviewed and publishes itself. The practical difference from an unverified one is where it shows up. Type the name into the nodes panel and it appears under More from the community with a badge and an Install button, on Cloud and on self-hosted 1.94.0 or later.

The n8n nodes panel with Rendobar typed into the search box. Rendobar appears in the results with its icon, a verified badge and the line: Starts the workflow when a Rendobar video or image job finishes, or the balance runs low.
Typed into a fresh instance with nothing installed. The badge is n8n's, not ours.
The n8n node details panel for Rendobar on an instance where it is not installed yet. The Rendobar icon and a verified badge sit next to the name, an orange Install node button sits to the right, and below them is the description.
The details panel behind that result. Install node puts the Rendobar node and its trigger on the whole instance.

The install takes one click and applies to the whole instance. If the section does not appear on Cloud, an instance owner turns on Verified Community Nodes in the Cloud Admin Panel, and a restart may be needed the first time. The older route, Settings, Community nodes, still works on self-hosted instances with the package name @rendobar/n8n-nodes-rendobar.

Two nodes arrive. Rendobar runs operations against the API, and Rendobar Trigger starts a workflow on ten events: five about a job, three about a storage delivery and two about the account balance.

What a workflow looks like

The compression workflow is the shape all three share. A Google Drive trigger fires on a new file, Drive downloads it, and Rendobar’s Upload turns the binary into a URL. Create Job submits compress.target with a 25 MB cap. A Wait node parks the execution. Get Job downloads the result, and Drive and Telegram both receive it.

An n8n canvas with eight connected nodes: Google Drive Trigger, Google Drive download, Rendobar upload, Rendobar compress job, Wait, Rendobar get job, then Google Drive upload and Telegram in parallel. A yellow sticky note above explains how it works and lists setup steps, and three white notes label the sections.
Eight nodes, three of them Rendobar. The sticky notes are the setup guide, so the workflow explains itself after import.

The other two follow the same skeleton. The captions workflow runs caption.burn with the language on auto and posts the Drive link to Slack. The FFmpeg workflow starts from a form that takes a video URL and a command, and a second branch listens for any failed job, reads the runner log with Get Logs, and posts the FFmpeg error text to Slack. That second branch is the one people miss. A filter graph that refuses to build tells you exactly why in stderr, and Get Logs is how the text reaches a channel instead of dying in a status field.

The Rendobar node panel in n8n. Resource is Job, Operation is Create, Job Type is caption.burn. Inputs are given as JSON from the previous node's url. Under Values to Send, Language is auto, Font and Font family are empty, and Font size is 56.
The fields under Values to Send come from the job type's own schema. A job type that ships next month appears here without a node release.

Waiting without a worker

Media jobs are slow relative to a workflow step. The node offers three ways to get a result, and the templates use the second.

Three timelines. Wait for Completion repeats status calls and holds a worker for the whole job. Callback URL plus a Wait node submits once, shows a paused span with no execution time, and resumes on Rendobar's callback. Rendobar Trigger shows one workflow submitting and a second starting on the job.completed event.
Wait for Completion suits a clip. Callback plus Wait suits an hour. The trigger suits a workflow that is the reaction.

Wait for Completion polls until the job ends. It is what the measured run below used, because a five second clip is done before a poll loop gets expensive. Callback URL plus a Wait node is the template default. Create carries the Wait node’s resume URL, the execution parks with no worker held, and Rendobar’s callback resumes it. Two settings make it safe. The Wait node resumes on a POST, because Rendobar POSTs and the node defaults to GET, and Limit Wait Time is on at ten hours so an execution whose callback never lands releases itself. The trigger node is the third option, for when the workflow is the reaction rather than the thing that waits.

The callback path was exercised for real, not only described. Each template’s Rendobar chain ran through a local n8n reachable over a tunnel, with the Drive, Telegram and Slack steps swapped for stand-ins. All three executions parked on the Wait node, Rendobar’s job.completed callback resumed each one, and Get downloaded the file: jobs job_b5122d6b635a4c1a, job_1a7c1365a9b94119 and job_8db34493a2144cce. The failure branch fired too. A job with a missing input woke the trigger and Get Logs returned the download error the runner reported.

What the run measured

The compression job ran through the node against production on 8 September 2026 (UTC), on the 344 KB, 1280 by 720, five second sample clip Rendobar publishes for tests. Two runs, because the first one taught something.

The first run set the cap at 1 MB. The output came back at 352,121 bytes, which is the source byte for byte. The compress step still ran for 20.3 seconds and the job cost $0.0238. A cap the source already meets is not a no-op, so put the cap where you need it.

The second run set the cap at 200 KB, which is 204,800 bytes. The output was 195,532 bytes, 44.5 percent smaller than the source and 9,268 bytes under the cap, at the same 1280 by 720. From submission to completion took 19.6 seconds: 7.0 seconds waiting for a worker, 0.1 downloading the input, 8.9 compressing and 3.5 uploading the output. The node’s own step, polling every five seconds, finished in 23.3 seconds. The job cost $0.0136, and client on the job record read n8n, which is how the dashboard’s usage view knows where it came from.

Sizes are deterministic, so the byte counts above will reproduce. Timings and cost track the clock and will not, so treat them as one sample.

The node as an agent tool

The node is marked usable as a tool, so it attaches to an AI Agent’s tool port and n8n builds the tool schema from the node’s parameters. The design decisions for an agent that spends money are in Give an n8n AI Agent real video tools. The short form: give the agent Account Get next to Job Create, so it reads its balance before it runs an encode, and give it Get Logs so a failed job comes back as FFmpeg’s actual error instead of the word failed.

A Telegram Trigger feeds an AI Agent node, which sends its result back through Telegram. Three Rendobar tools hang off the agent's tool port: Account Get, Job Create and Job Get Logs. To the right, a Rendobar Trigger on job.failed feeds a second AI Agent that reads the logs.
Two of the ten trigger events are about the balance, not a job. Account Get is what answers how low.

Where this stops

The trigger fires on every event of a subscribed type across the account, not filtered by job type or workflow. Two pipelines sharing one account will wake each other’s workflows.

The ready-made workflows need Google Drive, Slack or Telegram credentials of your own, and the Drive trigger polls once a minute, so a new file waits up to sixty seconds before anything happens.

Updates to a verified node ship on n8n’s release cadence, roughly every two weeks, after n8n reviews the new version. A fix published to npm today reaches Cloud instances when that review lands, not the same afternoon.

The measured run is one clip and one cap. A long source, a high cap, or a different codec will move every timing above and the cost with them. The byte counts are the part to trust.

On a self-hosted instance the Wait node’s resume URL must be reachable from the internet, so a laptop needs a tunnel. n8n Cloud has no such step.

Frequently asked questions

How do I run FFmpeg on n8n Cloud?

Install the Rendobar node from the nodes panel. Press + on the canvas, search for Rendobar, and choose Install under More from the community. A Create Job step with the ffmpeg job type then runs your command on Rendobar's workers and returns the output as a URL or a binary. No Execute Command node and no self-hosting.

Does the Rendobar n8n node work on n8n Cloud?

Yes. n8n verified the node, which means n8n reviewed the code and publishes each version itself, and verified community nodes install on n8n Cloud from the nodes panel. If the More from the community section does not appear, an instance owner turns on Verified Community Nodes in the Cloud Admin Panel.

How do I compress a video under 25 MB in n8n?

Use the compress.target job type with a target of maxSize 25mb. The ready-made workflow watches a Google Drive folder, uploads each new video to Rendobar, compresses it under the cap, saves the small copy back to Drive and sends it to Telegram. The size string accepts any value, such as 8mb or 500kb.

How does an n8n workflow wait for a long video job without polling?

Put a Wait node after the Create Job step and set the step's Callback URL option to the Wait node's resume URL. The execution parks with no worker held and resumes when Rendobar calls back. Set the Wait node to resume on a POST webhook call and turn on Limit Wait Time so a callback that never arrives releases the execution.

How do I add captions to a video in n8n?

Use the caption.burn job type. With the language left on auto, Rendobar transcribes the audio and burns styled subtitles into the video. Pass your own SRT or VTT file as the subtitles input to burn that instead. The ready-made workflow watches a Drive folder and posts the captioned file's link to Slack.

Sources

Tags #n8n#automation#ffmpeg#workflow#integrations#captions
All posts
Share
  1. Video APIs that deliver output to your own bucket Guides for the video API
  2. Give a service S3 access without an access key Guides for the video API
  3. Why S3 presigned URLs expire early Guides for the video API