ffmpeg过滤器使用叠加顺序旋转刻度

时间:2017-12-12 20:02:04

标签: video ffmpeg rotation overlay video-processing

我正在尝试在视频上渲染图像。经过一些研究后,我使用以下命令

ffmpeg -y  -i "my_video.mp4" -i "my_image.jpg" -filter_complex "color=color=blue:size=711x400:rate=25[container];[0:v]scale=w=400:h=400,setpts=expr=PTS-STARTPTS[vidscaled];[container][vidscaled]overlay=eval=init:shortest=1:x=155:y=0[overlay0];[1:v]scale=w=123:h=123,rotate=a=323.7*PI/180:c=black@0:oh='roth(323.7*PI/180)':ow='rotw(323.7*PI/180)':bilinear=1[imgproc];[overlay0][imgproc]overlay=eval=init:x=18:y='237-abs(123*sin(323.7*PI/180))'[overlay1]" -map "[overlay1]" -map 0:a -strict -2 -preset ultrafast -g 120 output.mp4

这种方法的问题是图像质量低,因为在旋转之前应用缩放。所以我尝试在缩放之前应用旋转,(参见下一个命令)

ffmpeg -y  -i "my_video.mp4" -i "my_image.jpg" -filter_complex "color=color=blue:size=711x400:rate=25[container];[0:v]scale=w=400:h=400,setpts=expr=PTS-STARTPTS[vidscaled];[container][vidscaled]overlay=eval=init:shortest=1:x=155:y=0[overlay0];[1:v]rotate=a=323.7*PI/180:c=black@0:oh='roth(323.7*PI/180)':ow='rotw(323.7*PI/180)':bilinear=1,scale=w=173:h=173[imgproc];[overlay0][imgproc]overlay=eval=init:x=18:y='237-abs(123*sin(323.7*PI/180))'[overlay1]" -map "[overlay1]" -map 0:a -strict -2 -preset ultrafast -g 120 output.mp4

问题: c =黑色@ 0 不再起作用,旋转图像周围的边界框不透明。

任何人都应该帮助这个灵魂。

pd:使用c = none也不起作用,得到了绿色背景

1 个答案:

答案 0 :(得分:1)

目前无法对此进行测试,但事先添加alpha平面应该可以解决问题。

[1:v]format=yuva444p,rotate=a=323.7*PI/180:c=black@0:oh='roth(323.7*PI/180)':ow='rotw(323.7*PI/180)':bilinear=1,scale=w=123:h=123[imgproc];