7.翻转和旋转视频
对视频帧进行翻转和旋转是很常见的视觉操作,它可以创建一些有趣的效果,比如把输入文件作出一个镜像对称的版本。
水平翻转
我们使用 hflip filter 执行水平翻转操作,其详细描述如下:
对 testsrc 进行水平翻转,命令如下:
ffplay -f lavfi -i testsrc -vf hflip
垂直翻转
我们使用 vflip filter 执行垂直翻转操作,其详细描述如下:
下面左侧的图是一个 rgbrestsrc 模式(在第25章节中描述),想要获得它的垂直翻转的版本,我们的命令如下:
ffplay -f lavfi -i rgbtestsrc -vf vflip
旋转介绍
在之前版本的FFmpeg中,有 rotate filter 可旋转视频,它可以按照传入的任意角度值来进行旋转操作。这个 filter 现在已经废弃,转而使用名为 transpose filter 的过滤器,它仅有有限的选项可以使用,其详细描述如下:
- 0 :逆时针方向旋转90度,然后垂直翻转
- 1:顺时针方向旋转90度
- 2:逆时针方向旋转90度
- 3:顺时针方向旋转90度,然后垂直翻转
请注意,0 和 3 选项对视频帧同时做了两个操作:旋转和垂直翻转。这意味着,以下两条命令的结果是一样的:
ffmpeg -f lavfi -i samtebars -vf transpose=0
ffmpeg -f lavfi -i samtebars -vf transpose=2,vflip
类似的,3 选项也是两个 filter 效果的结合,下面的命令效果也相同:
ffmpeg -f lavfi -i samtebars -vf transpose=3
ffmpeg -f lavfi -i samtebars -vf transpose=1,vflip
transpose的每个取值都会在接下来说明。
逆时针旋转90度然后垂直翻转
对 transpose filter 取值为 0 时,就是这样的效果:
ffmpeg -i CMYK.avi -vf transpose=0 CMYK_transposed.avi
顺时针旋转90度
对 transpose filter 取值为 1 时,就是这样的效果:
ffmpeg -i CMYK.avi -vf transpose=1 CMYK_transposed.avi
逆时针旋转90度
对 transpose filter 取值为 2 时,就是这样的效果:
ffmpeg -i CMYK.avi -vf transpose=2 CMYK_transposed.avi
顺时针旋转90度然后垂直翻转
对 transpose filter 取值为 3 时,就是这样的效果:
ffmpeg -i CMYK.avi -vf transpose=3 CMYK_transposed.avi
ranspose filter 取值为 3 时,就是这样的效果:
ffmpeg -i CMYK.avi -vf transpose=3 CMYK_transposed.avi