FFmpeg过滤器,用于围绕点旋转图像

FFmpeg过滤器,用于围绕点旋转图像,ffmpeg,rotation,Ffmpeg,Rotation,有人知道如何使用FFmpeg-vf旋转将图像旋转到其起点(左上角)而不是中心点(默认值)吗 在本例中,我尝试将红方块图像(test_sq.png)从其位于坐标423:259的In.png上的起点旋转30,从而得到out.png 这是我的命令: ffmpeg -y -i in.png -pix_fmt bgra -strict experimental -vf movie=test_sq.png scale=279:279 rotate=30*PI/180:c=none:oh=ow [sticke

有人知道如何使用FFmpeg-vf旋转将图像旋转到其起点(左上角)而不是中心点(默认值)吗

在本例中,我尝试将红方块图像(test_sq.png)从其位于坐标423:259的In.png上的起点旋转30,从而得到out.png

这是我的命令:

ffmpeg -y -i in.png -pix_fmt bgra -strict experimental -vf movie=test_sq.png scale=279:279 rotate=30*PI/180:c=none:oh=ow [sticker]; [in][sticker] overlay=423:259 [out] -s 1280x720 out.png
要将其可视化:

正如您所看到的,它从其中心点旋转,并且还剪辑原始图像,这不是很好。
有人对如何实现我的需要有什么建议或想法吗?

旋转过滤器中的输出宽度和高度将初始化为输入宽度和高度,而不是自动计算以显示旋转后的整个图像。用这个代替

ffmpeg -y -i in.png -i test_sq.png  \
-filter_complex "[1]scale=279:279,setsar=1,rotate=PI/6:c=none:ow=rotw(PI/6):oh=roth(PI/6)[s];
                 [0][s]overlay=423-w*sin(PI/6)/(sin(PI/6)+cos(PI/6)):259,scale=hd720[out]" \
-map "[out]"-pix_fmt bgra out.png

对于非方形图像

ffmpeg -y -i in.png -i test_sq.png  \
-filter_complex "[1]scale=279:279,setsar=1,rotate=PI/6:c=none:ow=rotw(PI/6):oh=roth(PI/6)[s];
                 [0][s]overlay=423-ih*sin(PI/6):259,scale=hd720[out]" \
-map "[out]"-pix_fmt bgra out.png
(您必须手动提供
ih
(原始图像的高度)的值)


对于非方形图像,具有负旋转

ffmpeg -y -i in.png -i test_sq.png  \
-filter_complex "[1]scale=279:279,setsar=1,rotate=-PI/6:c=none:ow=rotw(-PI/6):oh=roth(-PI/6)[s];
                 [0][s]overlay=423:259-iw*sin(PI/6),scale=hd720[out]" \
-map "[out]"-pix_fmt bgra out.png
(您必须手动提供
iw
(原始图像的宽度)的值)


对于没有内置alpha的图像,请在
旋转
过滤器之前插入
format=bgra

因为角度是以弧度为单位测量的,圆周率=180度,圆周率/6=30*圆周率/180=30度。您可以继续使用早期的符号,例如,(20*圆周率/180)表示20度。是的,谢谢!!(我只是注意到,当你发表评论时,在你发表评论之前删除了我的评论,对不起),不管怎么说,它成功了,谢谢!现在当我用非正方形图像测试这个时,它没有正确工作,向左移动了很多,有什么想法吗?例如,比例=333:52。你是故意为正方形图像做答案的吗?谢谢你的编辑,非正方形图像现在起作用了!最后一件事,如何使位置正确为否定ive旋转角度也是?(-20*PI/180)我认为它必须向后移动w/2和h/2,但我不确定如何实现X度的负旋转与(360-X)度的正旋转相同。