FFmpeg 视频画面旋转的命令详解及旋转失败的解决方法
这两天在处理一段用 iPhone 拍摄的视频,在手机上看正常,导出到电脑上发现视频是倒的,或者说反的。没办法,剪辑之前必须先将它“转正”。于是打算将它在 iPhone 里进行处理,具体方法请看:iPhone 拍的视频是倒的反的?几秒钟搞定!。然而奇怪的是,iPhone 处理完成后,导出到电脑上查看,依然是倒的?!也就是说,不管视频在 iPhone 是正的还是倒的,拿到电脑上看,都是倒的,神奇了!
没办法,那只能动用电脑软件处理了。前几天介绍了命令行工具 FFmpeg,刚好可以派上用场。ffmpeg 功能十分强大,视频旋转是它其中的一个功能,废话不多说,直接看命令:
ffmpeg -i Hack520_com.mov -vf "transpose=2,transpose=2" Hack520_com_new.mov
此过程需要较长时间,看文件大小和电脑配置。这条命令就是可以将 Hack520_com.mov 这个视频文件画面逆时针旋转180。具体看如下命令说明:
i:输入文件。 Hack520_com.mp4:输入文件名称。 -vf:过滤器。 "transpose=2,transpose=2":过滤条件。 其中transpose取值: 0 = 90CounterCLockwise and Vertical Flip (default) 逆时针和垂直翻转 1 = 90Clockwise 顺时针旋转 2 = 90CounterClockwise 逆时针旋转 3 = 90Clockwise and Vertical Flip 顺时针和垂直翻转
上述操作之后,兴奋地打开新的视频文件查看,结果依然是反的,跟之前的相比根本没有变化,这是怎么回事?难道是 mov 格式的问题?将新输出的文件改成 mp4 格式。不行,问题依旧。转了半天竟然没有效果,我也是奇怪了。
尝试只转90度,命令:
ffmpeg -i Hack520_com.mov -vf "transpose=0" Hack520_com_new.mov
结果成功了,真的转了90度!transpose=2 命令再转一次,最后终于将视频“转正”了。但一开始的命令参数“"transpose=2,transpose=2”为什么没有效果,始终不明。它是意思就是连续逆时针转两次,网上查过这个命令也是没有问题的,奇怪了。
1.首先你的图像是反的,你需要对图形进行 水平翻转 或 竖直翻转;单纯的顺时针逆时针旋转无法校正!
Google Chrome 71.0.3578.98 Windows 7 x64 Edition2.transpose=2 只是单纯的进行旋转操作
3.ffmpeg -i Hack520_com.mov -vf “transpose=0” Hack520_com_new.mov 中的 transpose=0 并不是只转90度,而是逆时针转90度后又进行了竖直翻转,所以你的图像经过这一步,已经不是反的了.
2019-7-10 15:20:58