您的位置:

ffmpeg旋转详解

一、ffmpeg旋转视频

什么是ffmpeg旋转视频?通过修改视频中每一帧图像的角度,达到整个视频的旋转效果,是对视频方向进行变更的操作。

常用的旋转角度有90度、180度、270度和任意角度。

在ffmpeg中旋转视频通过旋转输入的码流来完成,修改视频中每一帧图像的角度实现整个视频的旋转效果。

//旋转90度
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4

//旋转180度
ffmpeg -i input.mp4 -vf "transpose=2,transpose=2" output.mp4

//旋转270度
ffmpeg -i input.mp4 -vf "transpose=2" output.mp4

//任意角度旋转
ffmpeg -i input.mp4 -vf "rotate=45*(PI/180),transpose=2" output.mp4

二、ffmpeg旋转视频方法

ffmpeg旋转视频有两种方法:硬旋转和软旋转。

硬旋转是通过修改码流中视频的width和height来实现原视频的旋转操作,修改后的视频信息与原视频相同,没有额外的处理操作。

软旋转是通过对输入视频进行解码,再旋转图像信息得到旋转后的视频帧,之后在进行编码,最后合成旋转后的视频。

相比硬旋转,软旋转具有更好的效果,但是也需要更多的处理时间与计算资源。

三、ffmpeg旋转z轴

ffmpeg旋转z轴,即绕z轴旋转视频,可以通过修改-metadata参数下的rotate来实现。

//绕z轴旋转90度
ffmpeg -i input.mp4 -metadata:s:v:0 rotate=90 -codec copy output.mp4

四、ffmpeg旋转命令

在ffmpeg中,通过-vf参数可以使用旋转命令对视频进行旋转操作,使用transpose命令可以进行简单的旋转90度或270度。

//旋转90度
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4

//旋转180度
ffmpeg -i input.mp4 -vf "transpose=2,transpose=2" output.mp4

//旋转270度
ffmpeg -i input.mp4 -vf "transpose=2" output.mp4

//任意角度旋转
ffmpeg -i input.mp4 -vf "rotate=45*(PI/180),transpose=2" output.mp4

五、ffmpeg旋转图片

使用ffmpeg旋转图片与旋转视频操作类似,同样通过transpose、vflip等命令对图片进行操作。

//旋转90度
ffmpeg -i input.jpg -vf "transpose=1" output.jpg

//旋转180度
ffmpeg -i input.jpg -vf "vflip,hflip" output.jpg

//旋转270度
ffmpeg -i input.jpg -vf "transpose=2" output.jpg

//任意角度旋转
ffmpeg -i input.jpg -vf "rotate=45*(PI/180)" output.jpg

六、ffmpeg旋转裁黑边

旋转视频时,可能会出现黑边的现象。通过-crop参数可以进行裁剪操作,使旋转后的视频不再有黑边。

//旋转90度,并裁剪黑边
ffmpeg -i input.mp4 -vf "transpose=1,crop=h=in_w:w=in_h" output.mp4

七、ffmpeg旋转180度

旋转180度可以通过叠加两次transpose命令实现。

//旋转180度
ffmpeg -i input.mp4 -vf "transpose=2,transpose=2" output.mp4

八、ffmpeg旋转视频90度

旋转90度可以通过使用transpose命令中的1来实现。如果使用1则是逆时针旋转90度,如果使用2则是顺时针旋转90度。

//逆时针旋转90度
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4

//顺时针旋转90度
ffmpeg -i input.mp4 -vf "transpose=2" output.mp4

九、ffmpeg旋转视频大小小了

旋转视频后,如果出现视频大小变小的现象,这是由于旋转后的视频边缘出现了黑边所导致。可以通过使用-crop参数来裁剪黑边,从而保留原视频大小。

//旋转90度,并裁剪黑边
ffmpeg -i input.mp4 -vf "transpose=1,crop=h=in_w:w=in_h" output.mp4