7.翻转和旋转视频

视频帧的翻转和旋转是常见的视觉操作,可以用来创建各种有趣的效果,比如输入的镜像版本。

水平翻转

水平镜像的视频版本-水平翻转是用一个在表格中描述的hflip过滤器创建的。

7.翻转和旋转视频 - 图1

描述 水平翻转输入视频,因此输出看起来像是从侧面镜像。过滤器没有参数
语法 -vf hflip

为了测试testsrc视频源的水平翻转,我们可以使用以下命令:

  1. ffplay -f lavfi -i testsrc -vf hflip

7.翻转和旋转视频 - 图2

我的测试命令和书里面的一样,显示效果如下图:

7.翻转和旋转视频 - 图3

左右是倒着的

垂直翻转

对于垂直方向的输入帧,我们可以使用在表格中描述的vflip过滤器。

7.翻转和旋转视频 - 图4

描述 垂直翻转输入视频,因此输出看起来像从顶部或底部镜像
语法 -vf vflip

左下方的图像是在第25章中描述的rgbrestsrc模式。为了得到它的垂直翻转版本,我们可以使用下一个命令:

  1. ffplay -f lavfi -i rgbtestsrc -vf vflip

7.翻转和旋转视频 - 图5

我自己的测试命令和书上的一样,效果图如下:

7.翻转和旋转视频 - 图6

介绍旋转

之前的FFmpeg版本包含特殊的过滤器旋转,使视频旋转可以进入角度值。这个过滤器现在已被弃用,取而代之的是一个转置过滤器,它允许旋转并且可以选择立即翻转输入。表中描述了转置滤波器。

7.翻转和旋转视频 - 图7

描述 将行与输入的列进行转置,如果选择,也会翻转结果
语法 transpose={0, 1, 2, 3} one from the values 0 - 3 is used
* 描述可用的值
0 输入由90°逆时针旋转,垂直翻转
1 输入是顺时针旋转90°
2 输入是逆时针旋转90°
3 输入是顺时针旋转90°,垂直翻转

请注意,转置滤波器的值0和3在视频帧上同时提供两个操作——旋转和垂直翻转。这意味着值0的使用包括两个过滤器的效果,下面两个命令的结果相同:

  1. ffplay -f lavfi -i smptebars -vf transpose=0
  2. ffplay -f lavfi -i smptebars -vf transpose=2,vflip

看看我自己的测试效果:

如果使用如下命令行:

  1. ffplay -f lavfi -i smptebars -vf transpose=0

显示效果如下图:

7.翻转和旋转视频 - 图8

如果使用如下代码:

  1. ffplay -f lavfi -i smptebars -vf transpose=2,vflip

显示效果如下图:

7.翻转和旋转视频 - 图9

image.png

类似地,在接下来的两个命令中,可以用两个过滤器替换值3:

  1. ffplay -f lavfi -i smptebars -vf transpose=3
  2. ffplay -f lavfi -i smptebars -vf transpose=1,vflip

在接下来的章节中,我们描述了带有插图的转置过滤器的每个值的用法。

逆时针旋转90度,垂直翻转

下一个命令以顺时针方向旋转90度的输入:

  1. ffmpeg -i CMYK.avi -vf transpose=0 CMYK_transposed.avi

7.翻转和旋转视频 - 图10

我自己的测试命令如下:

  1. ffmpeg -i /Users/zhangfangtao/Desktop/test.mp4 -vf transpose=0 /Users/zhangfangtao/Desktop/newTest.mp4

原来的视频:

7.翻转和旋转视频 - 图11

原来的视频

7.翻转和旋转视频 - 图12

转换之后的视频

顺时针旋转90度

下一个命令输入90°旋转顺时针方向:

  1. ffmpeg -i CMYK.avi -vf transpose=1 CMYK_transposed.avi

7.翻转和旋转视频 - 图13

我的测试命令如下:

  1. ffmpeg -i /Users/zhangfangtao/Desktop/test.mp4 -vf transpose=1 /Users/zhangfangtao/Desktop/newTest.mp4

显示效果如下:

7.翻转和旋转视频 - 图14

顺时针旋转90度

逆时针旋转90度

下一个命令输入90°逆时针旋转:

  1. ffmpeg -i CMYK.avi -vf transpose=2 CMYK_transposed.avi

7.翻转和旋转视频 - 图15

我的测试命令如下:

  1. ffmpeg -i /Users/zhangfangtao/Desktop/test.mp4 -vf transpose=2 /Users/zhangfangtao/Desktop/newTest.mp4

显示效果:

7.翻转和旋转视频 - 图16

image.png

顺时针旋转90度,垂直翻转

下一个命令输入90°旋转顺时针方向和垂直翻转它:

  1. ffmpeg -i CMYK.avi -vf transpose=3 CMYK_transposed.avi

7.翻转和旋转视频 - 图17

我的测试命令如下:

  1. ffmpeg -i /Users/zhangfangtao/Desktop/test.mp4 -vf transpose=3 /Users/zhangfangtao/Desktop/newTest.mp4

效果图如下:

7.翻转和旋转视频 - 图18