Mi objetivo es tomar clips que duren más de 40 segundos y superponerlos sobre un fondo, luego recortar el tiempo total una vez que los clips y el fondo desaparezcan. Funciona muy bien, excepto que la búsqueda sube a 24 segundos incluso cuando especifico 21.
ffmpeg -y -framerate 60 -loop 1 -ss 0 -t 21 -i ~/Desktop/FP2.tiff -ss 0 -t 21 -i ~/Desktop/fp.mov -lavfi \
"[0]fade=t=in:st=0:d=1,fade=t=out:st=20:d=1,trim=end=21[bg]; \
[1:v]setpts=(PTS-STARTPTS)+1/TB,fifo,fade=t=in:st=1:d=2,fade=t=out:st=15:d=2[fade]; \
[bg][fade]overlay=10:(main_h-overlay_h)/2:format=rgb[v1]; \
[1:v]setpts=(PTS-STARTPTS)+3/TB,fifo,fade=in:0:120,fade=t=out:st=18:d=2[v2]; \
[v1][v2]overlay=460:(main_h-overlay_h)/2:format=rgb[video]; \
[1:a]adelay=1000|1000,stereotools=muter=1,afade=t=in:st=1:d=2,afade=t=out:st=15:d=2[a1]; \
[1:a]adelay=3000|3000,stereotools=mutel=1,afade=t=in:st=3:d=2,afade=t=out:st=18:d=2[a2]; \
[a1][a2]amix=inputs=2[audio]" \
-map [video] -map [audio] -c:v ffv1 -level 3 -c:a pcm_s16be ~/Desktop/filtergraph.nut
Puedes ver esto en ffplay; el fondo se desvanecerá por completo en la marca de 21 segundos, pero el video en sí termina en 24 segundos. ¿Cómo hago para que coincidan exactamente? Soy consciente de que puedo usar -ss
y -t
después de las entradas, pero ese método puede ser lento si tiene la intención de usar un punto de inicio más allá de 0.
Está alimentando 21 segundos de audio del archivo de video y luego aplicando adelay=3000|3000
, por lo tanto, 24 segundos. Agregue atrim=end=21
al final a ambas cadenas de filtros de audio.
Y
Agregue shortest=1
a sus dos superposiciones.
gian
-t 21
después de las entradas.