Camera sync

Line up several phone or camera feeds for OBS. Clap where every camera can hear or see it, delay the early feeds, then copy the tuned view links.

1

Add cameras

Keep each camera’s microphone on for the clap test. Previews start muted.

Requests buffering with estimated network travel time included. Check alignment after it settles.

Loading replaces any buffer settings already in the links. Uncheck sync=0 to keep each link’s own setting.

2

Clap and align

0 samples

Load your cameras above. Their previews, audio meters, and offsets will appear here.

3

Use in OBS

  1. Paste each camera’s view link into its own OBS Browser Source.
  2. Keep those sources running between scene changes so their buffers stay settled.
  3. 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.