Embedded Viewer

This page only uses iframe postMessage calls and callback replies. It does not reach into private iframe state.

Remote Streams

Stream Requested Target Current Status
No remote streams yet.

Notes

Recommended for musician sync tools:

chunkbufferadaptive=0 keeps the requested target fixed instead of letting the viewer drift.

chunkbufferceil=180000 allows up to 3 minutes of video buffering.

noaudio avoids pretending VDO.Ninja chunked audio is the long-delay path.

The default publisher params use a conservative 600 kbps profile without forcing a camera resolution, which keeps fake cameras, unusual webcams, and mobile browsers from failing hard constraints. For a weak-link 360p cap, add quality=2 and fps=30 if the device supports those constraints. For stronger desktop rooms, try quality=1, chunked=900, chunkbitrate=900, bitrate=900, maxvideobitrate=900, chunkadaptfloor=300, and chunkadaptceil=900.

chunkedbuffer is sender pacing/adaptation headroom; receiver delay is controlled by setBufferDelay, chunkbuffer, or buffer.

setBufferDelay drives the same internal playout target as &buffer=. It does not, by itself, enable the RTT-compensated &buffer2 behavior.

If you want buffer2-style RTT compensation in this demo, add buffer2=0 to the viewer params before loading the iframe. The buttons will still update the numeric delay target afterward.

For per-frame timing, listen for iframe messages with action: "chunked-inbound" or "chunked-outbound". Their payload exposes value.ts and value.type.