video_mixer
Combine up to 16 video inputs into a single composited stream. Layout modes: grid, speaker, or custom.
Example — grid layout
Section titled “Example — grid layout”curl -X POST "https://api.avflow.dev/v1/jobs" \ -H "Authorization: Bearer ${AVFLOW_API_KEY}" \ -H "Content-Type: application/json" \ -d '{ "name": "grid-mix", "sources": [{ "name": "room_src", "type": "livekit", "config": { "serverUrl": "wss://your-project.livekit.cloud", "token": "<token>" } }], "nodes": [{ "name": "mix_video", "type": "video_mixer", "inputs": ["room_src"], "config": { "canvas": { "width": 1280, "height": 720, "bgColor": "#1a1a2e" }, "layout": { "mode": "grid", "common": { "padding": 8, "gap": 4, "borderRadius": 8, "defaultFit": "cover" }, "grid": { "maxColumns": 3, "maxRows": 3, "sortBy": "joinedAt" } } } }], "sinks": [{ "name": "rtmp_out", "type": "rtmp_push", "inputs": ["mix_video"], "config": { "urls": ["rtmp://live.example.com/app/key"] } }] }'Config
Section titled “Config”| Field | Description |
|---|---|
canvas | Output size (width, height, bgColor, optional bgImage) |
layout | Layout mode and options |
layout.mode | grid, speaker, or custom |
layout.grid | maxColumns, maxRows, sortBy |
layout.speaker | Active speaker layout (mainRatio, maxThumbnails, …) |
layout.custom | Explicit regions with positions and sources |
layout.common | Padding, gap, placeholders, name labels, transitions |
layoutInfo | Optional metadata export (enabled, onKeyframe) |
Canvas limits
Section titled “Canvas limits”Max 3840×2160 (4K). Coordinate system defaults to pixel.
Wiring
Section titled “Wiring”Requires video-capable inputs. Pair with audio_mixer when you also need mixed audio.
Pricing
Section titled “Pricing”$0.002/min of actual processing time. Node pricing.