美文网首页FFmpegiOS音视频开发音视频专辑
《FFmpeg Basics》中文版-07-翻转和旋转视频

《FFmpeg Basics》中文版-07-翻转和旋转视频

作者: 张芳涛 | 来源:发表于2018-04-10 15:51 被阅读48次

    写在前面

    如果您对音视频技术感兴趣,可以订阅我的专题:音视频专辑
    也可以关注我的简书账户: 张芳涛,我后期会发布更多的音视频以及图像处理方面的文章。

    正文

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

    水平翻转

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


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

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

    ffplay -f lavfi -i testsrc -vf hflip
    

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


    左右是倒着的

    垂直翻转

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


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

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

    ffplay -f lavfi -i rgbtestsrc -vf vflip
    

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

    介绍旋转

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


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

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

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

    看看我自己的测试效果:
    如果使用如下命令行:

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

    显示效果如下图:


    如果使用如下代码:

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

    显示效果如下图:

    image.png

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

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

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

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

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

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

    我自己的测试命令如下:

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

    原来的视频:


    原来的视频 转换之后的视频

    顺时针旋转90度

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

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

    我的测试命令如下:

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

    显示效果如下:

    顺时针旋转90度

    逆时针旋转90度

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

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

    我的测试命令如下:

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

    显示效果:

    image.png

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

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

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

    我的测试命令如下:

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

    效果图如下:

    相关文章

      网友评论

        本文标题:《FFmpeg Basics》中文版-07-翻转和旋转视频

        本文链接:https://www.haomeiwen.com/subject/bkxnhftx.html