fix: apply_sync ffmpeg negative delay
This commit is contained in:
1 parent
4cf7227a6c
commit
6050e81be1
1 file changed
+7
-2
+7
-2
@@ -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", ""))
|
set_german = (len(b_streams) == 1 and b_streams[0]["language"] in ("und", "unknown", ""))
|
||||||
|
|
||||||
# Build filter_complex for B audio streams
|
# 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 = []
|
filters = []
|
||||||
for i, s in enumerate(b_streams):
|
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]
|
cmd = ["ffmpeg", "-y", "-i", file_a, "-i", file_b]
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user