
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.
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.
No estoy seguro, pero ¿parece que mantiene la altura de la primera imagen (1600)? Esperamos cualquier sugerencia para solucionar este problema.
Respuesta1
Utilizar elxfadefiltrar:
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.