直接上代码
ffmpeg -i 广西.png -filter_complex "[0:v]split=3[tmp1][tmp2][tmp3];[tmp2]crop=iw:ih/2:0:0,hflip[flip2];[tmp3]crop=iw:ih/2:0:0,vflip[flip3];[tmp1][flip2]overlay=0:0[overlay1];[overlay1][flip3]overlay=0:H/2" 3.png
ffmpeg是可执行文件,如果不是位于环境变量路径中时需要使用绝对路径.
-i 表示输入源,上述代码中广西.png就是输入源.
-filter_complex
和-vf
都用于应用滤镜效果,上述代码用的是-filter_complex,两者差别在于-filter_complex
允许你创建更复杂的滤镜图,包括并行和串行的滤镜操作。你可以在一个滤镜图中定义多个输入和输出流,并在这些流之间进行各种操作,如叠加、混合、拼接等。这个选项更加灵活,适用于处理复杂的滤镜需求。
filter_complex后面跟着的是滤镜操作了,用""括起来.
引号中,有多个线性链,同一条用逗号分开,不同的用分号分开
[0:v]split=3[tmp1][tmp2][tmp3]表示把输入源也就是广西.png复制输出三份,每一份名称依次是[tmp1][tmp2][tmp3].
这个时候我们有[tmp1][tmp2][tmp3]三分图像,再看[tmp2]crop=iw:ih/2:0:0,hflip[flip2], 这个指的是输入是[tmp2]这个图像,经过crop即剪切,剪切位置是0,0处开始,剪切的长度高度是iw:ih/2,然后经过hflip即水平翻转输出[flip2].
[tmp3]crop=iw:ih/2:0:0,vflip[flip3]效果和[tmp2]crop=iw:ih/2:0:0,hflip[flip2]差不多,只不过是裁剪后的图像的翻转方式从水平变成了垂直翻转.
然后就是[tmp1][flip2]overlay=0:0[overlay1],在此之前,我们的[tmp1]这份图像是没有修改过的,所以这段的作用是在tmp1的0,0位置把flip2粘贴上去,然后输出overlay1
最后是[overlay1][flip3]overlay=0:H/2,一样是粘贴,只不过位置变成了0,h/2
最后输出3.png图像保存下来
看效果:
原图:
输出:
菜鸟初学者,多多指教.