FFmpeg: El vídeo con diapositivas de fundido cruzado y el efecto Subir/Bajar no funciona correctamente

FFmpeg: El vídeo con diapositivas de fundido cruzado y el efecto Subir/Bajar no funciona correctamente

Estoy creando videos a partir de imágenes que tienen diferentes tamaños y orientaciones. En realidad, necesito hacer animaciones de diapositivas de vídeo según la orientación de la imagen (relación de aspecto). Entonces, digamos que tengo 4 imágenes con los siguientes tamaños:

1.jpg 1280x1600 (de arriba a abajo)
2.jpg 1280x1600 (de abajo hacia arriba)
3.jpg 1280x1600 (de arriba a abajo)
4.jpg 1280x1280 (Sin efecto)

Aquí está elFFmpegcomando que estoy ejecutando

ffmpeg -y -r 25 \ 
-loop 1 -t 5 -i 1.jpg \
-loop 1 -t 5 -i 2.jpg \
-loop 1 -t 5 -i 3.jpg \
-loop 1 -t 5 -i 4.jpg \
-i audio.mp3 \
-filter_complex " \
[0]crop=1280:1280:ow:((ih-oh)/5)*t,format=yuva444p,fade=d=1:t=in:alpha=1,setpts=PTS-STARTPTS+0/TB[f0];
[1]crop=1280:1280:ow:(ih-oh)-((ih-oh)*t/5),format=yuva444p,fade=d=1:t=in:alpha=1,setpts=PTS-STARTPTS+4/TB[f1];
[2]crop=1280:1280:ow:((ih-oh)/5)*t,format=yuva444p,fade=d=1:t=in:alpha=1,setpts=PTS-STARTPTS+8/TB[f2];
[3]fade=d=1:t=in:alpha=1,setpts=PTS-STARTPTS+12/TB[f3];
[0][f0]overlay[bg1];[bg1][f1]overlay[bg2];[bg2][f2]overlay[bg3];[bg3][f3]overlay,format=yuv420p[v]" -map "[v]" -map 4:a -b:v 4000k -movflags +faststart -t 20 -s 1280x1280 out.mp4

Por favor, mira los primeros segundos del vídeo.

ingrese la descripción de la imagen aquí

Entonces, el fundido cruzado, el recorte y el efecto están funcionando, pero como puedes ver, mantiene una sección innecesaria en la parte inferior del video. Todas las demás animaciones se muestran en la sección anterior.

ingrese la descripción de la imagen aquí

No estoy seguro, pero ¿parece que mantiene la altura de la primera imagen (1600)? Esperamos cualquier sugerencia para solucionar este problema.

Respuesta1

Utilizar elxfadefiltrar:

ingrese la descripción de la imagen aquí

ffmpeg \
-loop 1 -t 5 -i cyan.jpg \
-loop 1 -t 5 -i magenta.jpg \
-loop 1 -t 5 -i yellow.jpg \
-loop 1 -t 5 -i black.jpg \
-i audio.mp4
-filter_complex \
"[0]crop=1280:1280[v1]; \
 [1]crop=1280:1280[v2]; \
 [2]crop=1280:1280[v3]; \
 [3]crop=1280:1280[v4]; \
 [v1][v2]xfade=wipedown:duration=1:offset=4[x1]; \
 [x1][v3]xfade=wipeup:duration=1:offset=8[x2]; \
 [x2][v4]xfade=wipedown:duration=1:offset=12,format=yuv420p[v]" \
-map "[v]" -map 4:a -movflags +faststart -shortest output.mp4

Puedes ver una galería de todas las transiciones enWiki FFmpeg: xfade.

información relacionada