用FFmpeg旋转视频

我一直想弄清楚如何用FFmpeg旋转视频。 我正在使用纵向模式拍摄的iPhone视频。 我知道如何使用MediaInfo(优秀的图书馆,顺便说一句)来确定当前的旋转角度,但我现在被困在FFmpeg上。

从我读过的,你需要使用的是一个vfilter选项。 根据我所看到的,它应该是这样的:

ffmpeg -vfilters "rotate=90" -i input.mp4 output.mp4

但是,我无法得到这个工作。 首先, -vfilters不再存在,它现在只是-vf 。 其次,我得到这个错误:

No such filter: 'rotate'
Error opening filters!

据我所知,我有一个全功能的FFmpeg版本。 运行ffmpeg -filters显示了这一点:

Filters:
anull            Pass the source unchanged to the output.
aspect           Set the frame aspect ratio.
crop             Crop the input video to x:y:width:height.
fifo             Buffer input images and send them when they are requested.
format           Convert the input video to one of the specified pixel formats.
hflip            Horizontally flip the input video.
noformat         Force libavfilter not to use any of the specified pixel formats
 for the input to the next filter.
null             Pass the source unchanged to the output.
pad              Pad input image to width:height[:x:y[:color]] (default x and y:
 0, default color: black).
pixdesctest      Test pixel format definitions.
pixelaspect      Set the pixel aspect ratio.
scale            Scale the input video to width:height size and/or convert the i
mage format.
slicify          Pass the images of input video on to next video filter as multi
ple slices.
unsharp          Sharpen or blur the input video.
vflip            Flip the input video vertically.
buffer           Buffer video frames, and make them accessible to the filterchai
n.
color            Provide an uniformly colored input, syntax is: [color[:size[:ra
te]]]
nullsrc          Null video source, never return images.
nullsink         Do absolutely nothing with the input video.

vfliphflip的选项是伟大的,但他们只是不会让我需要去的地方。 我需要能够旋转视频至少90度。 270度将是一个很好的选择。 旋转选项哪里去了?


顺时针旋转90度:

ffmpeg -i in.mov -vf "transpose=1" out.mov

对于您可以传递的转置参数:

0 = 90CounterCLockwise and Vertical Flip (default)
1 = 90Clockwise
2 = 90CounterClockwise
3 = 90Clockwise and Vertical Flip

对于180度-vf "transpose=2,transpose=2"使用-vf "transpose=2,transpose=2"

确保你从这里使用最新的ffmpeg版本(静态构建可以正常工作)。

请注意,这将重新编码音频和视频部分。 通常可以通过使用-c:a copy来复制音频而不用触摸它。 要更改视频质量,请设置比特率(例如,使用-b:v 1M ),或者在需要VBR选项时查看H.264编码指南。

解决方案也是使用这个便捷脚本。


你尝试过transpose吗? 像(从其他答案)

 ffmpeg -i input -vf transpose=2 output

如果您使用的是旧版本,则必须更新ffmpeg才能使用转置功能,因为它已于2011年10月添加。

FFmpeg下载页面提供静态构建,您可以直接执行而无需编译它们。


如果您不想重新编码视频,并且您的播放器可以处理旋转元数据,则可以使用ffmpeg更改元数据中的旋转:

ffmpeg -i input.m4v -metadata:s:v rotate="90" -codec copy output.m4v
链接地址: http://www.djcxy.com/p/95149.html

上一篇: Rotating videos with FFmpeg

下一篇: Maths question about point rotation in .Net