当我尝试在我的应用程序中上传从我的iPhone捕获的视频时,服务器执行从.mov到.mp4的转换,以便可以在其他平台上播放。然而,问题是,当我拍摄视频(在纵向),它被转换(使用ffmpeg),然后从服务器播放,它似乎是旋转的。有什么想法吗?
发布于 2012-02-23 15:56:54
根据您使用的ffmpeg版本和编译方式,可以使用以下方法之一...
ffmpeg -vf "transpose=1" -i input.mov output.mp4
...or...
ffmpeg -vfilters "rotate=90" -i input.mov output.mp4
发布于 2015-06-18 02:11:01
FFMPEG更改了默认行为,使用旋转元数据in 2015自动旋转视频源。这是作为v2.7发布的。
如果您的ffmpeg版本是v2.7或更高版本,但您的旋转元数据不受尊重,则问题可能是您使用的是基于元数据的自定义旋转。这将导致相同的逻辑被应用两次,改变或取消旋转。
除了删除自定义旋转(推荐)外,还可以使用-noautorotate
关闭自动旋转。
ffmpeg -noautorotate -i input.mp4
...
这在一些旧版本中也是有效的。
发布于 2012-02-24 04:39:46
为了完整起见,发生这种情况的原因是iPhones实际上只捕获了一个固定方向的视频。然后,测量到的方向被记录在苹果特定的元数据中。
其效果是,Quicktime播放器在回放期间读取元数据并将视频旋转到正确的方向,但其他软件(例如,VLC)不这样做,并将其显示为在实际编解码器数据中定向。
这就是为什么rotate=90
(或vflip
,或transpose
等)对某些人有效,但对其他人无效。根据相机在录制过程中的手持方式,所需的旋转可能是90度、180度,甚至270度。在不读取元数据的情况下,您只是在猜测需要多少旋转,修复一个视频的更改对另一个视频将失败。
https://stackoverflow.com/questions/9408542
复制相似问题