使用ffmpeg对图片视频进行任意角度旋转,解决黑边和裁剪问题

使用ffmpeg rotate滤镜对图片视频进行任意角度旋转

参数如下

angle,a

设置顺时针旋转的角度表达式,表示为若干弧度。负值为逆时针旋转。默认设置为“0”。

out_w

设置输出宽度表达式,默认值为“iw”

out_h

设置输出高度表达式,默认值为“ih”

bilinear

如果设置为1则允许双线性插值,为0则禁用它,默认为1

fillcolor c

设置旋转后的填充颜色,none表示不填充,即透明,默认为黑色

n

输入帧,从0开始

t

输入帧时间(秒)

hsub

vsub

水平和垂直色度子样本值,例如:对应像素格式yuv422,hsub是2,而vsub是1

in_w

in_h

输入宽高

out_w,ow

out_h,oh

输出宽高

rotw(a)

roth(a)

完全包含由弧度旋转的输入视频所需的最小宽度/高度。

只有在计算out_w和out_h表达式时才可用。

例子

把图片旋转45度放到视频中心

ffmpeg -i scenery.mp4 -i logo.png  -filter_complex "[1:v]rotate='45*PI/180:ow=hypot(iw,ih):oh=ow:c=none'[rotate];[0:v][rotate]overlay=(W-w)/2:(H-h)/2" rotate.mp4 -y

解析

c=none这样就不会出现黑色背景

ow=hypot(iw,ih):hypot(x, y) 计算斜边(直角三角形最长边)等效于sqrt(xx + yy),如果不设置ow,oh则旋转之后溢出边框部分之间被裁剪掉了

实现旋转过渡小姑:rotate='45*PI/180*t 图片就可以随着时间旋转,还可以加相应的函数根据一定规则旋转

猜你喜欢

转载自blog.csdn.net/sinat_14826983/article/details/82695037