FFmpeg 视频旋转处理命令

前面介绍ffmpeg 一些简单视频过滤器,后面分析手机拍出来的竖屏视频为什么是横屏尺寸。

因为某种原因发现ffmpeg处理视频旋转这个特别好玩,记录一下,为了演示效果还特意做了个字母小视频(abc.mp4),后面不贴GIF了,眼快闪瞎啦。
abc.mp4

ffmpeg -vf

-vf指令是一些简单的视频过滤器。

顺时针旋转90°

ffmpeg -i abc.mp4 -vf "transpose=1" abc-r90.mp4

效果
在这里插入图片描述

逆时针旋转90°

ffmpeg -i abc.mp4 -vf "transpose=2" abc-r270.mp4

效果
在这里插入图片描述

水平翻转

 ffmpeg -i abc.mp4 -vf hflip hflip.mp4

效果
在这里插入图片描述

垂直翻转

 ffmpeg -i abc.mp4 -vf vflip vflip.mp4

效果
在这里插入图片描述

逆时针旋转90°后再水平翻转

ffmpeg -i abc.mp4 -vf "transpose=3" abc-trsps3.mp4

等效于

ffmpeg -i abc.mp4 -vf "transpose=2,hflip" r270hf.mp4

效果
在这里插入图片描述

顺时针旋转90°后再水平翻转

也可以理解为水平翻转后逆时针旋转90°

ffmpeg -i abc.mp4 -vf "transpose=0" abc-trsps0.mp4

等效于

ffmpeg -i abc.mp4 -vf "transpose=1,hflip" r90hf.mp4

效果
在这里插入图片描述

旋转180°

直接让右旋2次

ffmpeg -i abc.mp4 -vf "transpose=1,transpose=1" r180.mp4

效果
在这里插入图片描述

顺时针旋转45°

使用rotate进行旋转,不改变源图像分辨率,背景为黑色。

ffmpeg -i abc.mp4 -vf rotate=PI/4 rotate45.mp4

效果
在这里插入图片描述

MP4文件的 rotate 旋转属性

工作中发现手机拍出来的竖屏视频导出到电脑上播放也是竖屏,但是用各种软件识别出来的确是横屏尺寸(ffmpeg也是),甚是诧异。

后来才发现原来mp4文件有个 rotate 旋转 属性,常规播放器播放的时候能识别这个属性,自动转为竖屏。
在这里插入图片描述
在这里插入图片描述

这样的话在实际使用中会出现一些问题,比如mp4解复用或者转换为mkv等格式后,这个属性就会丢失,再把这个视频传出去就会变成一下躺下的横屏视频。
于是就在网上搜到了上面旋转视频的命令,感觉好玩就记录一下。

本以为把手机拍出来的这个视频用上面的-vf "transpose=1"命令右旋一下就好了,结果发现转换后的变成向右躺下的横屏视频了!

原来ffmpeg旋转的时候能识别这个 Rotation 属性,如果Rotation=90就会认为是竖屏,然后再右旋。

这样的话可以先想办法把这个Rotation 属性去掉,再进行右转90°,即

ffmpeg -i VID_000.mp4 -metadata:s:v rotate="0" -c:v copy -c:a copy r0.mp4
ffmpeg -i r0.mp4  -vf "transpose=1"  out.mp4

这样的话,Rotation 属性也没了,变成了真正的竖屏视频了。

-vf "transpose=1"命令会识别原文件的Rotation 属性,但是转换后的文件是没有这个属性的,所以也可以把这个文件 右旋再左旋,即使用了两次滤波器,可能计算量会大那么一丢丢。

ffmpeg -i VID_000.mp4 -vf "transpose=1,transpose=2" out.mp4

总结

  1. 手机拍出来的mp4视频无论横着拍还是竖着拍,都是横屏尺寸,(试过几个品牌的安卓机是这样),手机会根据拍摄时角度设置rotate 旋转 属性,一般为90°(正常竖拍)或者270°(手机倒着拍)。播放器播放时会识别rotate 属性就行相应旋转显示。
  2. ffmpeg -i input -metadata:s:v rotate="90" -c:v copy -c:a copy out.mp4可以设置视频的rotate 旋转 属性,只影响播放显示效果,不改变实际尺寸,此命令可以不重编码音视频。
  3. ffmpeg -vf 会使用视频过滤器 切切实实地 旋转或者翻转视频图像,这个环节会重编码视频。此过滤器同样适用于普通图片文件处理。
  • 14
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值