Video Converter — MP4 to MP3, Trim, GIF and Audio Extraction
Pricing
from $12.00 / 1,000 video minute processeds
Video Converter — MP4 to MP3, Trim, GIF and Audio Extraction
The active Apify pricing record determines your bill: `audio-minute-processed` previous/requested $0.001; `video-minute-processed` previous $0.015 / requested $0.026; `hd-video-minute` previous/requested $0.045; platform usage included; failed results free.
Pricing
from $12.00 / 1,000 video minute processeds
Rating
0.0
(0)
Developer
Logan Parker
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Features
Share
Convert up to 20 audio or video files per run with ffmpeg: extract audio as MP3, WAV, M4A, OGG, FLAC or Opus; transcode video to MP4, WebM, MOV or MKV; trim, compress to a target size, or make GIFs. Choose resolution and compression presets, mute a video or normalise audio loudness; it is for anyone without ffmpeg at hand, and for AI agents chaining media steps, which can call and pay for it through Apify's MCP server and agentic payments.
The active Apify pricing record determines your bill; for the previous/requested schedules, audio-minute-processed previous/requested $0.001; video-minute-processed previous $0.015 / requested $0.026; hd-video-minute previous/requested $0.045; usage is included and failed results are free.
Example result
Example record for the trim example task (a 15-second clip of Big Buck Bunny), as this Actor's conversion returned it on 2026-10-16; the store id in outputUrl is the run's own:
{"url": "https://raw.githubusercontent.com/mediaelement/mediaelement-files/4d21a042353022326071acb0251ab75cd6bae114/big_buck_bunny.mp4","ok": true,"operation": "trim","key": "output.mp4","outputUrl": "https://api.apify.com/v2/key-value-stores/STORE_ID/records/output.mp4","format": "mp4","durationSec": 15.0,"sizeBytes": 1063409,"width": 640,"height": 360,"minutesCharged": 1,"event": "video-minute-processed","warnings": []}
How to use it
Start a run in Apify Console, by API or from an agent with an input like this one — it is the input Apify runs every day to test this Actor:
{"urls": ["https://media.w3.org/2010/05/sintel/trailer.mp4"], "operation": "extract_audio", "audioFormat": "mp3"}
| Field | Type | Required | Default | Meaning |
|---|---|---|---|---|
url | string | one of url/urls | — | One audio or video file URL, http or https, up to 1 GB (MP4, MOV, MKV, WebM, AVI, FLV, MPEG-TS, MP3, WAV, M4A, AAC, OGG, FLAC and other single-file formats; not a playlist). |
urls | string array | one of url/urls | — | 1–20 media file URLs instead of url; never both. The same operation and settings apply to each. Duplicate URLs count as separate inputs. |
operation | enum extract_audio · convert_audio · transcode_video · trim · compress_video · gif | yes | — | What to do (below). |
audioFormat | enum mp3 · wav · m4a · ogg · flac · opus | no | mp3 | For audio outputs: MP3 (VBR about 165 kbps), WAV (16-bit PCM), M4A (AAC 160 kbps) OGG (Vorbis), FLAC (lossless) or Opus (96 kbps in Ogg). |
sampleRate | integer | no | source | Resample audio outputs, e.g. 16000 for speech models: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100 or 48000 Hz. Opus accepts only 8000, 12000, 16000, 24000 or 48000; its default is 48000. |
channels | integer | no | source | 1 (mono) or 2 (stereo); a source with more than two channels is mixed down to stereo. |
videoFormat | enum mp4 · webm · mov · mkv | no | mp4 | For video outputs: MP4, MOV and MKV (H.264 + AAC) or WebM (VP9 + Opus). |
start | integer | no | 0 | For trim and gif only: start of the range, whole seconds (0–86,400). |
end | integer | no | end | For trim and gif only: end of the range, whole seconds (1–86,400), after start and inside the media; a value inside the media's last partial second means the end. |
targetSizeMb | integer | no | — | For compress_video, where it is required: the largest output size, in megabytes of 1,000,000 bytes (1–1,000). |
maxWidth | integer | no | source | Scale video and GIF outputs down to this width, keeping the aspect ratio (16–7,680 px). Video outputs are capped at 1080p (1920×1080, either orientation) and GIFs at 640 px a side whatever this says. A GIF defaults to 480 px when the source is wider. |
audioBitrateKbps | integer | no | codec default | Target 32–320 kbps for lossy audio outputs or the video audio track; the encoder may round to a supported rate. Codec, sample-rate and channel limits also apply: an incompatible combination returns invalid_input (for example 320 kbps mono Opus or 128 kbps 8 kHz mono Vorbis). Not WAV, FLAC or GIF. compress_video uses its target-size audio budget instead. |
resolution | enum source · 1080p · 720p · 480p · 360p | no | source | Fit video into 1920×1080, 1280×720, 854×480 or 640×360, in either orientation, preserving aspect ratio and never upscaling. Dimensions round to even pixels; maxWidth may reduce them further. GIF keeps its own sizing. An HD source still costs HD minutes. |
compressionPreset | enum small · balanced · high | no | balanced | Video quality/size: H.264 CRF 28/23/18, VP9 CRF 37/32/27. Small lowers quality and file size; high raises both. Encoder speed stays unchanged. compress_video uses targetSizeMb instead. |
removeAudio | boolean | no | false | Mute video outputs. Not audio-only outputs or GIF. Cannot combine with normalizeAudio. |
normalizeAudio | boolean | no | false | One-pass EBU R128 loudness normalisation, targeting −16 LUFS, −1.5 dBTP and LRA 11. Requires an audio track. Not GIF or removeAudio. Silence and very short clips may not reach the target. |
What each operation does:
extract_audio— the first audio track of a video (or audio) file, asaudioFormat. A file with no audio track isno_audio_stream.convert_audio— an audio file toaudioFormat, withsampleRateandchannelsif given.transcode_video— the whole video tovideoFormatat the source's size (orresolution/maxWidth) and frame rate, quality-targeted. A source larger than 1080p is scaled to fit 1920×1080 (1080×1920 for a portrait video) and the record'swarningssaysscaled_to_1080p.trim— thestart–endrange, re-encoded so the cut is frame-accurate: a video tovideoFormat, an audio-only file toaudioFormat.compress_video— the whole video tovideoFormatat the bitrate that lands it undertargetSizeMb; if the first pass comes out over, a second pass at a lower bitrate. SettingmaxWidthtoo keeps a small target watchable.gif— thestart–endrange (at most 60 seconds) as a looping GIF at up to 10 frames a second and at most 640 px a side (warnings:scaled_to_640pxwhen that cap applied), with a palette built from the clip.
start and end are refused on the other operations (processing the whole file instead would charge more than asked). Metadata — tags, chapters, location — is not copied to the output. Every limit above is enforced by the input schema and again in code.
Events and prices
The active Apify pricing record determines your bill; each schedule below is conditional on that exact record being active. A pending record does not authorise its charges. Before submission, while pending, and after activation, use the actual active record, not the requested calendar, to determine the bill.
Requested activation: 2026-12-06T06:00:00Z. This is a request until confirmed by the record; the record supplies the actual effective instant.
Previous schedule — only if that record is active
apify-actor-start: FREE $0.00005, BRONZE $0.00005, SILVER $0.00005, GOLD $0.00005, PLATINUM $0.00005, DIAMOND $0.00005; audio-minute-processed: FREE $0.001, BRONZE $0.001, SILVER $0.0009, GOLD $0.0008, PLATINUM $0.0008, DIAMOND $0.0008; video-minute-processed: FREE $0.015, BRONZE $0.015, SILVER $0.0135, GOLD $0.012, PLATINUM $0.012, DIAMOND $0.012; hd-video-minute: FREE $0.045, BRONZE $0.045, SILVER $0.0405, GOLD $0.036, PLATINUM $0.036, DIAMOND $0.036.
Requested schedule — only if that record is active
| Event | Title | Charged when | FREE / BRONZE | SILVER | GOLD / PLATINUM / DIAMOND |
|---|---|---|---|---|---|
audio-minute-processed | Audio minute processed | One started minute of input processed by an operation whose output is audio only. | $0.001 | $0.0009 | $0.0008 |
video-minute-processed | Video minute processed | One started minute of input processed by an operation whose output is video or GIF. | $0.026 | $0.0234 | $0.0208 |
hd-video-minute | HD video minute processed | One started minute of input processed by an operation whose output is video or GIF, when the output or the source video has more pixels than 1280x720 (720p); charged instead of video-minute-processed. | $0.045 | $0.0405 | $0.036 |
Platform event in the requested schedule: apify-actor-start: FREE $0.00005, BRONZE $0.00005, SILVER $0.00005, GOLD $0.00005, PLATINUM $0.00005, DIAMOND $0.00005.
The requested start at default memory is (1 event, $0.00005, at the default 1,024 MB).
Worked event subtotal, requested schedule at FREE: if 10 video-minute-processed events are charged, 10 × $0.026 = $0.26 for that event alone. All other charged events and the platform start event add their listed fees; this subtotal is not a run total. The configured maximum-charge floor is $0.05. Platform usage is included; failed results are uncharged.
Call it from an agent
Through Apify's MCP server (https://mcp.apify.com), tool call-actor:
{"actor": "hermeskd/audio-video-convert", "input": {"urls": ["https://media.w3.org/2010/05/sintel/trailer.mp4"], "operation": "extract_audio", "audioFormat": "mp3"}, "callOptions": {"maxTotalChargeUsd": 0.05, "timeout": 3600}, "waitSecs": 30}
The call returns the run's status and its defaultDatasetId. Read the record with get-dataset-items:
{"datasetId": "<defaultDatasetId from the call>", "limit": 50}
The record's outputUrl is the converted file in the run's key-value store; fetch it from there. As a dedicated tool, add https://mcp.apify.com?tools=hermeskd/audio-video-convert to your MCP client. Extracting the audio of a short clip finishes well inside the 30-second wait; a long video transcode takes minutes, so poll the run, or call with a larger waitSecs. maxTotalChargeUsd caps what the run can charge: a file whose minutes would cost more than the cap is not processed and comes back as charge_limit_reached, uncharged.
Output fields
One record per input URL, in input order. Files run sequentially so only one conversion occupies memory. Each failure is free and later files continue under the same time and charge limits.
| Field | Meaning |
|---|---|
url | The input URL. |
ok | true when the output file was written; false with error. |
operation | The operation run. |
key | The output file's key in the run's default key-value store: output.<format> for url; output-01.<format>, output-02.<format>, etc. for urls, by original input position (including failed positions). |
outputUrl | API URL of that key-value store record — the converted file. |
format | The output's format: mp3, wav, m4a, ogg, flac, opus, mp4, webm, mov, mkv or gif. |
durationSec | The output's duration in seconds, as ffprobe reads it. |
sizeBytes | The output's size in bytes. |
width | The video or GIF output's width in pixels; null for audio outputs. |
height | The video or GIF output's height in pixels; null for audio outputs. |
minutesCharged | Started minutes of input processed, charged as event: the whole file's duration, or for trim and gif the selected range (end − start). |
event | The event minutesCharged counts: audio-minute-processed when the output is audio only; for video and GIF outputs hd-video-minute when the output or the source video has more pixels than 1280×720 (720p), video-minute-processed otherwise. |
warnings | scaled_to_1080p when a video output was scaled down to fit 1920×1080; scaled_to_640px when a GIF was scaled down to 640 px a side. Empty otherwise. |
error | {code, message} when ok is false. |
Limits and run time
- One
urlor 1–20urlsper run, up to 1 GB per file. Files download at 2 MB/s or faster: each download has a budget of 30 s plus 1 s per 2 MB of the file (a 100 MB file: 80 s), and one that sends nothing for 30 s is stopped; a slower source isdownload_failed. At most 2 requests a second go to one host. startandendare whole seconds; a GIF covers at most 60 seconds;targetSizeMb1–1,000.- Default memory is 1,024 MB. ffmpeg uses two decoder, encoder and filter threads; at 8,192 MB or above it uses four. Standard H.264 keeps
veryfast; HD H.264 keepsultrafast; VP9 keeps its realtime preset. The default quality is unchanged. Thread count is recorded in each successful input's timing log. Platform speed and cost of the new thread setting are measured by the next deploy, not guaranteed from local timing. Give long or HD conversions 4,096 MB or more and enough time; all batch files share the run timeout. - Video outputs are at most 1080p (a larger source is scaled to fit 1920×1080, either orientation, and the record says
scaled_to_1080p); GIFs at most 640 px a side. Source videos up to 3840×2160 (4K UHD) are taken for every video operation; a larger one isunsupported_media(extract_audioworks on any). Measured on one core of the build machine, a minute from a 1080p source to 1080p WebM takes about 41 core-seconds and to MP4 27; from a 2160p source about 76 and 63; a 60-second GIF from a 2160p source about 58. HD and long videos run several times longer than the default memory's quarter core allows in a few minutes: give them 4,096 MB (one core) or more. The default run timeout is 3,600 seconds; a conversion still running when it ends istimeout. - GitHub release links (
github.com/…/releases/download/…) are refused withrobots_disallowed: github.com's robots.txt disallows every crawler, HermesBot included. Use the file'sraw.githubusercontent.comaddress, or your own storage. - Typical run time: the minimal input under How to use it in a few seconds plus the start; a 10-minute 180p video to WebM in about two minutes at the default memory.
Errors
Errors are records with ok: false and error.code; none is charged.
error.code | Meaning |
|---|---|
download_failed | The URL did not return the file: an HTTP error status, a network error, or slower than 2 MB/s (its download budget ran out, or 30 s without data). |
unsupported_media | Not a decodable single-file audio or video format (a playlist, a text file, a damaged or truncated file), no stream the operation needs (a video operation on an audio-only file), or a video operation on a source larger than 3840×2160. |
no_audio_stream | extract_audio or convert_audio on a file with no audio track. |
too_large | Over 1 GB. |
invalid_range | start or end outside the media, end not after start, or a GIF range over 60 seconds. |
robots_disallowed | robots.txt forbids fetching the URL; no request was made to it. |
blocked_host | The host is on the deny-list, or resolves to a private or local address. |
timeout | The download or the conversion did not finish within the run's time budget. |
internal_error | Unexpected failure; the message carries the class. |
charge_limit_reached | The file's minutes would cost more than the run's maximum total charge; it was not converted. |
invalid_input | The run input passed the input schema but cannot be used (for example compress_video without targetSizeMb, start on extract_audio, or a targetSizeMb too small for the video's length); the message names the field. Nothing is converted. |
The run fails only when nothing succeeded and at least one input failed with an Actor-side code (internal_error, timeout), so a broken Actor is visible. Every other run succeeds — including one where nothing was converted because of the caller's own input (bad URL, robots, deny-list, an undecodable file, a bad range, invalid input, the charge limit).
Sources and terms
The source is the caller's media file. Process only media you have the right to process. Fetching follows the Hermes fetch policy: robots.txt is obeyed for the user-agent HermesBot (and *), and a disallowed URL is refused without a request; platforms whose terms forbid automated access (video platforms and social networks among them), and people-search sites, are on a deny-list and refused without a request; private and local addresses are refused, after DNS and on every redirect; the user-agent is HermesBot/1.0 (+https://apify.com/hermeskd); no login, cookies, credentials, CAPTCHA solving, evasion or proxies are used. The file is opened by ffmpeg as one local file in an allow-listed container format: playlists and manifests, which would make ffmpeg fetch further URLs or read other files, are refused. The converted file is returned to the caller; no speaker or face is identified, and metadata is dropped.
Not affiliated
This Actor is not affiliated with the FFmpeg project, the W3C, the Blender Foundation or LibriVox. FFmpeg (with x264, libvpx, Opus, LAME and Vorbis) is used under its open-source licences; the example media are Blender Foundation films under CC BY 3.0 and a public-domain LibriVox recording.
Related Hermes Actors
- AI Crawler Checker: Which AI Bots robots.txt Allows per URL — check declared robots.txt permissions for six AI crawlers at URL paths.
- Article Extractor — News & Blog Text, Date and Markdown by URL — an article's clean text, title and publish date, without the rest of the page.
- ATS Job Search — Jobs Confirmed Open on Company Career Boards — search open jobs in the Hermes directory of Greenhouse and Lever boards, each confirmed live.
- Speech to Text — Transcribe Audio & Video URLs, Speaker Labels — speech to text with SRT and VTT subtitles.
- Broken Links Checker — Links, Assets, Redirects and Their Pages — broken links, 404s and redirects on a site.
- ATS Detector — Company Hiring System & Job Board Lookup — which hiring system and job board a company uses.
- SEC EDGAR Filings — Recent Company Forms, Dates and XBRL Flags — Read recent company financial filing metadata from the official SEC JSON API
- DOI Lookup — Crossref Titles, Venues, Dates and Citation Counts — crossref doi metadata.
- CVE Vulnerability Lookup — NVD CVSS Scores and Exploited Flags — look up NVD CVE dates, status, numeric CVSS scores and severity.
- Merge JSON Datasets — Deduplicate Rows, Export JSON and CSV — json dataset cleaner.
- DNS Lookup — Records, SPF Lookup Counts, DKIM & DMARC by Domain — DNS records and SPF, DKIM and DMARC checks.
- DOCX to Markdown — Word, Excel, PowerPoint and EPUB Converter — Word, Excel, PowerPoint and other office files to Markdown.
- Domain Availability Checker — Bulk RDAP Status and Registrar — whether domain names are available, from registry RDAP.
- USGS Earthquake Lookup — Event Magnitude, Depth, Coordinates — Read numeric USGS earthquake metadata for known event identifiers.
- Currency Exchange Rates — ECB Daily Euro Rates and Cross Pairs — Read latest ECB daily currency reference rates and calculated cross pairs.
- Bulk File Downloader — Save URL Lists to Storage With SHA-256 — files and images from URLs, saved with a public link each.
- GitHub Repo Stats — Stars, Forks, Subscribers and Open Issues — Read numeric metrics for known public GitHub repositories.
- Greenhouse Jobs — Live Openings, Offices and Apply Links — every open job on a company's Greenhouse board.
- Hacker News Story Metrics — Scores, Comment Counts, Timestamps — read numeric Hacker News story scores, timestamps and comment counts by ID.
- HTTP GET Request — Bulk Response Bodies, Status and SHA-256 — public http get.
- Security Headers Checker — HSTS, CSP, Framing, Nosniff by URL — Check seven declared HTTP security header families without returning raw values.
- Image Background Remover — U2NetP Cutouts for JPEG, PNG, WebP — Remove image backgrounds with the small U2NetP model and return transparent PNG pixels as base64
- Image Converter — JPEG, PNG and WebP With Resize and Quality — image format converter.
- Image Metadata Remover — EXIF and GPS Scrub, Pixels Verified — GPS location, camera serial numbers and other private metadata removed from photos, losslessly.
- Image to Text OCR — Text With Word Positions and Confidence — OCR: the text in images.
- Image Upscaler — Real-ESRGAN 2x/4x for Photos and Graphics — image upscaling 2x or 4x, and photo restoration.
- Lever Jobs Scraper — Job Board Postings With Salary, US & EU — every published job on a company's Lever site, global or EU.
- Lighthouse Audit — Lab Web Vitals and Scores, Mobile & Desktop — Lighthouse scores and Core Web Vitals.
- npm Package Lookup — Latest Version, License, Dependency Count — read latest npm package versions, license tokens and dependency counts.
- Website Change Monitor — Page Text Diffs Against Your Snapshots — what changed on a page since the last check.
- PDF to Markdown — PDF Parser & Text Extractor With OCR — PDF to Markdown and text, with OCR for scanned pages.
- Public Holidays Calendar — Holiday Dates for Five Countries — build offline public-holiday calendars for five countries and bounded years.
- Remote Jobs Search — Remote OK Jobs by Keyword, Tag and Salary — current remote jobs from Remote OK, with salary and listing links.
- Research Paper Search — OpenAlex Papers, DOIs, Citation Counts — Search OpenAlex for work-level paper metadata without authors, affiliations, abstracts or full text
- RSS Feed Reader — Atom and JSON Feed Parser With Enclosures — every item of an RSS, Atom or JSON feed.
- SEO Audit — On-Page Score, Meta Tags, Schema & Fix Guidance — an on-page SEO audit: meta tags, schema, headings and links.
- Sitemap Extractor — Unique URLs From XML, Gzip & Index Sitemaps — the URLs in a site's sitemaps.
- Text to Speech — Offline English, German, Spanish WAV Voices — Convert short nonpersonal texts to offline formant WAV speech for agents
- Time Zone Converter API — Convert one offset-qualified instant to named IANA time zones using pinned data.
- URL to Markdown — Clean Text for LLM & RAG, With Selectors — a public job page as clean Markdown where the site allows it (deny-listed job sites are refused).
- Extract Video Frames — Timed Stills by Interval or Scene Cut — frames, thumbnails and scenes from a video.
- Website Color Palette — CSS Colors With Alpha and Usage Counts — Extract declared website CSS color literals and counts from public HTML and bounded linked stylesheets
- Favicon Extractor — Icons, Touch Icons, Manifests, Theme Color — declared website icons, theme colors and manifest links.
- Website Screenshot — Full Pages, Elements, Dark Mode & PDF — screenshots and PDF prints of web pages.
- Tech Stack Detector — Website Technologies With Match Evidence — the technologies a website runs, detected live.
- Website Crawler to Markdown — Same-Site Pages for LLM and RAG — bounded whole-site Markdown with robots and crawl-delay enforced
Changelog
-
First-build upgrade: batches of up to 20 URLs; FLAC and Ogg Opus audio; MOV and MKV video; audio bitrate, resolution and compression quality presets; mute and EBU R128 loudness normalisation. Two ffmpeg threads (four at 8 GB+). Prices and default memory unchanged.
-
1.0 (2026-10-26) — store listing rewritten for the people and agents searching for this job: title, description, search-engine title and description, categories, and the README in the order a searcher reads it (what it does, a real result, how to use it, prices, the agent call).
-
1.0 (2026-10-17) — first release: extract and convert audio (MP3, WAV, M4A, OGG), transcode video (MP4, WebM), trim, compress to a size, GIF; per-minute pricing, HD minutes (source or output above 720p) as
hd-video-minute; video outputs at most 1080p, GIFs at most 640 px a side.