我正在寻找用我的Nexus 4在我的Debian Wheezy Sytem上旋转视频的方法。视频以纵向模式拍摄,我想将它们旋转到横向模式。优选地,旋转是命令行驱动。

我发现了几个以前的问题暗示了一个良好的解决方案,但我似乎无法设法搞定它。

首先存在这个问题: 用ffmpeg

旋转视频

但它表示ffmpeg过时,我应该使用avconv。我发现这个问题详细说明了前进的方式。 https://askubuntu.com/questions/269429//269429/ How-Can-i-rotate-video-by-180度 - avconv

这让我使用以下命令:

avconv -i original.mp4 -vf "transpose=1" -codec:v libx264 -preset slow -crf 25 -codec:a copy flipped.mp4
. 然而,这是痛苦的缓慢(最后一次测试花了超过6小时的镜头),不会导致可玩的电影。我还在记录输出时出错,其中陈述MB速率>级别限制。

在这里有重新编码吗?在应用旋转之前,我应该首先将来自手机的视频从我的手机重新编码到另一个,更多“可行”的编码?或者我错过了另一个重要点?

有帮助吗?

解决方案

如果您只想更改元数据,使得考虑标志播放文件的MediaPlayers旋转,请尝试类似的内容:

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

找到在stackoverflow上的其他地方

其他提示

旋转= 0修复了我的问题。我开始以纵向模式录制视频,实现了我的错误,并立即将手机转向景观继续录制。我的iPhone已经将视频标记为整个视频的肖像。

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

固定它。

FFmpeg和类似程序更改元数据即使是-map_metadata选项。 exiftool可以读取旋转矩阵和旋转标志,并且由于版本10.89也如下所述写入。

要获得真正的无损(包括元数据)旋转,我找不到一个解决方案,所以我抓住了一个十六进制编辑器(例如 hxd )并分析旋转的视频文件。

MP4的真实无损旋转:

  • 打开MP4与十六进制编辑器,并搜索vide以查找视频轨道的元数据
  • 上面的一些行(对于我的文件大多是9,有时12),您应该看到trak...\tkhd
  • 在那之间应该是一个生成的agode码(十六进制40)
  • 在两行之前,旋转矩阵存储
  • 没有旋转:

    00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    40
    
  • 180°:

    FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    40
    
  • 90°CW:

    00 00 00 00 00 01 00 00 00 00 00 00 FF FF 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    40 
    
  • 90°CCW:

    00 00 00 00 FF FF 00 00 00 00 00 00 00 01 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    40
    

在需要时更改文件,它应该在支持旋转标志的播放器中旋转(最新的播放器DO)。

如果您的视频包含立体声音频,这显然没有切换,因此如果您希望声音匹配视频旋转(180°),则需要切换左右通道。

在您的问题中有几件您触动的事情:

  1. 几乎没有机会,无需重新汇总即可旋转。已经指出了该规则(MJPEG CODEC)的例外,但您不太可能使用它,因此超出了这个问题的范围。我会提到这种能力的原因是JPEG可以通过元数据转换。因此,如果您能找到具有元数据旋转的容器,您将能够旋转,但到目前为止,没有存在(或者广泛的方式)。
  2. 如果需要小时旋转和重新旋转3分钟的视频,则问题可以介绍巨大的分辨率。我的意思是巨大的!您能否提供avprobe original.mp4的输出,以便可以确定它。
  3. Libav与FFMPEG辩论非常适得其反(您可以看到在这里发布的FUD数量)。基本上发生了什么是与一些开发人员一起出现的项目的分裂,另一个是另一方面,FFMPEG项目已经设法保持名称只是一个侥幸,它没有意义调用一个项目原件和另一个叉子。项目之间的差异主要是发展风格和哲学。如果您将FFMPEG作为更多的开放来源和Libav作为更多的免费软件,则不误认为是错误的。理性人士希望,最终开发商会来到他们的感官,也许不会合并项目,而是合作到更大程度。当Ubuntu最初出来时,在每个Debian GNU / Linux聊天时,沿着“Ubuntu不是Debian !!!!!!!”的行业有很大的信息,但现在情况平静下来,双方都很满意另一个。

这个答案只是守卫恩克布德提供的评论的摘要。

旋转而不编码

除非:

,否则不再重新编码而无需重新编码

  • 您的输入是mjpeg
  • 你在播放时旋转

使用正确的ffmpeg

旋转编码 要正确理解这一点所需的步骤,应该首先读或至少撇去这个问题:

ffmpeg,libav和avconv之间的差异和相似性是什么?

摘要:avconv是ffmpeg的叉子,debian维护者选择avconv,您必须从源代码编译正确的ffmpeg。

下一步将从源编译正确的ffmpeg,如下所示:

ffmpeg for debian

最后一步是使用其他帖子中的命令:

如何用ffmpeg翻转视频180°(垂直/颠倒)? 或者 用ffmpeg

旋转视频

摘要:ffmpeg -vfilters“rotate= 90”-i输入.mp4 output.mp4

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top