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

本文介绍如何使用ffmpeg的rotate滤镜对图片或视频进行任意角度旋转,包括设置旋转角度、输出尺寸、插值方式及填充颜色等参数。通过实例展示了如何将图片旋转并置于视频中心。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用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 图片就可以随着时间旋转,还可以加相应的函数根据一定规则旋转

 

 

 

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值