ffmpeg에서 잘라낸 원 비디오 가장자리에 빨간색 테두리를 어떻게 표시합니까?

ffmpeg에서 잘라낸 원 비디오 가장자리에 빨간색 테두리를 어떻게 표시합니까?

비디오를 원 모양으로 자르고 이미지 위에 오버레이했습니다. 모든 것이 잘 작동하지만 원 비디오 가장자리에 빨간색 경계선을 표시하는 방법이 있습니다.

ffmpeg -loop 1 -i pic1.jpg -i semple.mp4 -filter_complex \
"[1]trim=end_frame=1,geq='st(3,pow(X-(W/2),2)+pow(Y-(H/2),2));if(lte(ld(3),pow(min(W/2,H/2),2)),255,0)':128:128,loop=-1:1,setpts=N/FRAME_RATE/TB[mask];[1][mask]alphamerge[cutout];[cutout]scale=400:400[cir];[0][cir]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2:shortest=1[out]" -map [out] -map 1:a -preset ultrafast -filter_complex_threads 1 -c:a copy -y output.mp4

누군가 도와주세요.

답변1

cout out 마스크가 병합된 후 geq를 사용하여 10픽셀의 빨간색 테두리를 그립니다.

사용

ffmpeg -loop 1 -i pic1.jpg -i semple.mp4 -filter_complex \ "[1]trim=end_frame=1,geq='st(3,pow(X-(W/2),2)+pow(Y-(H/2),2));if(lte(ld(3),pow(min(W/2,H/2),2)),255,0)':128:128,loop=-1:1,setpts=N/FRAME_RATE/TB[mask];[1][mask]alphamerge,format=yuva444p,geq='st(3,sqrt(pow(X-(SW*W/2),2)+pow(Y-(SH*H/2),2)));if(between(min(SW*W/2,SH*H/2)-ld(3),0,10),67,p(X,Y))':'st(3,sqrt(pow(X-(SW*W/2),2)+pow(Y-(SH*H/2),2)));if(between(min(SW*W/2,SH*H/2)-ld(3),0,10),90,p(X,Y))':'st(3,sqrt(pow(X-(SW*W/2),2)+pow(Y-(SH*H/2),2)));if(between(min(SW*W/2,SH*H/2)-ld(3),0,10),240,p(X,Y))':a='st(3,sqrt(pow(X-(SW*W/2),2)+pow(Y-(SH*H/2),2)));if(between(min(SW*W/2,SH*H/2)-ld(3),0,10),128,p(X,Y))',scale=400:400[cir];[0][cir]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2:shortest=1[out]" -map [out] -map 1:a -preset ultrafast -filter_complex_threads 1 -c:a copy -y output.mp4

관련 정보