【问题标题】:mp4 And Rotation - Remove Flags But Set Rotationmp4 和旋转 - 删除标志但设置旋转
【发布时间】:2021-11-21 22:40:10
【问题描述】:

我在旋转我拥有的一些 mp4 文件时遇到了困难。这很可能是我的理解力不够,所以如果我列出我知道(或认为我知道)以及我想要发生的事情,请原谅我。

显然,mp4 有一个正确的方式 - 即您希望它在观看时显示的方式。称之为方向。这不是元数据 - 它只是作为一个人,您希望看到图像的方式,人们的头在屏幕顶部,他们的脚在底部。

作为元数据的一部分,mp4 文件有一个值/参数(我相信称为“旋转”),它告诉 mp4 需要旋转多少(0、90、180、270 度)才能正确定向.这个值/参数被一些玩家观察到,而不被其他一些玩家观察到。因此,如果我使用此播放器播放我的视频,一切都很好(因为它观察值/参数) - 但如果我与其他播放器一起播放,一切都是横向的(因为它不观察值/参数)。

我想要做的是正确定位 mp4 并将值/参数设置为 0,这样无论哪个玩家播放它,它总是会正确播放(因为那些观察值/参数的玩家会看到它是 0 并且什么都不做)。所以我认为我需要做的是以某种方式删除值/参数,然后在不使用旋转值/参数的情况下将 mp4 旋转到正确的方向。我正在考虑类似 FastStone Image Viewer 可以对 JPG 执行的操作 - 在不设置旋转值的情况下无损旋转它们。

我使用过 ffmpeg 并认为它删除了旋转值/参数(或将其设置为 0),因为在我使用它之后,我的视频突然出现在 Windows 资源管理器中,而之前它出现在正确的位置。但是我现在如何在不更改旋转值/参数的情况下将其旋转到正确的方向?

对不起,这很啰嗦和混乱。就像我一样。

【问题讨论】:

    标签: ffmpeg rotation mp4


    【解决方案1】:

    ffmpeg在重新编码时会自动旋转

    示例:输入的栅格大小为 1920x1080,边数据顺时针旋转 90°。运行ffmpeg -i input.mp4 output.mp4 将导致视频根据旋转侧数据顺时针旋转90°。输出将是 1080x1920 并移除旋转侧数据。

    为了避免重新编码时自动旋转

    使用-noautorotate 输入选项:

    ffmpeg -noautorotate -i input.mp4 output.mp4
    

    更改旋转侧数据而不重新编码

    添加-c copy 以启用stream copy 模式并使用-metadata 选项:

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

    显示旋转边数据

    ffprobe -v error -select_streams v -show_entries side_data=rotation -of default=nw=1:nk=1 input.mp4
    

    【讨论】:

    • 所以如果我运行:ffmpeg -i input.mp4 output.mp4 那么 output.mp4 将是 input.mp4,但方向正确,旋转为 0?我说的对吗?
    • @Bud 正确。除非旋转侧数据错误。
    • 是的,非常感谢!有没有办法在这里我可以说你的答案是正确的?
    • 谢谢,找到了,检查了。感谢您的帮助。
    猜你喜欢
    • 2014-01-07
    • 1970-01-01
    • 1970-01-01
    • 2015-03-25
    • 2015-06-18
    • 2019-03-27
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多