diff --git a/apply_sync.py b/apply_sync.py index 2667c72..5f31964 100644 --- a/apply_sync.py +++ b/apply_sync.py @@ -84,10 +84,15 @@ def build_ffmpeg_cmd(file_a: str, file_b: str, lag_sec: float, out_path: str) -> set_german = (len(b_streams) == 1 and b_streams[0]["language"] in ("und", "unknown", "")) # Build filter_complex for B audio streams - # Negative adelay trims the start (B ahead of A), positive adds silence (B behind A) + # Positive lag (B behind A): adelay adds silence at start + # Negative lag (B ahead of A): atrim cuts the start, asetpts resets timestamps filters = [] for i, s in enumerate(b_streams): - filters.append(f"[1:a:{i}]adelay={lag_ms:.0f}|{lag_ms:.0f}:all=1[d{i}]") + if lag_ms >= 0: + filters.append(f"[1:a:{i}]adelay={lag_ms:.0f}|{lag_ms:.0f}:all=1[d{i}]") + else: + trim_sec = -lag_sec + filters.append(f"[1:a:{i}]atrim=start={trim_sec:.6f},asetpts=N/SR/TB[d{i}]") cmd = ["ffmpeg", "-y", "-i", file_a, "-i", file_b]