Video Converter & Compressor – MP4, MP3, WebM, GIF (FFmpeg) avatar

Video Converter & Compressor – MP4, MP3, WebM, GIF (FFmpeg)

Pricing

from $8.00 / 1,000 video minute (sd)s

Go to Apify Store
Video Converter & Compressor – MP4, MP3, WebM, GIF (FFmpeg)

Video Converter & Compressor – MP4, MP3, WebM, GIF (FFmpeg)

Video converter, video compressor and audio converter for media file URLs: MP4/WebM/MOV, compress to a target size or 1080p/720p/480p, MP4 to MP3, WAV/FLAC/M4A/OGG/Opus, video to GIF, trim, mute, normalize loudness. Public download links. From $0.03 per video minute.

Pricing

from $8.00 / 1,000 video minute (sd)s

Rating

0.0

(0)

Developer

Cemal Atakli

Cemal Atakli

Maintained by Community

Actor stats

0

Bookmarked

35

Total users

29

Monthly active users

14 days ago

Last modified

Features

Limited permissions

Share

Convert, compress and trim video and audio files from URLs in the cloud with FFmpeg. Paste direct links to your media files and get back public download links plus clean metadata for every file:

  • Compress video – smaller MP4 (H.264/AAC) or WebM, by quality level (small / balanced / high) or to an exact target size in MB (e.g. 8 MB for Discord, 16 MB for WhatsApp), downscale to 1080p / 720p / 480p, change the frame rate.
  • Convert video – MP4 (H.264 + AAC, plays everywhere), WebM (VP9 + Opus) or MOV.
  • Extract audio – MP4 to MP3, M4A, WAV, FLAC, OGG or Opus, with your bitrate.
  • Convert audio – WAV to MP3, FLAC to M4A, MP3 to Opus… any combination.
  • Video to GIF – high-quality GIFs with a per-clip color palette, your fps, width, start time and length.
  • Change speed – 0.25× slow motion to 4× fast, video and audio together (pitch is kept).
  • Rotate / flip – fix sideways phone videos: 90° / 180° / 270°, horizontal mirror, vertical flip.
  • Remove silence – shorten long pauses in podcasts, lectures and voice-overs (audio output: MP3, M4A, WAV…).
  • Trim any operation with startTime / endTime, mute, and normalize loudness (EBU R128, −16 LUFS).

Inputs: direct links – MP4, MOV, WebM, MKV, AVI, M4V, MPEG-TS, MP3, WAV, M4A, AAC, FLAC, OGG, Opus and HLS .m3u8 streams – anything FFmpeg reads.

Not a YouTube / TikTok / Instagram downloader. Links to pages of YouTube, TikTok, Instagram, Facebook, X, Vimeo, Twitch, SoundCloud, Spotify and similar platforms are refused with a clear error (free). Use direct links to files you own or are allowed to process: your CDN, S3 / R2 / GCS bucket, Dropbox or Drive direct links, stock footage, podcast hosting, form uploads.

What can I use it for?

  • Shrink user uploads before storing them or sending them by email, Slack, Discord or WhatsApp (target size mode).
  • MP4 to MP3 for podcasts, transcription pipelines (Whisper, Deepgram) and audio previews.
  • Web-ready video: convert MOV / MKV / AVI uploads to MP4 H.264 with fast start, or to WebM.
  • GIF previews and thumbnails-in-motion for product pages, docs, newsletters and social posts.
  • Batch-normalize loudness of podcast episodes or voice-overs.
  • Automations: call it from Make, Zapier, n8n or your backend after a file lands in a bucket, or chain it after another Actor that outputs media URLs.

