如何旋转视频?

有没有办法改变视频文件的旋转角度?
我有几个方向错误的视频,所以我只想纠正一下。
7个回答

你还可以使用ffmpeg和命令行(取自使用FFmpeg旋转视频):

Rotate 90 clockwise:

ffmpeg -i in.mov -vf "transpose=1" out.mov

For the transpose parameter you can pass:

0 = 90CounterCLockwise and Vertical Flip (default) 
1 = 90Clockwise 
2 = 90CounterClockwise 
3 = 90Clockwise and Vertical Flip
而要水平翻转它(ffmpeg文档):

Flip the input video horizontally.

For example to horizontally flip the video in input with `ffmpeg':

ffmpeg -i in.avi -vf "hflip" out.avi

Nota bene 1

Ubuntu的旧版本使用avconv而不是ffmpeg。在这种情况下,只需将ffmpeg更改为avconv

avconv -i in.mov -vf "transpose=1" out.mov

Nota bene 2

如果输出是.mp4视频,你必须在输出文件之前添加strict -2以避免错误信息

ffmpeg -i in.mp4 -vf "transpose=1" -strict -2 out.mp4

4“-sameq”并不意味着“同样的质量”,它实际上是一个非常有限的选项,几乎从来没有实际用途,并且在最近的ffmpeg版本中已被移除,正是因为它的名称引起了混淆。 - evilsoup
@evilsoup谢谢你的评论。我已经撤销了更改。不过,更好的链接是这个:http://trac.ffmpeg.org/wiki/Option%20'-sameq'%20does%20NOT%20mean%20'same%20quality',这是来自ffmpeg官方网站的链接。 - Alaa Ali
2请注意,现在已经弃用了ffmpeg,推荐使用avconf。 "此程序已被弃用 该程序仅提供兼容性,并将在未来的版本中删除。请改用avconv。" 有关avconv的答案,请参见:http://askubuntu.com/questions/269429/how-can-i-rotate-video-by-180-degrees-with-avconv - Sparhawk
1@Sparhawk 你说得对 --- 不过似乎ffmpeg有机会东山再起。http://lwn.net/Articles/607591/ ;-) - Rmano
2补充一下你的回答(也许有些人会觉得这个有用):要使用ffmpeg旋转一个x264视频,我必须明确指定编解码器/库:ffmpeg -i in.mp4 -vcodec libx264 -vf "transpose=2" out.mkv。如果显示Unknown encoder libx264,你需要安装适当的libavcodec-extra软件包 - balu
奇怪。为什么我需要把它做成mkv格式? - lindhe
如果出现“打开输出流#0:0编码器时出错——可能是错误的参数,如bit_rate、rate、width或height”,请参见SO - Timo

如果你想要将视频旋转90度或180度,你应该使用avidemux。
sudo apt-get update
sudo apt-get install avidemux
  1. 在avidemux中打开视频
  2. 选择一个新的视频格式,不要选择复制
  3. 在"视频"下点击滤镜
    1. 选择"变换"并向下滚动直到找到旋转。
    2. 添加它
    3. 选择正确的角度
    4. 选择预览
    5. 确定。
  4. 转到文件
  5. 保存
  6. 保存视频

完成。


4不确定应该选择什么视频格式?我可以保留原始视频格式吗? - Dziamid
1我在Windows XP上使用苹果Quicktime Pro(“QTP”)旋转了视频(.MOV)。如果操作正确,文件在其他Windows机器和我妻子的iMac上仍然保持旋转状态,但在Kubuntu 12.04.1上使用Dragon Player(“DP”)时则显示为未旋转。DP声称自己只是一个“简单”的播放器,但我怀疑问题可能是因为QTP以一种只能在QT中访问的方式旋转文件。Avidemux是否更好? - WGCman
1我正在尝试找出如何使用avidemux2_cli来实现这一点,以便我可以通过nautilus-script从上下文菜单中简单地执行此操作。 - Sadi
3选择一个新的视频格式,并且不要选择复制,这句话的确切意思是什么? - Jeff Trull
2回应 @JeffTrull,请您详细说明步骤。我发现 '点击筛选器' 意味着 '从菜单中选择视频→筛选器',但接下来说 '要应用筛选器,必须对视频进行转码'...不管它是什么意思... - Michael Scheper
这个东西是bug!试图加载时出现"H264检测",之后除了一些会降低准确性的步骤以外,没有其他选择.. 不行。还是使用ffmpeg吧。 - Louis Maddox
很遗憾,Avidemux无法打开由我的相机创建的视频。 - krumpelstiltskin
1@JeffTrull “选择一个新的视频格式,不要选择复制” — 在屏幕左侧的“视频”下方有一个下拉菜单。选择除“复制”以外的其他选项。我选择了“MPEG-4 AVC”。这也修复了“应用滤镜…”的错误消息。 - BenB
16很遗憾,“avidemux”不再在标准软件库中。 - Cerin

你是指在播放时旋转还是将其转换为旋转版本吗?
作为一个命令行用户,我通常使用mplayer:
播放: mplayer -vf rotate=1 videofile.mp4 (rotate的值可以从0到7,1表示顺时针旋转90度)
转换(需要转码): mencoder -vf rotate=1 videofile.mp4 -oac copy -of lavf -lavfopts format=mp4 -ovc lavc -lavcopts vcodec=mpeg4 -o newfilename.mp4 (你也可以使用其他视频编解码器,这只是一个示例)
这里还有一个用于进行转换的图形工具:kdenlive(一个来自universe的KDE应用程序)
  • 将您的视频导入为一个剪辑
  • 将剪辑拖放到时间轴中
  • 在时间轴上右键单击视频块
  • 选择“添加效果” -> “裁剪和变换” -> “旋转(可关键帧)”
  • 该效果可以在窗口的上部中央部分进行配置,将X设置为900(即顺时针旋转90度)
  • 渲染您的项目(主菜单中的项目 -> 渲染)
  • 请注意为生成的纵向格式选择视频分辨率
  • 选择任何您喜欢的视频编解码器,我推荐x264或vp8(webm)

转成旋转形式。 - Bennett
好奇地问一下:你最后是用mencoder还是kdenlive呢?顺便说一句,在网上有很多关于调整mencoder选项的文档可以参考。还有一些建议关于“完美的mencoder命令行”(TM),大部分都是不错的建议。 - Paul Hänsch
3如果您想要旋转180度,您需要同时使用翻转和镜像选项,即mplayer -vf flip,mirror videofile.mkv - erik
@erik不错的提示。不过,当我用mplayer -vf flip,mirror播放我的视频时一切都正常。但是,当我尝试使用mencoder -vf flip,mirror转换它时,它仍然旋转了90°。在mencoder中是否有不同的语法来将视频翻转180°? - Würgspaß

如果您只想以不同的方向观看电影,从Totem 3.1.4开始(适用于Raring 13.04及更高版本),有一个"旋转插件"可以打开(编辑/插件),然后通过ctrl-r进行旋转。

我认为当存在旋转元数据时,正确的旋转应该是自动的,我在相关的Totem错误报告中进行了评论:Bug 701950 – Iphone Movies

在mplayer中也有方法可以这样做(并使用mencoder转换为旋转的电影),例如:

 mplayer -vf rotate file.mov

或者

 mencoder file.mov -oac lavc -ovc x264 -vf rotate=1 -o file-rotated.mov

我发现这个只能进行90度的旋转,但可以通过不同的翻转和镜像组合来实现。要实现180度的旋转,我必须运行mplayer -vf rotate=1,rotate=1 file.mp4,也就是连续进行两次90度的旋转。 - Criggie

在我看来,最好的选择是OpenShot,你只需要按照以下简单的步骤操作:

  1. 启动OpenShot
  2. 在文件选项卡上,导入你需要旋转的视频文件
  3. 将导入的视频拖放到底部的时间轴区域(任何一个都可以!)
  4. 一旦视频剪辑在时间轴区域中,右键点击它并选择旋转到所需角度
  5. 然后在文件选项卡上选择导出视频,并设置首选格式和位置
  6. 完成!就是这样

2你并没有真正解释如何实际旋转它。请编辑你的回答并添加这些信息。 - MadMike
4不,它会旋转视频但保持垂直的纵横比,使视频被裁剪成正方形。 - Magnetic_dud

OpenShot在将视频从横屏旋转为竖屏时会进行裁剪。为了补偿这一点,我尝试了以下步骤,并且有效果。希望对你也有用。
1. 将视频放置在一个轨道上,右键点击并选择属性。 2. 在视频选项卡下,取消勾选“保持纵横比”和“拉伸全屏”。 3. 在视频选项卡下,将旋转角度设置为90度顺时针旋转,或者-90度逆时针旋转。 4. 在布局选项卡下,将宽度百分比降低到较小的值(比如70),分别应用于“开始剪辑”和“结束剪辑”。这个值应该根据拍摄的纵横比来调整,所以请根据实际情况进行尝试。我的纵横比是16:9,70的数值效果不错。
通过这种方式,你会发现视频的裁剪最小化,并且几乎不会被注意到。

一个简单的工具,还可以旋转的是transmageddon。使用以下命令进行安装:
sudo apt install transmageddon

然后将您的文件加载到其中,并选择旋转位置

enter image description here


同样的编解码器,但输出文件变小了超过10倍...这是因为质量降低了吗? - HEKTO
这是最好的答案。而且,HEKTO,输出的质量取决于您选择的输出格式和编解码器。 - Nav
模块未找到错误:没有名为'gi'的模块。 - rclyde