Skip to content
Console

Overview

Sinks consume upstream media and produce output - streams, files, or room publications.

TypeDescription
livekitPublish to a LiveKit room
jitsiPublish to a Jitsi conference
dailyPublish to a Daily room
agoraPublish to an Agora channel
rtmp_pushPush RTMP to CDNs
srt_pushPush MPEG-TS over SRT
whipPush via WHIP
segmentHLS segments to object storage
imagePeriodic screenshots to storage
websocketSend raw PCM or encoded audio access units
{
"name": "out",
"type": "rtmp_push",
"inputs": ["mix_video", "mix_audio"],
"config": {
"encoding": { "videoCodec": "h264", "audioCodec": "aac" }
}
}

An optional select on an object-form inputs entry filters which upstream tracks the sink receives on that edge.

Sinks also forward structured metadata — captions, translations, agent turns, speaker levels, mixer layout — using a transport that differs per sink. See Data events for the delivery table.

Many sinks accept an encoding block (EncodingConfig):

FieldTypeDefaultDescription
videoCodecstringSee belowOutput video codec: h264 | vp9. WebRTC sinks use it as a codec preference and also support vp8.
audioCodecstringSee belowOutput audio codec: aac or opus.
audioProfilestring—AAC only: LC | HEv1 | HEv2. Ignored for Opus.
videoBitrateBpsint0 (auto)Target video bitrate. 0 = derive from resolution (see below). Clamped to 0–50_000_000 (50 Mbps).
audioBitrateBpsint0 (auto)Target audio bitrate. Clamped to 0–512_000 (512 kbps).
keyframeIntervalSecint2Keyframe (GOP) interval in seconds (max 10). GOP frame count is keyframeIntervalSec × upstream fps: video_mixer canvas.fps when wired, otherwise measured from frame timestamps before encode starts.

Omitted videoCodec / audioCodec are filled per sink type. The sink encodes every audio and video track it is wired to receive; drop a track with select.mediaTypes, not by leaving a codec blank. rtmp_push, srt_push, and segment default to h264 + aac. whip defaults to h264 + opus. Other WebRTC room sinks default to vp8 + opus (AVFlow’s bundled SDK, not the customer’s).

When videoBitrateBps is 0, the engine picks a bitrate from output width × height and codec (H.264 baseline ladder; VP9 uses a lower multiplier).

For compositor output cadence, see video_mixer canvas.fps.

avflow manages output audio sample rate internally. Audio encode rates snap to {8000, 16000, 32000, 44100, 48000} Hz from upstream media (fallback 48000).

For rtmp_push, srt_push, and segment, this block is a compatibility shortcut. The compiler expands it into video_encoder and audio_encoder nodes for each wired raw media type; the sink then only muxes and writes encoded packets. Equivalent generated encoders are shared, and a Job may contain at most one video encoder after expansion. RTC sinks, including WHIP, keep encoding as an SDK codec/bitrate hint and accept raw media only.

Video sinks are billed by encoded resolution × fps tier and codec. Audio is a separate additive line that uses the audio sink rate.

Sink pricing.