Video and audio
A video that reaches its audience has usually been through more than one tool: cut to length, reframed for a phone, captioned in two languages, given a voice-over over a music bed at the loudness the platform expects. In Madoo each of those is a node, and a workflow chains them so that the same result comes out every time — for one clip, or for the forty clips of a campaign. This section explains how the media nodes work and how they combine, from a soundtrack on a single clip to a video dubbed in another language.
Three ideas run through every page.
Media are files, and most of the work is local. A video or an audio track travels between nodes as a stored file, never pasted into a prompt. Cutting, joining, reframing, mixing, normalizing loudness, burning captions and setting type run on Madoo’s own workers with FFmpeg: they are deterministic and consume no credits. Credits are spent only where a model works — generating a clip, a voice or music, transcribing speech, translating captions, analysing a video — and those nodes say how they are priced: per second of media, per thousand characters, per call.
Size and length are part of the contract. Every media node works file to file — the worker reads the source from disk and writes the result to disk, so memory does not grow with the media — and accepts inputs up to 2 GiB; the longest video qualified end to end is a 68-minute 1080p call. Size is not the only limit, time is too: a node that re-encodes a long video takes minutes, so a long recording is cut into segments that are processed side by side. Reverse Video is the one node that must hold the whole clip while it works — playing backwards starts from the last frame — and is meant for clips of seconds. Files reach Madoo through the public API up to 250 MB each, in MP4, WebM or MOV for video and MP3, WAV, OGG, FLAC, AAC or M4A for audio.
Every step measures what it made. A media step does not assume that a file is what its name says: it probes duration, streams, resolution and loudness, and the nodes that transform audio report the result against the target they were given. Those reports can hold a delivery back through a quality gate — a voice-over that is not at −14 LUFS, a clip that is not 9:16 — and decisions work on media exactly as on data: a branch that is not needed is skipped and costs nothing.
Where to go
Section titled “Where to go”| Your task | Read |
|---|---|
| Bring files in and out; measure a clip and hold it back when it does not meet a delivery’s rules | Media files and preflight |
| Cut, join, reframe for 9:16, overlay a logo, take a frame or a GIF, put music or a voice on a clip | Editing video |
| Clean and level a voice, put music under it, deliver at a platform’s loudness, measured | Audio finishing |
| Transcribe speech; caption a clip in phrases or word by word, in the look you choose; write an SRT or WebVTT file | Transcription and captions |
| Put titles, lower thirds, prices, quotes and calls to action on a video in your own fonts, timed layer by layer | Typography on video |
| Work on a recording of many minutes or an hour: what to cut, one pass or segments, joining on the master’s timeline | Long media |
| Cut a long video to its best moments: AI proposals, a deterministic plan, cuts on whole sentences, captions carried over | Highlights |
| Find where the scenes of a video start and end, take a frame of each, and read the video with a model that sees images: a storyboard, a cover, the pacing of an edit | Finding the scenes of a video |
| Make a clip from a prompt or an image, music, sound effects or the sound of a clip: models, prices, settings, fitting and measuring the result | Generative video and sound |
| Keep a character and a product the same across shots, continue a clip without a seam, turn a product photo into a fashion clip | Subjects, continuations and fashion clips |
| Subtitle a video in other languages on the original timing: selectable tracks, burned-in subtitles, caption files | Translating captions |
| Dub a video into another language with natural speech, one voice per speaker, the background kept | Dubbing with natural speech |
| Build or change a dubbing workflow node by node: the rounds, the voices, the background, the wiring rules | Building a dub from its blocks |
| Check a dub, know what it costs and takes, and what it cannot do | Dubbing: quality, costs and limits |
| See it all at work on a real job, and install it | Examples |
| Find out why a media workflow was refused, failed, completed partially or delivered something wrong | Troubleshooting |
More complete examples are being added to this section.
The nodes by family
Section titled “The nodes by family”| Family | Nodes | Credits |
|---|---|---|
| Inputs and outputs | input/video, input/audio, output/video, output/audio |
none |
| Inspecting | media/technical_info (duration, streams, resolution, a media policy check) |
none |
| Editing video | video/trim, video/split, video/merge, video/loop, video/reverse, video/speed, video/speed_ramp, video/resize, video/overlay, video/extract_frame, video/to_gif |
none |
| Soundtrack | video/add_audio, video/extract_audio, video/remove_audio |
none |
| Editing audio | audio/trim, audio/split, audio/merge, audio/mix, audio/volume, audio/speed, audio/fade, audio/convert |
none |
| Finishing audio | audio/speech_enhance, audio/loudness_normalize, audio/duck, audio/fit_duration, audio/loop, audio/quality_report |
none |
| Captions and text on video | video/subtitles, video/caption_tracks, video/text_overlay, aggregate/transcript, aggregate/caption_track, enumerate/caption_blocks, utility/caption_timeline_project |
none |
| Long media | enumerate/video_segments, enumerate/audio_segments, aggregate/video_merge, aggregate/audio_merge |
none |
| Dubbing | utility/speech_timing_plan, audio/speech_timing_check, utility/speech_timing_reconcile, aggregate/audio_timeline, enumerate/speakers, utility/speaker_voices, utility/dubbing_manifest |
none |
| Highlights | aggregate/video_highlight_plan, video/edit_timeline |
none |
| Scenes | video/extract_scenes (where the scenes start and end, a frame of each, a contact sheet) |
none |
| AI on speech and text | ai/speech_to_text, ai/caption_translation, ai/text_to_speech, ai/voice_conversion, ai/audio_isolation, ai/stem_separation |
per second or per 1,000 characters |
| AI on video | ai/video_analysis, ai/video_highlight_analysis, ai/lip_sync |
per call or per second |
| Generating | ai/text_to_video, ai/image_to_video, ai/fashion_video, ai/reference_to_video, ai/keyframes_to_video, ai/video_extend, ai/video_transform, ai/video_recast, ai/video_upscale, ai/text_to_music, ai/text_to_sound_effects, ai/video_to_audio, ai/audio_to_video |
per second or per clip |
Every node’s exact ports and parameters are in the catalog: GET /api/v1/node-types/{type}, or get_node_type
over MCP.