Video Converter & Compressor – MP4, MP3, WebM, GIF (FFmpeg)
Pricing
from $8.00 / 1,000 video minute (sd)s
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
Maintained by CommunityActor stats
0
Bookmarked
12
Total users
10
Monthly active users
11 hours ago
Last modified
Categories
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
| Field | Description |
|---|---|
mediaUrls, bulkText, datasetId | Direct media file links (list, pasted text/CSV, or another dataset) |
operation | compress-video (default), convert-video, extract-audio, convert-audio, video-to-gif |
videoFormat | mp4 (default), webm, mov |
compressionLevel | small (CRF 30), balanced (CRF 26, default), high (CRF 22) |
targetSizeMb | Exact output size for compress-video (two-pass encoding) |
maxResolution | original, 2160, 1440, 1080, 720 (default for compress), 480, 360 – never upscales; portrait-aware |
fps, mute, normalizeAudio | Frame rate (0 = keep), drop audio, loudness normalization |
audioFormat, audioBitrateKbps | mp3, m4a, wav, flac, ogg, opus; 32–320 kbps (default 192) |
gifFps, gifWidth, gifMaxSeconds | 10 fps, 480 px, 10 s by default |
startTime, endTime | Trim, e.g. 75, 01:15, 00:01:15.5 |
maxFileSizeMb, maxDurationMinutes | Safety 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.
| What | Price |
|---|---|
| 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):
| Actor | Users (30 d) | Price model |
|---|---|---|
| hgservices/video-downloader-converter | 25 | $0.01 per result |
| whitewalk/ffmpeg-cloud-mcp | 24 | – |
| rixin/video-compressor | 5 | – |
| codingfrontend/video-converter | 4 | $0.005 per result |
| akash9078/audio-file-converter | 0 | – |
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"}'