Transport
All media is delivered over WebRTC. Clients connect via standard SDP offer/answer negotiation, and frames stream over RTP with sub-50ms delivery latency. The runtime manages the full WebRTC lifecycle: ICE, DTLS, SRTP, and congestion control. Commands and messages between the client and model travel over a WebRTC data channel alongside the media streams.Video codecs
Reactor supports multiple video codecs, negotiated automatically with each client via SDP:| Codec | Hardware acceleration | Notes |
|---|---|---|
| VP9 | Some GPUs | Default. Good compression at real-time rates |
| VP8 | No | Broad browser compatibility |
| H.264 | NVENC | Constrained Baseline profile. Widest device support |
| AV1 | No | Best compression. Growing browser support |
Audio codec
Audio is encoded with Opus at 48 kHz. Opus is the standard WebRTC audio codec and is supported by all modern browsers.| Property | Value |
|---|---|
| Codec | Opus |
| Sample rate | 48 kHz |
| Frame size | 20 ms (960 samples) |
| FEC | Enabled by default |
Resolution
There are no hardcoded resolution limits. The runtime encodes and streams whatever resolution your model produces. If your model yields 720p frames, the stream is 720p. If it yields 4K, the stream is 4K.Bitrate
The runtime uses adaptive bitrate control based on network conditions. It monitors transport-level feedback and adjusts encoding bitrate dynamically, scaling between 500 kbps and 10 Mbps depending on available bandwidth.Multiple tracks
A model can output any combination of video and audio tracks. Each field on your Output dataclass becomes a separate media track:main_video, secondary_video, main_audio) are the identifiers clients use to subscribe to specific streams.