FFmpeg API
für Entwickler.
Führe echte FFmpeg-Befehle in der Cloud aus. Sende einen Befehl per HTTP, FFHub übernimmt Worker, Storage, Retries und Skalierung, und du erhältst eine URL zum verarbeiteten 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 lokal ist einfach.
Produktion ist der harte Teil.
Der Befehl ist selten das Problem. Die operative Umgebung darum herum bremst Teams aus.
Worker-Wartung
FFmpeg-Binaries, Codecs, OS-Pakete, CPU-Kapazität und Isolation aktuell halten, ohne App-Server zu belasten.
Queues und Retries
Video-Jobs schlagen fehl, laufen in Timeouts und brauchen Polling. Ein sauberer Task-Lifecycle zählt mehr als noch ein Shell-Skript.
Storage-Verkabelung
Inputs brauchen erreichbare URLs, Outputs dauerhafte Download-Links und temporäre Dateien müssen bereinigt werden.
Burst-Skalierung
Ein Upload ist einfach. Ein Backlog aus Nutzer-Videos braucht Concurrency Control und unabhängig skalierende Worker.
Eine API-Oberfläche,
normale FFmpeg-Syntax.
FFHub hält die Integration klein: Datei oder URL übergeben, Task erstellen, Status abfragen, Ergebnis herunterladen.
Input bereitstellen
Nutze eine öffentliche URL oder lade eine lokale Datei über die Files API hoch.
Befehl senden
POSTe deinen FFmpeg-Befehl mit Bearer Token an /v1/tasks.
Fortschritt verfolgen
Frage den Task-Status im Backend ab oder beobachte Runs im Dashboard.
Output-URL nutzen
Abgeschlossene Tasks liefern öffentliche Output-URLs zum Speichern, Ausliefern oder Weiterverarbeiten.
Die Media-Jobs,
die dein Produkt ständig verschiebt.
Wenn FFmpeg es ausdrücken kann, ist FFHub dafür gebaut, es als asynchronen Cloud-Task auszuführen.
Video-Transcoding
Wandle MOV, MKV, AVI, WebM oder Nutzer-Uploads in webtaugliche MP4-, HLS- oder DASH-Outputs um.
Compression-Pipelines
Verkleinere große Uploads mit CRF, Presets, Scaling und Codec-Wahl unter deiner Kontrolle.
Thumbnail-Generierung
Erzeuge Poster Frames für UGC-Feeds, CMS-Assets, Produktvideos oder Previews.
Audio-Extraktion
Ziehe MP3, AAC, WAV, FLAC oder Opus für Transkription, Podcasts und AI-Workflows.
Subtitles und Overlays
Brenne Captions ein, füge Text-Watermarks oder Logos hinzu und behalte genaue Filter-Kontrolle.
Batch-Verarbeitung
Starte Tasks aus Queues, Webhooks, Cronjobs oder eigenen Backend-Workflows.
FFmpeg direkt nutzen,
ohne die Maschinen zu besitzen.
FFHub liegt zwischen roher Infrastruktur und preset-only Video APIs.
| Anforderung | FFHub | Self-hosted FFmpeg | Preset-basierte APIs |
|---|---|---|---|
| Command Control | Rohe FFmpeg-Argumente | Volle Kontrolle | Meist auf unterstützte Presets begrenzt |
| Infrastruktur | Managed Cloud Worker und Storage | Du betreibst Server, Queues und Cleanup | Managed, aber weniger FFmpeg-native |
| Custom Filters | Normale Filter Graphs verwenden | Normale Filter Graphs verwenden | Oft eingeschränkt oder nicht verfügbar |
| Integration | REST Task API mit Polling und Output-URLs | Eigenes Worker-Protokoll | Provider-spezifisches Job-Format |
| Best Fit | Entwickler, die FFmpeg schon kennen | Teams mit Kapazität für Media-Infrastruktur | Teams mit nur standardisierten Outputs |
Gut für API-first Teams,
keine magische Preset-Schicht.
FFHub bleibt absichtlich nah an FFmpeg. Genau darum geht es.
Nutze FFHub, wenn
- du die nötigen FFmpeg-Flags bereits kennst.
- du async Tasks willst, aber keine Worker betreiben möchtest.
- du Custom Filters, Stream Mapping oder seltene Codecs brauchst.
- du klein starten und für Processing statt Kapazität zahlen willst.
Nutze etwas anderes, wenn
- du einen Consumer-Editor oder eine Timeline UI brauchst.
- du einen preset-only Workflow ohne FFmpeg-Wissen willst.
- du jede Maschine selbst besitzen und Low-Level-Infrastruktur tunen möchtest.
- du vollständiges Video CMS, Player, DRM und Analytics brauchst.
Sende deinen ersten FFmpeg-Task
in wenigen Minuten.
Nutze den Quickstart für einen echten Request-Response-Flow, oder öffne den Playground, wenn du zuerst einen Befehl testen willst.