短视频旋转图像,原来如此简单!不用编辑器,1键搞定

2020-06-04 10:50:12 浏览数 (1)

引言

现在我们都使用智能手机进行短视频的拍摄和制作,同时带有音频文件。

但是有时候竖屏拍摄的图像,或者横屏拍摄的图像想要进行旋转,做一些特效,进行二次加工的时候,需要耗费很多的时间。

有很多基于GUI的工具和媒体播放器,比如Smplayer,VLC,都有内置的旋转视频功能。但我们更喜欢命令行实用程序,因为处理的文件不止一个两个,每个都手动去操作,效率太低了。

之前的一系列文章,我们已经深度的。向大家介绍了 ffmpeg 一些令人惊艳的功效。如将文件转换为另一种格式、裁剪、拆分和合并文件等等。

本文也使用该工具,实现图像旋转的功能。

学习时间

ffmpeg 有一个名为“Transpose”的功能,用于旋转视频。使用此功能,我们可以轻松地顺时针和逆时针旋转视频,以及垂直和水平翻转它们。

比如下面这一行指令,把视频文件按照顺时针方向旋转90°。

代码语言:javascript复制
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4

或者使用语义化的参数名称。

代码语言:javascript复制
ffmpeg -i input.mp4 -vf "transpose=clock" output.mp4

这里,transspose=1 表示顺时针90度转置给定的视频。

下面是转置功能可用的参数列表:

  • 0-逆时针旋转90度,垂直翻转。这也是默认设置。
  • 1-顺时针旋转90度。
  • 2-逆时针旋转90度。
  • 3-顺时针旋转90度,垂直翻转。

要将视频顺时针旋转180度,需要像下面这样转置两次。

代码语言:javascript复制
ffmpeg -i input.mp4 -vf "transpose=2,transpose=2" output.mp4

上述命令把给定视频文件的音频和视频部分进行了重新编码。如果您不想这么耗费资源,仅仅更改元数据中的旋转设置,就用以下的命令:

代码语言:javascript复制
ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=90 output.mp4

还有更甚者,你可以将输入文件的所有全局元数据,复制到输出文件中,包括日期、摄像机详细信息等。如下所示:

代码语言:javascript复制
ffmpeg -i input.mp4 -map_metadata 0 -metadata:s:v rotate="90" -codec copy output.mp4

需要注意的是,上面两个通过设置元数据进行的旋转,在一些播放器上并不受支持。但是,性能更高。

写在最后

使用程序化的角度解决问题,这是程序员的必修课。可能看起来不是那么直观,但是一旦打通了整个处理流程,你也就拥有了超凡的处理能力。

0 人点赞