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

12

Total users

10

Monthly active users

11 hours ago

Last modified

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.
  • Trim any operation with startTime / endTime, mute, and normalize loudness (EBU R128, −16 LUFS).

Inputs: 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.

Input

FieldDescription
mediaUrls, bulkText, datasetIdDirect media file links (list, pasted text/CSV, or another dataset)
operationcompress-video (default), convert-video, extract-audio, convert-audio, video-to-gif
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
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"
}

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

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"}'