如何从命令行使用 FFMpeg 旋转视频

今天我决定加入从我的智能手机拍摄的视频,并制作一个带有音频的类似电影的文件。 但问题是有些视频是以纵向模式拍摄的,有些是以横向模式拍摄的。 在加入文件之前,我认为最好将每个视频文件对齐在相同的方向(即模式)。 当然,有许多基于 GUI 的工具和媒体播放器,如 Smplayer、VLC,都具有旋转视频的内置功能。 但我更喜欢命令行实用程序。 我知道怎么用 FFMpeg 执行各种操作,例如将文件转换为另一种格式、裁剪、拆分和连接文件等等。 我已经为初学者编译了最常用的 FFMpeg 命令并将它们发布在 本指南. 但是,直到今天我才知道如何使用 FFMpeg 旋转视频。 如果您想使用 FFMpeg 旋转视频,请按照以下步骤操作。

确保您的系统上安装了最新的 FFMpeg 版本。 FFMpeg 在许多流行的 Linux 操作系统的默认存储库中都可用,因此安装不会有什么大不了的。 如果您尚未在 Linux 机器上安装 FFMpeg,请参阅以下指南。

  • 如何在 Linux 上安装 FFMpeg

从命令行使用 FFMpeg 旋转视频

FFMpeg 有一个特性叫做 “转置” 用于旋转视频。 使用此功能,我们可以轻松地顺时针和逆时针旋转视频,以及垂直和水平翻转它们。

为了 example,以下命令将给定视频顺时针旋转 90 度:

$ ffmpeg -i input.mp4 -vf "transpose=1" output.mp4

或者,使用以下命令:

$ ffmpeg -i input.mp4 -vf "transpose=clock" output.mp4

这里, 转置=1 参数指示 FFMpeg 将给定视频顺时针旋转 90 度。 这是转置功能的可用参数列表。

  • 0 – 逆时针旋转 90 度并垂直翻转。 这是 默认.
  • 1 – 顺时针旋转 90 度。
  • 2 – 逆时针旋转 90 度。
  • 3 – 顺时针旋转 90 度并垂直翻转。

要将视频顺时针旋转 180 度,您需要两次提及 transpose 参数,如下所示。

$ ffmpeg -i input.mp4 -vf "transpose=2,transpose=2" output.mp4

上述命令将重新编码给定视频文件的音频和视频部分。 如果您不想重新编码视频并仅更改元数据中的旋转,请改用此命令:

$ ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=90 output.mp4

更好的是,您可以将输入文件的所有全局元数据(例如日期、相机详细信息)复制到输出文件,如下所示。

$ ffmpeg -i input.mp4 -map_metadata 0 -metadata:s:v rotate="90" -codec copy output.mp4

请注意,它在某些无法处理轮换元数据的播放器中不起作用。 我仅在元数据中更改了视频方向并在 Smplayer 中播放。 但它继续以以前的方向播放视频。 但它在 Gnome 媒体播放器中工作! 我不知道为什么。 因此,如果视频方向不起作用,您可能需要重新编码,如第一个命令所示。

建议阅读:

  • 如何在 Linux 上查看图像元数据

感谢您的光临!

帮助我们帮助您:

祝你有美好的一天!!