2013-03-11 66 views
24

我有一个视频文件。我用MediaInfo实用程序打开它,我可以在该文件中看到具有属性旋转90(以及其他属性,如CodecID,比特率等)的视频流。我可以使用FFmpeg设置视频流的旋转字段吗?

现在我有另一个视频文件没有该属性旋转90,它根本没有旋转属性。

我可以使用ffmpeg.exe,使它生成添加了Rotation 90属性的输出文件,并且没有其他更改吗?我真的不想做任何转换,只想设置Rotation属性。我试过-metadata选项无济于事。

回答

57

这适用于最近的FFmpeg:

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

这将stream copy的比特流,所以不进行编码。只有第一个视频流的元数据(v:0)在此处更改,播放器将以旋转的方式显示视频。如果你想“物理”旋转视频

  • ,你必须use the transpose filter:(并非所有的玩家都会支持这一点。)

    其他注意事项。过滤将需要重新编码,因此您将不得不删除-c copy

  • 如果您忽略-c copy,并且想要编码而不是仅重新复用,那么ffmpeg将自动旋转视频,如果有任何现有的旋转元数据。您可以通过-noautorotate禁用此行为。

+0

非常感谢,这是成功的! – 2013-03-11 11:14:26

+0

我已经编译了ffmpeg的最新代码,并且在运行此命令时没有错误,但仍然是视频不旋转。请帮助 – 2014-01-08 05:56:55

+1

@MohitChauhan请注意,这实际上并未旋转视频。它只是设置旋转标志,这使得一些球员以旋转的方式显示它。如果您遇到命令问题,请在[SU]上提出问题并显示命令及其完整的控制台输出。 – slhck 2014-01-08 06:50:07