FFmpeg API
for developers.
Run real FFmpeg commands in the cloud. Send a command over HTTP, let FFHub handle workers, storage, retries, and scaling, then get a URL to the processed output.
curl -X POST https://api.ffhub.io/v1/tasks \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"command": "ffmpeg -i https://example.com/input.mp4 -c:v libx264 -crf 24 output.mp4"
}'
# → { "task_id": "tsk_..." }
# Poll GET /v1/tasks/{task_id}
# → outputs[0].urlFFmpeg is easy locally.
Production is the hard part.
The command is rarely the problem. The operational surface around it is what slows teams down.
Worker maintenance
Keep FFmpeg binaries, codecs, OS packages, CPU capacity, and isolation updated without touching your app servers.
Queues and retries
Video jobs fail, time out, and need polling. A clean task lifecycle matters more than another shell script.
Storage plumbing
Inputs need reachable URLs, outputs need durable download links, and temporary files need cleanup.
Burst scaling
One upload is simple. A backlog of user videos needs concurrency control and workers that can scale independently.
One API surface,
normal FFmpeg syntax.
FFHub keeps the integration small: upload or pass a URL, create a task, poll status, and download the result.
Provide input
Use a public URL or upload a local file through the Files API.
Submit command
POST your FFmpeg command to /v1/tasks with a bearer token.
Track progress
Poll task status from your backend or watch runs in the dashboard.
Use output URL
Completed tasks return public output URLs you can store, serve, or pass downstream.
All the media jobs
your product keeps postponing.
If FFmpeg can express it, FFHub is designed to run it as an asynchronous cloud task.
Video transcoding
Convert MOV, MKV, AVI, WebM, or user uploads into web-ready MP4, HLS, or DASH outputs.
Compression pipelines
Shrink large uploads with CRF, presets, scaling, and codec choices you control.
Thumbnail generation
Capture poster frames for UGC feeds, CMS assets, product videos, or previews.
Audio extraction
Pull MP3, AAC, WAV, FLAC, or Opus tracks for transcription, podcasts, and AI workflows.
Subtitles and overlays
Burn captions, add text watermarks, overlay logos, and keep exact filter control.
Batch processing
Trigger tasks from queues, webhooks, cron jobs, or your own backend workflows.
Use FFmpeg directly,
without owning the machinery.
FFHub sits between raw infrastructure and preset-only video APIs.
| Requirement | FFHub | Self-hosted FFmpeg | Preset-based APIs |
|---|---|---|---|
| Command control | Raw FFmpeg command arguments | Full control | Usually limited to supported presets |
| Infrastructure | Managed cloud workers and storage | You operate servers, queues, and cleanup | Managed, but less FFmpeg-native |
| Custom filters | Use normal filter graphs | Use normal filter graphs | Often restricted or unavailable |
| Integration shape | REST task API with polling and output URLs | Custom worker protocol | Provider-specific job format |
| Best fit | Developers who already know FFmpeg | Teams with media infrastructure capacity | Teams that only need standard outputs |
Good for API-first teams,
not a magic preset layer.
FFHub is intentionally close to FFmpeg. That is the point.
Use FFHub when
- You already know the FFmpeg flags you need.
- You want async tasks without running workers.
- You need custom filters, stream mapping, or unusual codecs.
- You want to start small and pay for processing instead of capacity.
Use something else when
- You want a consumer editor or timeline UI.
- You need a preset-only encoding workflow with no FFmpeg knowledge.
- You want to own every machine and tune low-level infrastructure yourself.
- You require a full video CMS, player, DRM, and analytics platform.
Send your first FFmpeg task
in a few minutes.
Use the quickstart for a real request-response flow, or open the playground if you want to try a command before wiring it into your backend.