由于某种起因发明ffmpeg处置视频扭转这个特殊好玩,记载一下,为了演示后果还特地做了个字母小视频(abc.mp4),前面不贴GIF了,眼快闪瞎啦。
ffmpeg -vf
-vf指令是一些简略的视频过滤器。
顺时针扭转90°
ffmpeg -i abc.mp4 -vf "transpose=1" abc-r90.mp4
后果
逆时针扭转90°
ffmpeg -i abc.mp4 -vf "transpose=2" abc-r270.mp4
后果
程度翻转
ffmpeg -i abc.mp4 -vf hflip hflip.mp4
后果
垂直翻转
ffmpeg -i abc.mp4 -vf vflip vflip.mp4
后果
逆时针扭转90°后再程度翻转
ffmpeg -i abc.mp4 -vf "transpose=3" abc-trsps3.mp4
等效于
ffmpeg -i abc.mp4 -vf "transpose=2,hflip" r270hf.mp4
后果
顺时针扭转90°后再程度翻转
也能够懂得为程度翻转后逆时针扭转90°
ffmpeg -i abc.mp4 -vf "transpose=0" abc-trsps0.mp4
等效于
ffmpeg -i abc.mp4 -vf "transpose=1,hflip" r90hf.mp4
后果
扭转180°
直接让右旋2次
ffmpeg -i abc.mp4 -vf "transpose=1,transpose=1" r180.mp4
后果
顺时针扭转45°
应用rotate停止扭转,不转变源图像辨别率,配景为玄色。
ffmpeg -i abc.mp4 -vf rotate=PI/4 rotate45.mp4
后果
MP4文件的 rotate 扭转属性
任务中发明手机拍出来的竖屏视频导出到电脑上播放也是竖屏,然而用种种软件辨认出来确实是横屏尺寸(ffmpeg也是),甚是惊讶。
厥后才发明本来mp4文件有个 rotate 扭转 属性,惯例播放器播放的时间能辨认这个属性,主动转为竖屏。
如许的话在现实应用中会呈现一些成绩,比方mp4解复用或许转换为mkv等格局后,这个属性就会丧失,再把这个视频传出去就会酿成一下躺下的横屏视频。 于是就在网上搜到了下面扭转视频的下令,感到好玩就记载一下。
本认为把手机拍出来的这个视频用下面的-vf "transpose=1"下令右旋一下就好了,成果发明转换后的酿成向右躺下的横屏视频了!
本来ffmpeg扭转的时间能辨认这个 Rotation 属性,假如Rotation=90就会以为是竖屏,而后再右旋。
如许的话能够先想措施把这个Rotation 属性去失落,再停止右转90°,即
ffmpeg -i VID_000.mp4 -metadata:s:v rotate="0" -c:v copy -c:a copy r0.mp4 ffmpeg -i r0.mp4 -vf "transpose=1" out.mp4
如许的话,Rotation 属性也没了,酿成了真正的竖屏视频了。
-vf "transpose=1"下令会辨认原文件的Rotation 属性,然而转换后的文件是不这个属性的,以是也能够把这个文件 右旋再左旋,即便用了两次滤波器,可能盘算量会年夜那么一丢丢。
ffmpeg -i VID_000.mp4 -vf "transpose=1,transpose=2" out.mp4
总结
手机拍出来的mp4视频无论横着拍仍是竖着拍,都是横屏尺寸,(试过多少个品牌的安卓机是如许),手机遇依据拍摄时角度设置rotate 扭转 属性,个别为90°(畸形竖拍)或许270°(手机倒着拍)。播放器播放时会辨认rotate 属性就行响应扭转表现。
ffmpeg -i input -metadata:s:v rotate="90" -c:v copy -c:a copy out.mp4能够设置视频的rotate 扭转 属性,只影响播放表现后果,不转变现实尺寸,此下令能够不重编码音视频。
ffmpeg -vf 会应用视频过滤器 切实在实地 扭转或许翻转视频图像,这个环节会重编码视频。此过滤器同样实用于一般图片文件处置。