Add cameras
Keep each camera’s microphone on for the clap test. Previews start muted.
Clap and align
0 samplesLoad your cameras above. Their previews, audio meters, and offsets will appear here.
Clap once, wait for the result, and repeat three or more times. Offsets are measured against Camera 1; positive means later. A matching clap sound does not prove the video frames match, so check the pictures too.
Film one visible event with every camera, such as a clap or a phone stopwatch, then pause a recording or take a screenshot of this page to compare the previews. Enter each camera’s lag behind Camera 1 (negative if earlier). One frame at 30 fps is about 33 ms.
Sample history
Each row compares one clap against the reference. Remove a sample if it came from a different sound.
Compare with your mixer or a USB microphone (optional)
Select the input that OBS uses. It must hear the same clap as the cameras. Offsets are then measured against it, giving an estimate for the mixer’s Sync Offset in OBS. Make the final adjustment against a real OBS recording.
Local audio stays on this computer and is never played through the speakers.
Use in OBS
- Paste each camera’s view link into its own OBS Browser Source.
- Keep those sources running between scene changes so their buffers stay settled.
- Record a visible clap with your mixer audio, check the frames, then set the mixer’s Sync Offset in OBS.
The links store buffer targets, not a clock lock. A reconnect, Wi-Fi change, new viewer, or capture delay can shift timing, so recheck after changes and during long sessions.
How accurate is this?
Claps measure audio timing. That is a starting point for matching video, because camera capture and audio processing can add different delays on each device. A good audio match does not prove the frames line up.
For finer audio timing, open this page on the same origin (scheme, host, and port) as your view links. Same-origin previews are sampled from the audio waveform after the existing audio compensation node. Other origins use the IFRAME loudness API, normally updated about every 100 ms, so those results are coarse. Browser scheduling also affects measurements; use the spread across repeated claps and a visible clap to judge the result.
For chunked video, enable &chunked on the publishing devices first and use a browser that supports it. This page sets chunkbuffer and turns off adaptive receiver buffering so the target stays fixed. Chunk timestamps from separate phones are not a shared timecode, and chunked audio is not used to infer video alignment, so enter observed video offsets instead.