使用 FFMPEG 将具有缩放 + 旋转的图像添加到视频叠加层?

Add image with scale + rotation to video overlay with FFMPEG?

我想使用参数向视频添加叠加图像

1: w:h --> 是视频中图像的宽度和高度

2: r --> 弧度是图像的旋转

3: center (x,y) --> 是视频中图像的中心点

这是我的 FFMPEG 命令:

-i video.mp4 -i image.png filter_complex [1:v]scale=w:h[scale];[scale]rotate=r:ow=iw:oh=ih[rotate];[0:v][rotate]overlay=x-(w/2):y-(h/2)

但是结果不正确。它只适用于 scale=1 和 rotate=0 radian

我该怎么做?

使用

[1:v]scale=w:h,pad=iw+4:ih+4:black@0[scale];[scale]rotate=r:ow='rotw(r)':oh='roth(r)'[rotate]

在旋转之前向图像添加了一点透明填充。这是因为旋转滤镜将用输入的边框像素颜色填充 canvas 中的空白。此外,必须调整输出大小以适应旋转后的整个图像。请参阅旋转过滤器的 docs

用于在视频上旋转、缩放、叠加和设置图像持续时间的 Ffmpeg 命令

ffmpeg -i input.mp4 -i inputImg.png -filter_complex \"[1:v] rotate=90:c=none:ow=rotw(iw):oh=roth(ih) [rotate];[rotate]scale=100:-1[scale];[0:v][scale] overlay=0:0:enable='between(t,0,2)'[out]\" -map [out] -pix_fmt yuv420p -c:a copy output.mp4