n8n + FFmpeg
Verified n8n Partner

Use FFmpeg in n8n workflows

RenderIO's cloud FFmpeg API has a partner-verified native n8n node. Process video in any workflow, on n8n Cloud or self-hosted, without Docker or shell access.

The Problem

Why FFmpeg doesn't work on n8n Cloud

If you've searched for "how to install FFmpeg on n8n" or "n8n execute command FFmpeg," you already know the answer: you can't. n8n Cloud disables the Execute Command node. Self-hosted n8n needs a custom Docker image with FFmpeg baked in. Either way, running FFmpeg inside n8n is a pain.

Execute Command is disabled on n8n Cloud

n8n Cloud runs workflows in a sandboxed environment. Shell access is blocked. The Execute Command node doesn't exist. You can't install FFmpeg, ImageMagick, or any binary. If your workflow needs video processing, you're stuck.

Self-hosting means Docker maintenance

You can run FFmpeg on self-hosted n8n by building a custom Docker image. That means writing a Dockerfile, installing FFmpeg and its dependencies, managing updates, and making sure the server has enough CPU and RAM for encoding. It works, but it's a maintenance burden on top of maintaining n8n itself.

Video processing blocks workflow execution

Even if you get FFmpeg running on self-hosted n8n, encoding is CPU-intensive. A 5-minute video takes minutes to process and consumes the CPU the whole time. During that window, your n8n instance slows down or blocks other workflow executions.

RenderIO has an approved native n8n node

Install the RenderIO node from the n8n community node directory. Send your FFmpeg command from any n8n instance, Cloud or self-hosted. The video processes on RenderIO's servers. Your n8n instance stays free to run other workflows. No Docker images, no binaries, no server sizing.

Workflow

How to use FFmpeg in n8n (step by step)

Use the HTTP Request node in n8n to connect to Renderio's FFmpeg online processing API. Four steps from trigger to processed result.

Step 01

Trigger your workflow

Start from any n8n trigger like a webhook, a new file in Google Drive, a Slack message, a scheduled cron job, or any of n8n's 400+ integrations.

Step 02

Send video URL to Renderio

Use the HTTP Request node to call Renderio's FFmpeg API. Pass your video URL and the FFmpeg command you want to run. Any command FFmpeg supports.

Step 03

Receive processed result

Renderio processes your video in the cloud and returns the output file URL. No servers to manage, no FFmpeg to install, no Docker images to maintain.

Step 04

Continue your automation

Route the processed file wherever it needs to go: upload to S3, notify your team on Slack, update a database, or trigger the next step.

Use Cases

n8n video automation workflows

Real n8n video processing workflows you can build today with Renderio. Compress, convert, extract, and watermark with any FFmpeg command in your video automation pipeline.

Compress uploads and store in S3

A user uploads a video through your app. n8n catches the webhook, sends the file to Renderio for compression, and stores the optimized version in Amazon S3 automatically.

Auto-generate 720p course videos

When a new lecture video lands in Google Drive, n8n detects it, sends it to Renderio to transcode to 720p, and uploads the result back to your course platform.

Extract MP3 from podcast recordings

A podcast episode is recorded as video. n8n picks it up, sends it to Renderio to extract the audio as MP3, and publishes the audio file to your hosting service.

Batch watermark product videos

New product videos are added to a spreadsheet. n8n loops through each one, sends them to Renderio to overlay your brand watermark, and updates the sheet with output URLs.

Convert long-form to social clips

A long video is published to your CMS. n8n triggers a workflow that sends it to Renderio to resize and compress for social media, then posts the result to your distribution channels.

Generate thumbnails on upload

Every time a video is uploaded to your platform, n8n sends it to Renderio to extract a frame as a thumbnail image and stores it alongside the original file.

Comparison

RenderIO vs other n8n video processing options

Three ways to process video in n8n. Here's how they compare.

Feature
Renderio API
Self-hosted FFmpeg
Other video APIs
Works on n8n Cloud
Yes
No
Most do
FFmpeg installation needed
No
Yes (custom Docker)
No
Docker setup needed
No
Yes
No
Full FFmpeg command support
Yes, any command
Yes
Limited presets only
Async processing
Yes (poll or webhook)
No, blocks execution
Varies
File storage included
Yes (24h, R2-backed)
Self-managed
Varies
Server maintenance
None
You manage everything
None
Setup time
5 minutes
Hours to days
30+ minutes
Pricing
From $9/mo (500 commands)
Server costs
Typically $49+/mo
Custom FFmpeg flags
Full control
Full control
Usually not
Code examples

n8n FFmpeg command examples

Copy these JSON bodies into your n8n HTTP Request node. Each one is a complete request body for POST https://renderio.dev/api/v1/run-ffmpeg-command. Replace the input URL with your actual video URL, or use n8n expressions like {{ $json.videoUrl }}.

Compress video

Reduce file size while keeping quality reasonable. Good for user uploads or storage optimization.

{
  "ffmpeg_command": "-i {{in_video}} -c:v libx264 -crf 28 -preset slow -c:a aac -b:a 128k {out_video}",
  "input_files": { "in_video": "{{ $json.videoUrl }}" },
  "output_files": { "out_video": "compressed.mp4" }
}

