FFmpeg Media Toolkit: Trim, Convert, Compress, GIF, Subtitles avatar

FFmpeg Media Toolkit: Trim, Convert, Compress, GIF, Subtitles

Pricing

Pay per event

Go to Apify Store
FFmpeg Media Toolkit: Trim, Convert, Compress, GIF, Subtitles

FFmpeg Media Toolkit: Trim, Convert, Compress, GIF, Subtitles

Trim, convert, compress, extract audio or frames, make GIFs, and add or burn subtitles for video and audio files you supply (uploads or direct file URLs). Powered by FFmpeg. Video-platform links are not supported.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Nick Hellmich

Nick Hellmich

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

5 days ago

Last modified

Share

Compress, convert and trim your own video and audio files in the cloud, with no software to install. It's FFmpeg as an API: turn MP4 into MP3, MOV into MP4, a video into a GIF, shrink a video to a target size in MB, cut a clip, pull out thumbnails, or burn SRT subtitles into a video. Upload files or paste direct links (Google Drive and Dropbox share links are converted automatically). Pay only per output minute, and failed files are free.

You need the rights to your media. Video-platform links (YouTube, TikTok, Instagram, Vimeo, X, Facebook…) are refused: this isn't a downloader.

What people use it for

  • Video compressor: make an MP4 smaller for email, Slack or upload limits, by quality level or a target size in MB, optionally downscaled to 720p or 480p.
  • Video converter: MP4, WebM, MOV, MKV; audio to MP3, M4A, WAV, FLAC, Opus, OGG (for example MOV to MP4, WebM to MP4, WAV to MP3).
  • Extract audio from video: MP4 to MP3 for podcasts, transcription or music.
  • Video to GIF: a short, palette-optimized GIF from any part of a clip.
  • Trim / cut video or audio: keep a time range, fast (no re-encode) or frame-accurate.
  • Thumbnails and frames: N evenly spaced frames, or one every N seconds, as JPG or PNG.
  • Add subtitles to a video: burn in SRT/VTT/ASS captions, or add them as a soft track.
  • Batch jobs and automations: up to 10 files per run; works from Zapier, Make, n8n, the API, MCP and AI agents.

Quick start

  1. Click Start. The prefill trims the first 5 seconds of a short public test clip (Jellyfish, 360p) for $0.005.
  2. Choose an Operation, then upload files or paste direct links (up to 10 per run).
  3. Open the Output tab and click Download on each row.

If you start a run with no files at all, it finishes immediately with a message telling you what to add, and nothing is charged.

Ready-made inputs

TaskInput
Compress a video to 720p{"operation": "compress", "maxHeight": 720, "quality": "medium", "fileUrls": ["https://example.com/video.mp4"]}
Compress to about 8 MB{"operation": "compress", "targetSizeMB": 8, "fileUrls": ["https://example.com/video.mp4"]}
MP4 to MP3{"operation": "extract_audio", "format": "mp3", "fileUrls": ["https://example.com/talk.mp4"]}
MOV to MP4{"operation": "convert", "format": "mp4", "fileUrls": ["https://example.com/clip.mov"]}
Video to GIF (5 s from 0:03){"operation": "gif", "start": 3, "gifSeconds": 5, "fileUrls": ["https://example.com/clip.mp4"]}
Trim 0:10 to 0:40{"operation": "trim", "start": 10, "end": 40, "fileUrls": ["https://example.com/clip.mp4"]}
6 thumbnails{"operation": "extract_frames", "frameCount": 6, "fileUrls": ["https://example.com/clip.mp4"]}
Burn in SRT subtitles{"operation": "subtitles", "subtitleUrl": "https://example.com/subs.srt", "fileUrls": ["https://example.com/clip.mp4"]}

Operations and typical settings

OperationWhat it doesKey settings
TrimCut a time range. Fast (keyframe) by default, or frame-accuratestart, end, accurate
ConvertChange container or codec; downscaleformat, maxHeight
CompressSmaller file at a quality level, or a target size in MBquality, targetSizeMB, maxHeight
Extract audioAudio track as MP3, M4A, WAV…format, audioBitrate
Extract framesN evenly spaced frames, or one every N secondsframeCount / frameIntervalSeconds, imageFormat
GIFA short, palette-optimized GIFstart, gifSeconds, gifWidth, fps
SubtitlesBurn in, or add as a soft track (SRT, VTT, ASS)subtitleUrl, subtitleMode

Output

There's one row per input with a outputUrl download link, along with outputSeconds, outputHeight, billedEvents, charged, warnings and error. Files are stored in the run's key-value store. Sample row:

