Как показать красную цветную рамку по краю круга, вырезанного в 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

Связанный контент