Media (images, audio, video)
Media Utilities
Media info, extract audio or frames, make a thumbnail, trim, convert, compress or burn in subtitles — with FFmpeg on the server, no AI provider.
Media Utilities (media_tools) changes audio and video files with FFmpeg on the server. It needs no AI provider and sends nothing out. It is not available on Vercel (no FFmpeg) — see Where it runs.
Inputs
Audio or video (source): A file object (a form's Attachments field such as {{form.recording}}, or a file from another step), a list of files (the first is used), a storage:// reference, an http(s) URL (fetched through the egress guard) or base64 content. Files are read for the run's workspace only — the same rules as the document actions.
Operations
| Operation | operation | Settings | Output |
|---|---|---|---|
| Get media info | info | — | Duration, size, container, bit rate, video codec / size / frame rate / rotation, audio codec / sample rate / channels |
| Extract audio | extract_audio | format: mp3 (default), wav, m4a, ogg, flac | An audio file |
| Extract frames | frames | interval (seconds, default 1), count (default 10, at most 100), format png or jpeg | A list of images, each with time |
| Thumbnail | thumbnail | at (default 1 second, or 10 % into a short clip), format | An image |
| Trim | trim | start and / or end: seconds (12.5) or hh:mm:ss[.ms] | A shorter file |
| Convert format | convert | format: mp4, webm, mov, gif, mp3, wav, m4a, ogg, flac; optional max_width, max_height | A new file |
| Compress | compress | quality: low (smallest), medium, high; optional max_width, max_height | A smaller file |
| Burn in subtitles | burn_subtitles | subtitles: an SRT or VTT file, SRT text, or a transcript from Transcribe | A video with the subtitles drawn in |
Also: Run (run_mode, auto / inline / background), Output file name (output_name) and Output variable (output_var).
Outputs
| Operation | Variable | Contents |
|---|---|---|
info | {{media_info}} | duration, size, format, bit_rate, has_video, has_audio, video (codec, width, height, fps, rotation), audio (codec, sample_rate, channels) |
frames | {{frames}}, {{frames_count}} | The frame images (each with time) and how many |
| every other | {{media_file}} | The new file |
Example
[
{ "type": "media_transcribe", "label": "Transcribe",
"config": { "integration_id": "<integration-id>", "source": "{{form.video}}", "formats": ["srt"] } },
{ "type": "media_tools", "label": "Burn in subtitles",
"config": { "operation": "burn_subtitles", "source": "{{form.video}}", "subtitles": "{{transcript_srt}}" } }
]