Lower CRF = better quality, bigger file. CRF 28 is a good balance. CRF 23 is visually lossless for most content.

Convert MP4 to GIF

Turn a video clip into an animated GIF with palette optimization for better color quality.

{
  "ffmpeg_command": "-i {{in_video}} -vf \"fps=15,scale=480:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse\" -loop 0 {out_gif}",
  "input_files": { "in_video": "{{ $json.videoUrl }}" },
  "output_files": { "out_gif": "output.gif" }
}

The palettegen and paletteuse filters give much better colors than a raw conversion.

Extract audio from video

Pull the audio track as an MP3 file. Useful for podcast workflows.

{
  "ffmpeg_command": "-i {{in_video}} -vn -acodec libmp3lame -q:a 2 {out_audio}",
  "input_files": { "in_video": "{{ $json.videoUrl }}" },
  "output_files": { "out_audio": "audio.mp3" }
}

The -q:a 2 flag sets VBR quality. 0 is best, 9 is smallest. 2 is a good default for spoken audio.

Add a watermark

Overlay a PNG logo in the bottom-right corner with padding.

{
  "ffmpeg_command": "-i {{in_video}} -i {{in_logo}} -filter_complex \"overlay=W-w-20:H-h-20\" {out_video}",
  "input_files": { "in_video": "{{ $json.videoUrl }}", "in_logo": "{{ $json.logoUrl }}" },
  "output_files": { "out_video": "watermarked.mp4" }
}

Change W-w-20:H-h-20 to adjust position. Use 20:20 for top-left.

Resize for TikTok (9:16)

Scale and pad a horizontal video to vertical 1080x1920.

{
  "ffmpeg_command": "-i {{in_video}} -vf \"scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2:black\" -c:v libx264 -crf 23 -c:a aac {out_video}",
  "input_files": { "in_video": "{{ $json.videoUrl }}" },
  "output_files": { "out_video": "tiktok-ready.mp4" }
}

To crop instead of pad, replace the filter with scale=1080:1920:force_original_aspect_ratio=increase,crop=1080:1920.

Trim a clip

Extract a 30-second clip starting at the 1-minute mark.

{
  "ffmpeg_command": "-i {{in_video}} -ss 00:01:00 -t 00:00:30 -c copy {out_video}",
  "input_files": { "in_video": "{{ $json.videoUrl }}" },
  "output_files": { "out_video": "clip.mp4" }
}

Using -c copy makes this nearly instant because it copies the streams without re-encoding.

FAQ

Frequently asked questions

Can I use FFmpeg on n8n Cloud?

Not directly. n8n Cloud disables the Execute Command node, so you can't install or run FFmpeg. The workaround is to use an HTTP Request node to call an external FFmpeg API like RenderIO. Your workflow sends a video URL and an FFmpeg command, and gets back the processed result.

Do I need Docker to run FFmpeg in n8n?

Only if you're self-hosting and want FFmpeg installed on the same machine. You'd need to build a custom Docker image with FFmpeg included. With RenderIO, you skip all of that. The HTTP Request node works from any n8n instance, Cloud or self-hosted, with no Docker configuration.

How do I install FFmpeg on n8n?

On self-hosted n8n with Docker, you'd create a custom Dockerfile that extends the n8n image and runs apt-get install ffmpeg. Then rebuild and redeploy your container. On n8n Cloud, you can't. The alternative is to call RenderIO's API from an HTTP Request node, which gives you the same FFmpeg functionality without installing anything.

Is there an n8n FFmpeg community node?

Yes. RenderIO has an approved native n8n community node. Install it from the n8n community node directory and use it directly in your workflows, on Cloud or self-hosted. There are also some community FFmpeg nodes on npm, but those require FFmpeg installed on the server and won't work on n8n Cloud.

How much does RenderIO cost?

Paid plans start at $9/month for 500 FFmpeg commands (Starter), $29/month for Growth, and $99/month for Business. Each command is one FFmpeg execution, so compressing one video counts as one command.

Can I batch process videos in n8n?

Yes. Use n8n's Split In Batches node to loop through a list of video URLs, submit each one to RenderIO, and collect the results. You can process hundreds of videos in a single workflow run.

What FFmpeg commands does RenderIO support?

All of them. RenderIO runs a full FFmpeg binary. Any command that works in your terminal works through the API. Filters, codecs, multi-input operations, complex filtergraphs, anything. You write the command, RenderIO runs it.

How long does processing take?

It depends on the command and the input file. A simple format conversion or trim with stream copy finishes in seconds. A full re-encode of a 10-minute video at slow preset takes 1-3 minutes. RenderIO processes asynchronously, so your n8n workflow isn't blocked while it runs.

Start processing video in n8n

Connect FFmpeg to n8n through the native RenderIO node. Works on n8n Cloud and self-hosted. No Docker, no binaries, no server sizing. Get an API key, add the RenderIO node, and start processing. Prefer Zapier? Set up FFmpeg with Zapier instead.