我可以使用FFmpeg为视频流设置旋转字段吗?

Ale*_*tin 33 ffmpeg video-conversion

我有一个视频文件.我用MediaInfo实用程序打开它,我可以看到该文件中的视频流具有属性Rotation 90(以及其他属性,如CodecID,bitrate等).

现在我有另一个没有该属性Rotation 90的视频文件,它根本没有Rotation属性.

我可以使用ffmpeg.exe,以便生成添加了Rotation 90属性且没有其他更改的输出文件吗?我真的不想做任何变换,只想设置Rotation属性.

我试过这个-metadata选项无济于事.

slh*_*hck 70

这适用于最近的FFmpeg:

ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=90 output.mp4
Run Code Online (Sandbox Code Playgroud)

这将流复制比特流,因此不执行编码.v:0此处仅更改第一个视频流()的元数据,播放器将以旋转方式显示视频.(并非所有玩家都支持此功能.)

补充说明:

  • 如果要"物理"旋转视频,则必须使用transpose过滤器.过滤将需要重新编码,因此您必须删除-c copy.

  • 如果省略-c copy,并且想要编码而不是仅重新复用,那么ffmpeg如果存在任何现有的旋转元数据,则会自动旋转视频.您可以使用禁用此行为-noautorotate.