{ "source": "https://example.com/clip.mp4", "operation": "compress", "ok": true, "outputSeconds": 10.0,
"outputHeight": 360, "billedEvents": { "video-minute-sd": 1 }, "charged": true,
"outputUrl": "https://api.apify.com/v2/key-value-stores/.../records/ab12cd34-0-output.mp4" }

Pricing (pay per event, per started output minute)

EventPrice
Light minute: fast trim, audio extraction or conversion, soft subtitles$0.005
SD video minute: re-encoded output at 720p or below$0.03
HD video minute: re-encoded output above 720p, or WebM/VP9$0.08
Frame extracted$0.002
GIF created$0.02

Examples: extracting MP3 audio from a 10-minute video costs $0.05; compressing a 3-minute 1080p video to 720p costs $0.09; 10 frames cost $0.02. Billing is based on the output resolution, so downscaling to 720p uses the SD rate. Failed files are never charged, and that includes dead links, sign-in pages and files with no audio. Bronze, Silver and Gold plans get 10/20/30% off. If your Maximum cost per run is too low for a file, the row tells you roughly how much it needs.

Limits

Up to 10 files per run, 500 MB and 30 minutes per input, and outputs up to 1080p. Target-size compression bills two passes. Inputs are deleted after each file, and file contents are never logged.

FAQ

Google Drive or Dropbox link? Paste the normal share link; the file must be shared with "Anyone with the link". Large Drive files may hit Google's virus-scan page; uploading the file directly always works. Why "NOT_A_MEDIA_FILE"? The link returned a web page. Paste the direct file link (it usually ends in .mp4 or .mp3) or upload the file. You weren't charged. Why does fast trim start slightly early? It cuts on keyframes so it can copy the stream without re-encoding. Set accurate: true for frame-exact cuts (billed as SD or HD minutes). Can an AI agent use it? Yes, through the Apify API or MCP, and it supports x402 payments.

Integrations: no-code and AI

Zapier: new video in Dropbox → compressed 720p copy → back to Dropbox

  1. Trigger: Dropbox → New File in Folder.
  2. Action: Apify → Run Actor → FFmpeg Media Toolkit, run asynchronously (encoding takes longer than Zapier's 30 s limit). Input: {"operation": "compress", "fileUrls": ["{{Shared Link}}"], "maxHeight": 720, "quality": "medium"}.
  3. Second Zap: Apify → Finished Actor run trigger → Fetch dataset items → Dropbox Upload File from outputUrl.

Make: webinar recording → MP3 for the podcast feed

Google Drive Watch Files → Apify Run an Actor ({"operation": "extract_audio", "format": "mp3"}) → a separate scenario with Apify Watch Actor Runs → Get Dataset Items → HTTP Get a file (outputUrl) → upload to your podcast host.

n8n: thumbnails and a GIF preview for every new upload

Webhook → Apify: Run an Actor and get dataset ({"operation": "extract_frames", "frameCount": 4}, then a second call with "operation": "gif") → Airtable/Notion row with the image links.

AI pipelines (LangChain / LlamaIndex)

Use it as a preprocessing step: pull audio out of a video before transcription, or extract frames for a vision model.

from langchain_apify import ApifyActorsTool
media = ApifyActorsTool("steady_kahikatea/media-toolkit")
media.invoke({"run_input": {"operation": "extract_frames", "fileUrls": ["https://example.com/demo.mp4"], "frameCount": 6}})

Sample input → output: {"operation": "extract_audio", "fileUrls": ["https://example.com/talk.mp4"], "format": "mp3"} → {"ok": true, "outputSeconds": 600, "billedEvents": {"light-minute": 10}, "outputUrl": "https://api.apify.com/v2/key-value-stores/.../talk.mp3", "charged": true}. Cost: $0.05.

Tip: Zapier's synchronous Run Actor times out after 30 seconds. For anything longer, run it asynchronously and start a second Zap from the Finished Actor run trigger. Make's synchronous timeout depends on your plan; use Watch Actor Runs for long jobs.

Also works with: the Apify API ("API" tab), the Apify MCP server for Claude/Cursor-style agents, and x402 payments.

Docs used: Zapier · Make · n8n · LangChain · LlamaIndex

For AI agents

Actor: steady_kahikatea/media-toolkit
Input: {"operation": "compress", "fileUrls": ["https://example.com/video.mp4"], "maxHeight": 720, "quality": "medium"}
Output: dataset rows with outputUrl, billedEvents, charged, error

Questions or a file that fails? Use the Issues tab. If it's useful, a rating helps others find it.