No public link? In the Console, open the Upload files from your computer field (uploadedFiles), drop your video or audio files, then select the same store in Key-value store with your uploads (uploadStore) and click Start. The Actor runs with limited permissions, so it can read only the store you select (tip: upload into an existing named store such as my-media so it is easy to pick). Uploads go to your own Apify key-value storage and the run reads them with its own token – nothing is made public except the converted output link. When you upload files, the pre-filled demo link in mediaUrls is ignored, so you are not billed for it. Via the API you can pass Apify key-value store record URLs (https://api.apify.com/v2/key-value-stores/<storeId>/records/<key>) in uploadedFiles or mediaUrls.

Input

FieldDescription
mediaUrls, bulkText, datasetIdDirect media file links (list, pasted text/CSV, or another dataset)
uploadedFilesFiles uploaded in the Console (or Apify key-value store record URLs)
uploadStoreKey-value store holding your uploads (grants this run read access; converts all its media files if uploadedFiles is empty)
operationcompress-video (default), convert-video, extract-audio, convert-audio, video-to-gif, change-speed, rotate-flip, remove-silence
videoFormatmp4 (default), webm, mov
compressionLevelsmall (CRF 30), balanced (CRF 26, default), high (CRF 22)
targetSizeMbExact output size for compress-video (two-pass encoding)
maxResolutionoriginal, 2160, 1440, 1080, 720 (default for compress), 480, 360 – never upscales; portrait-aware
fps, mute, normalizeAudioFrame rate (0 = keep), drop audio, loudness normalization
audioFormat, audioBitrateKbpsmp3, m4a, wav, flac, ogg, opus; 32–320 kbps (default 192)
gifFps, gifWidth, gifMaxSeconds10 fps, 480 px, 10 s by default
speedchange-speed factor, 0.25–4 (default 1.5). Video files keep the video settings; audio-only files use the audio settings
rotate, fliprotate-flip: 0 / 90 (default) / 180 / 270 clockwise; none / horizontal / vertical / both
silenceThresholdDb, minSilenceSecondsremove-silence: what counts as silence (−50 dB default; try −35 for noisy rooms) and the longest pause kept (0.5 s default)
startTime, endTimeTrim, e.g. 75, 01:15, 00:01:15.5
maxFileSizeMb, maxDurationMinutesSafety limits: 500 MB and 60 minutes per file by default (skipped files are free)

Compress a video to 8 MB at 720p:

{
"mediaUrls": ["https://download.samplelib.com/mp4/sample-10s.mp4"],
"operation": "compress-video",
"targetSizeMb": 8,
"maxResolution": "720"
}

Extract MP3 from a video, only minutes 2–6:

{
"mediaUrls": ["https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4"],
"operation": "extract-audio",
"audioFormat": "mp3",
"audioBitrateKbps": 192,
"startTime": "00:02:00",
"endTime": "00:06:00"
}

Make a phone video 2× faster, rotate it upright, or tighten a podcast (one input per run):

{"mediaUrls": ["https://download.samplelib.com/mp4/sample-5s.mp4"], "operation": "change-speed", "speed": 2}
{"mediaUrls": ["https://download.samplelib.com/mp4/sample-5s.mp4"], "operation": "rotate-flip", "rotate": "90"}
{"mediaUrls": ["https://example.com/episode-12.wav"], "operation": "remove-silence", "audioFormat": "mp3"}

Output

One dataset row per file (Output tab: Converted files table with download links). The file itself is in the run's key-value store; fileUrl is a public link.

{
"sourceUrl": "https://download.samplelib.com/mp4/sample-10s.mp4",
"operation": "compress-video",
"status": "ok",
"input": {"duration": 10.216, "width": 1920, "height": 1080, "fps": 29.97, "videoCodec": "h264", "audioCodec": "aac",
"container": "mov,mp4,m4a,3gp,3g2,mj2", "bitrateKbps": 4296, "sizeBytes": 5485935},
"output": {"format": "mp4", "duration": 10.216, "width": 1280, "height": 720, "videoCodec": "h264", "audioCodec": "aac",
"bitrateKbps": 1784, "sizeBytes": 2278391, "sizeReductionPct": 58.5},
"fileUrl": "https://api.apify.com/v2/key-value-stores/<storeId>/records/000-sample-10s.mp4",
"fileKey": "000-sample-10s.mp4",
"billedEvents": {"hd-video-minute": 1},
"processingSec": 3.8,
"processedAt": "2026-10-11T11:56:53+00:00"
}

Failed items have status: "error", an errorCode (UNSUPPORTED_PLATFORM, INVALID_URL, HTTP_404, HTTP_403, NOT_MEDIA, FILE_TOO_LARGE, TOO_LONG, NO_AUDIO_STREAM, NO_VIDEO_STREAM, MAX_CHARGE_REACHED, …) and a readable error – and are never charged. A SUMMARY record has run totals.

Pricing

Pay only for what you get: per started minute of output media, priced by output resolution. Failed, skipped and refused files are free.

WhatPrice
Video minute, SD (480p / 360p)$0.008
Video minute, HD (720p)$0.025
Video minute, Full HD (1080p)$0.05
Video minute, 4K / 1440p$0.20
Audio minute (MP3, M4A, WAV, FLAC, OGG, Opus)$0.003
Loudness normalization+$0.015 per output minute
GIF$0.015 per 10 seconds
Actor start$0.00005

change-speed and rotate-flip are billed like other video output (by output resolution and output length – a 4-minute video at 2× is 2 minutes); change-speed on an audio-only file and remove-silence are billed as audio minutes of the output (after the pauses are removed).

Examples: a 10-minute podcast WAV → MP3 = $0.03; a 3-minute 1080p phone video compressed to 720p = $0.075; a 10-second GIF = $0.015. Trim first to pay only for the part you need. Set a maximum total charge on the run and the Actor stops cleanly before exceeding it.

Other media converters on the Apify Store (30-day users at the time of writing):

ActorUsers (30 d)Price model
hgservices/video-downloader-converter25$0.01 per result
whitewalk/ffmpeg-cloud-mcp24–
rixin/video-compressor5–
codingfrontend/video-converter4$0.005 per result
akash9078/audio-file-converter0–

Per-result pricing is cheaper for very short clips; per-minute pricing is predictable for long files and covers target-size compression, GIF, audio extraction, loudness normalization, trimming and HLS in one Actor.

FAQ

Can I convert a YouTube or TikTok video? No. Platform pages are refused on purpose (their terms forbid downloading). Use a direct link to a file you own or may process.

How big can files be? Up to maxFileSizeMb (500 MB default, max 5,000). For files over ~1 GB, run with 8 GB+ memory. Length is capped by maxDurationMinutes (60 default) so a wrong link can't create a large bill.

How accurate is the target size? Two-pass H.264 usually lands within ±5% (20 MB requested → 19.9 MB in our test). Very short or very static clips may come out smaller.

Which resolution am I billed for? The output's short side: a 1080p video compressed to 720p is billed as HD. Vertical (portrait) videos use the same rule, so a 1080×1920 phone video is Full HD.

Is the quality good? MP4 uses x264 veryfast with CRF 22/26/30, AAC audio and +faststart for instant web playback. WebM uses fast real-time VP9 (larger than MP4 at the same quality, but plays natively in browsers). GIFs use a per-clip palette with dithering.

How long are files kept? In the run's default key-value store, subject to your Apify data retention. Download or copy them if you need them longer.

Private files? Use pre-signed S3/GCS/R2 URLs or any link that works without a login. Hosts that block datacenter IPs work with the proxy option.

Use with AI agents / Apify MCP

The Actor works as a tool in the Apify MCP server (Claude, Cursor, VS Code, ChatGPT and other MCP clients) and through the Apify API. An agent can say "compress this video to 10 MB", "give me the audio of this file as MP3" or "make a 5-second GIF starting at 0:42" and get back a public fileUrl. Typical chain: media URL → this Actor (extract-audio, mp3/m4a) → a transcription Actor → summary.

curl -X POST "https://api.apify.com/v2/acts/gazidev~media-converter/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mediaUrls":["https://download.samplelib.com/mp4/sample-10s.mp4"],"operation":"extract-audio","audioFormat":"mp3"}'

Use with n8n / Make / API

Any HTTP client works: one POST runs the Actor, waits, and returns the dataset rows (with fileUrl) – keep jobs under ~5 minutes for the synchronous endpoint, otherwise start a run and fetch the dataset when it finishes.

  • n8n: HTTP Request node → Method POST, URL below, Body JSON with the input. Or use the Apify community node (Run Actor → gazidev/media-converter).
  • Make: the Apify app's Run an Actor module (Actor gazidev/media-converter, "Run synchronously"), then Get Dataset Items; or the generic HTTP – Make a request module with the same URL.
  • Zapier / backend: same request; send your token in the Authorization: Bearer header.
curl -X POST "https://api.apify.com/v2/acts/gazidev~media-converter/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" \
-d '{"mediaUrls":["https://download.samplelib.com/mp4/sample-5s.mp4"],"operation":"compress-video","targetSizeMb":8}'