方法1:使用 transpose
滤镜(推荐)
ffmpeg -i input.mp4 -vf "transpose=2" -c:a copy output.mp4
参数解析:
transpose=2
:逆时针旋转90°(常用选项):0
:逆时针90°+垂直翻转1
:顺时针90°2
:逆时针90°3
:顺时针90°+垂直翻转
-c:a copy
:直接复制音频,避免重新编码。
输出结果:
原视频
620×1280
→ 旋转后1280×620
(横屏)。
方法2:使用 rotate
参数(部分FFmpeg版本支持)
ffmpeg -i input.mp4 -vf "rotate=-90*PI/180" -c:a copy output.mp4
rotate=-90*PI/180
:逆时针旋转90°(弧度制)。需注意:某些FFmpeg版本可能不支持直接旋转,建议优先用
transpose
。
方法3:旋转并自动适应横屏比例(如16:9)
如果旋转后希望强制调整为标准横屏比例(如1280×720),可结合 scale
和 pad
:
ffmpeg -i input.mp4 -vf "transpose=2,scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2" -c:a copy output.mp4
效果:
先逆时针旋转90°(
620×1280
→1280×620
)。缩放到高度720,宽度按比例计算(
1280*(720/620)≈1486
)。左右填充黑边至
1280×720
(标准16:9横屏)。
常见问题
旋转后画面被裁剪?
检查原视频是否有黑边,可先用
crop
去除多余边缘:ffmpeg -i input.mp4 -vf "crop=600:1280:10:0,transpose=2" -c:a copy output.mp4
旋转后视频方向元数据未更新?
某些播放器可能忽略旋转,需强制修正:
ffmpeg -i input.mp4 -vf "transpose=2" -metadata:s:v rotate=0 -c:a copy output.mp4
总结命令
需求 | 命令 |
---|---|
单纯逆时针旋转90° | ffmpeg -i input.mp4 -vf "transpose=2" -c:a copy output.mp4 |
旋转+适配16:9横屏 | ffmpeg -i input.mp4 -vf "transpose=2,scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2" -c:a copy output.mp4 |
旋转+去除原黑边 | ffmpeg -i input.mp4 -vf "crop=600:1280:10:0,transpose=2" -c:a copy output.mp4 |
按需选择即可!
原文件如下图:
转换后画面: