fix(capture): restore proven-clean wallclock audio (match de509c6 baseline)

Removing wallclock made A/V length drift far worse (audio 11.8% long). The
known-clean config used wallclock + master aresample=async=1; the leading
silence is a standby backlog artifact addressed by the bridge live-edge flush +
record-start audio FIFO drain, not by changing the timestamp source.
This commit is contained in:
Zac Gaetano 2026-06-04 05:06:40 +00:00
parent 55a72af905
commit d6b0b3a9a6

View file

@ -720,15 +720,11 @@ class CaptureManager {
'-video_size', fcSize, '-video_size', fcSize,
'-framerate', fcFps, '-framerate', fcFps,
'-i', 'pipe:0', '-i', 'pipe:0',
// Audio FIFO → ffmpeg input 1. The bridge flushes its slot backlog to // Audio FIFO → ffmpeg input 1. Wallclock timestamps + master
// the live edge on reader-attach, so the FIFO delivers live audio in // aresample=async=1 is the proven-clean A/V config; both inputs must
// lockstep with the video. We DERIVE audio PTS from the s16le sample // start from the live edge (see the fc_pipe + audio flush at record
// count starting at 0 — the SAME origin as the video's frame-0 PTS — // start) so aresample has minimal correction to do.
// rather than from wall-clock arrival. Wall-clock stamped the first '-use_wallclock_as_timestamps', '1',
// audio chunk at a time offset from video frame 0, and the master
// aresample then PADDED ~2.5s of leading silence to align them. With
// sample-count PTS both streams share one origin → no pad, no leading
// silence, length locked.
'-thread_queue_size', '512', '-thread_queue_size', '512',
'-f', 's16le', '-f', 's16le',
'-ar', '48000', '-ar', '48000',