#!/usr/bin/env python3
"""Compone avatar_behind.mp4: texto grande DETRÁS de la persona (occlusión por matte).
base avatar -> overlay bgtext (en su ventana) -> overlay persona(matte) encima -> texto queda detrás.
Requiere matte.mp4 (alpha de persona, full length). Edita WINDOWS abajo."""
import subprocess

BASE = "/home/clawd/playgrounds/ai4m-negocio"
AV = f"{BASE}/avatar.mp4"
MATTE = f"{BASE}/matte.mp4"
OUT = f"{BASE}/avatar_behind.mp4"

# (clip MOV alpha, start_s) — el clip dura 3.6s; aparece detrás de Roberto en esa ventana
# NOTA: el texto-detras del beat tareas->funciones se quito (JuntaYT unanime): la cabeza
# tapaba el centro y "NO TAREAS" no se infiere por los extremos. El caption ya carga el contraste.
# Se conserva el efecto SOLO en "16 AGENTES" (dos tokens reconocibles: 16 + AGENTES).
WINDOWS = [
    (f"{BASE}/brolls/bg_datos.mov",    42.0),  # "16 agentes en tres equipos" (42.54)
]

def main():
    inputs = ["-i", AV, "-i", MATTE]
    for clip,_ in WINDOWS: inputs += ["-i", clip]
    # [0]=av [1]=matte [2..]=bgtexts
    n = len(WINDOWS)
    fgsplit = "".join(f"[fg{i}]" for i in range(n))
    parts = [f"[0:v][1:v]alphamerge,split={n}{fgsplit}"]
    base = "[0:v]"
    for i,(clip,start) in enumerate(WINDOWS):
        idx = 2+i; dur = 3.6; end = start+dur
        parts.append(f"[{idx}:v]setpts=PTS+{start:.2f}/TB[bg{i}]")
        parts.append(f"{base}[bg{i}]overlay=0:0:enable='between(t,{start:.2f},{end:.2f})'[wbg{i}]")
        # restaurar persona encima del texto (solo en la ventana)
        lbl = "[outv]" if i==n-1 else f"[wp{i}]"
        parts.append(f"[wbg{i}][fg{i}]overlay=0:0:enable='between(t,{start:.2f},{end:.2f})'{lbl}")
        base = lbl
    fc = ";".join(parts)
    cmd = ["ffmpeg","-y",*inputs,"-filter_complex",fc,"-map","[outv]","-map","0:a?",
           "-c:v","libx264","-preset","veryfast","-crf","18","-pix_fmt","yuv420p","-c:a","copy",OUT]
    r = subprocess.run(cmd, capture_output=True, text=True)
    if r.returncode != 0:
        raise SystemExit(f"FAIL:\n{r.stderr[-2000:]}")
    print(f"OK -> {OUT}")

if __name__ == "__main__":
    main()
