2

当我使用 FFMPEG 转换来自 iPhone 4 的 .mov 文件和来自 Android 的 .3gp 文件时。我需要将视频旋转 90 度,但 iPhone 4s 需要 180 度...

有没有什么办法解决这一问题?

4

3 回答 3

2

我不记得 Android 是如何处理这个问题的,但 iPhone 会在 mov 文件元数据中记录方向信息。根据录制时相机的握持方式,视频可能需要 0、90、180 甚至 270 度旋转才能在转换后直立播放。 到目前为止,我不知道 ffmpeg 有任何添加来解析这个元数据,所以你必须手动使用ffprobe -show_streams或类似的东西,然后适当地设置旋转。

更新:正如kibitzer 指出的那样, ffmpeg 现在确实检测到视频已旋转,但尚未提供自动旋转修复。相反,您仍然必须解析旋转信息并使用 、 和 视频 过滤器的组合transposevflip正确hflip旋转视频。

于 2012-05-11T19:10:51.957 回答
2

较新的 ffmpeg 返回一个rotate:元数据标头(当您运行时ffmpeg -i),它指定视频旋转的角度,因此您不必自己解析旋转矩阵,只需使用 ffmpeg 的过滤器旋转视频即可。

例如,如果 ffmpeg 输出rotate: 90那么你会运行类似:

ffmpeg -y -i rotated_vid.mov -vf "transpose=1" correct_video.avi

于 2012-05-14T22:18:21.537 回答
0

我使用一个名为 mediainfo 的程序,它显示方向角度并输入 ffmpeg 选项:

-vf %旋转%

ffmpeg 在 95% 的情况下理解方向,但在某些情况下,在某些硬件中......

于 2012-05-11T19:17:21.440 回答