我一直试图弄清楚如何旋转视频与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.

拥有vflip和hflip的选项很棒,但它们不能让我去我需要去的地方。我需要至少能够将视频旋转90度。270度也是个不错的选择。旋转选项去哪儿了?


当前回答

我遇到了与OP相同的问题,得到了No such filter: 'rotate'错误,即使旋转过滤器显示为支持——filters。我需要旋转一个任意的角度,所以目前所有的答案都是旋转90度的倍数都不成立。我发现-vf的语法要求符号周围有空格,这与官方文档相反。

改变:

vf的旋转= 1.23

to

-vf 'rotate = 1.23'让它为我工作。

完整的例子:

Ffmpeg.exe -i input.mp4 -vf "rotate = 3.0, crop = 1920:1080"输出.mp4

这是ffmpeg 4.3.2版本

其他回答

由于ffmpeg转置命令非常慢,使用下面的命令顺时针旋转视频90度。

快速命令(不编码)-

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

对于完整的视频编码(Slow命令,进行编码)

ffmpeg -i inputFile -vf "transpose=1" -c:a copy outputFile

智能手机:录制了一段垂直视频

想把它发送到一个网站侧它是90°向左(逆时针,横向格式)嗯。

Ffmpeg -i input.mp4 -vf "rotate=0" output.mp4

它。我又得到了垂直格式

Debian buster: ffmpeg—版本 ffmpeg版本4.1.4-1~deb10u1版权(c) 2000-2019 ffmpeg开发者

我遇到了与OP相同的问题,得到了No such filter: 'rotate'错误,即使旋转过滤器显示为支持——filters。我需要旋转一个任意的角度,所以目前所有的答案都是旋转90度的倍数都不成立。我发现-vf的语法要求符号周围有空格,这与官方文档相反。

改变:

vf的旋转= 1.23

to

-vf 'rotate = 1.23'让它为我工作。

完整的例子:

Ffmpeg.exe -i input.mp4 -vf "rotate = 3.0, crop = 1920:1080"输出.mp4

这是ffmpeg 4.3.2版本

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

不管用,即使是最新的消息来源…

必须改变顺序:

ffmpeg -i input.mp4 -vf vflip output.mp4

工作正常

不幸的是,Ubuntu版本的ffmpeg支持视频过滤器。

您需要使用avidemux或其他编辑器来实现相同的效果。

在编程方式上,推荐使用mencoder。