一、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