이미지를 이동하면서 크롭하고 싶습니다. 변환 효과를 내기 위해서는 자르기가 시간에 따라 움직여야 합니다. 나는 다음 명령을 사용해 보았습니다.
ffmpeg -y -i video.mp4 -filter_complex "movie=filename=image.jpg:loop=1[pip:v];[pip:v]trim=start=0.0:duration=5,setpts=PTS-STARTPTS+0/TB[pip:v];[pip:v]scale='if(gte(ih,iw),384,-1):if(gte(ih,iw),-1,216)',crop=384:216:exact=1[pip:v];[pip:v]scale=iw*(1.3):ih*(1.3)[pip:v];[pip:v]crop=384:216:-(in_w-out_w)*(t-(5))/5:0[pip:v];[0:v][pip:v]overlay=main_w-overlay_w-33.333332:main_h-overlay_h-33.333332:enable='between(t,0,0+5)'[outv]" -map [outv] -preset ultrafast -r 29.97 output.mp4
그러나 작물은 고정되어 있습니다. 크롭 타임스탬프가 이미지라서 작동하지 않는 것 같아요. 해결책을 찾을 수 없습니다. 도와주실 수 있나요?
답변1
필터를 사용하는 대신 두 번째 입력으로 movie
추가 하고 프레임 속도 설정을 위해 추가할 수 있습니다.image.jpg
-r
ffmpeg -y -i video.mp4 -r 29.97 -loop 1 -i image.jpg...
의 프레임 속도(반복 속도)를 정의 image.jpg
하고 타임스탬프 문제를 해결합니다.
업데이트된 명령줄:
ffmpeg -y -i video.mp4 -r 29.97 -loop 1 -i image.jpg -filter_complex "[1:v]trim=start=0.0:duration=5,setpts=PTS-STARTPTS+0/TB[pip:v];[pip:v]scale='if(gte(ih,iw),384,-1):if(gte(ih,iw),-1,216)',crop=384:216:exact=1[pip:v];[pip:v]scale=iw*(1.3):ih*(1.3)[pip:v];[pip:v]crop=384:216:-(in_w-out_w)*(t-(5))/5:0[pip:v];[0:v][pip:v]overlay=main_w-overlay_w-33.333332:main_h-overlay_h-33.333332:enable='between(t,0,0+5)':format=yuv444[outv]" -map [outv] -preset ultrafast -r 29.97 output.mp4