Skip to content
Console

video_mixer

Combine up to 16 video inputs into a single composited stream. Layout modes: grid, speaker, or custom.

Terminal window
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"] }
}]
}'
FieldDescription
canvasOutput size (width, height, bgColor, optional bgImage)
layoutLayout mode and options
layout.modegrid, speaker, or custom
layout.gridmaxColumns, maxRows, sortBy
layout.speakerActive speaker layout (mainRatio, maxThumbnails, …)
layout.customExplicit regions with positions and sources
layout.commonPadding, gap, placeholders, name labels, transitions
layoutInfoOptional metadata export (enabled, onKeyframe)

Max 3840×2160 (4K). Coordinate system defaults to pixel.

Requires video-capable inputs. Pair with audio_mixer when you also need mixed audio.

$0.002/min of actual processing time. Node pricing.