
크기와 방향이 다른 이미지로 비디오를 만들고 있습니다. 실제로 이미지 방향(종횡비)을 기준으로 비디오 슬라이드의 애니메이션을 만들어야 합니다. 다음과 같은 크기의 이미지 4개가 있다고 가정해 보겠습니다.
1.jpg 1280x1600(위에서 아래로)
2.jpg 1280x1600(아래에서 위로)
3.jpg 1280x1600(위에서 아래로)
4.jpg 1280x1280(효과 없음)
여기는FFmpeg내가 실행중인 명령
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
영상의 처음 1초를 봐주세요
그래서 크로스페이드, 크롭, 효과는 작동하고 있는데 보시다시피 영상 하단에 불필요한 부분이 남아있습니다. 다른 모든 애니메이션은 위 섹션에 표시됩니다.
확실하지는 않지만 첫 번째 이미지 높이(1600)를 유지하고 있는 것 같나요? 이 문제를 해결하기 위한 제안을 기다리겠습니다.
답변1
사용엑스페이드필터:
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
다음에서 모든 전환 갤러리를 볼 수 있습니다.FFmpeg 위키: xfade.