本文目录导读:

- 使用 FFmpeg(最强大、跨平台)
- 使用 HandBrake(图形界面,Windows/Mac/Linux)
- 使用 Python + moviepy(更灵活)
- 使用专业软件(Windows)
- 批量修复视频方向元数据
- 注意事项
- 推荐方案
使用 FFmpeg(最强大、跨平台)
Windows/Mac/Linux 通用
批量旋转当前目录下所有 MP4 文件:
# 1. 安装 FFmpeg
# Windows: 下载 exe 文件并添加到 PATH
# Mac: brew install ffmpeg
# Linux: sudo apt install ffmpeg
# 2. 创建批处理脚本
# Windows (batch.bat)
for %%i in (*.mp4) do (
ffmpeg -i "%%i" -vf "transpose=1" -c:v libx264 -preset fast -c:a copy "rotated_%%i"
)
# Mac/Linux (rotate.sh)
#!/bin/bash
for file in *.mp4; do
ffmpeg -i "$file" -vf "transpose=1" -c:v libx264 -preset fast -c:a copy "rotated_${file}"
done
旋转参数说明:
transpose=1:顺时针旋转90度transpose=2:逆时针旋转90度transpose=0:顺时针旋转90度并垂直翻转transpose=3:逆时针旋转90度并垂直翻转
更完整的旋转脚本(Python+FFmpeg)
import os
import subprocess
def batch_rotate_videos(input_folder, output_folder, rotation=1):
"""
批量旋转视频
rotation: 1=顺时针90度, 2=逆时针90度
"""
if not os.path.exists(output_folder):
os.makedirs(output_folder)
for filename in os.listdir(input_folder):
if filename.lower().endswith(('.mp4', '.avi', '.mov', '.mkv')):
input_path = os.path.join(input_folder, filename)
name, ext = os.path.splitext(filename)
output_path = os.path.join(output_folder, f"rotated_{name}{ext}")
cmd = [
'ffmpeg',
'-i', input_path,
'-vf', f'transpose={rotation}',
'-c:v', 'libx264',
'-preset', 'fast',
'-c:a', 'copy',
output_path
]
print(f"旋转: {filename}")
subprocess.run(cmd)
# 使用示例
batch_rotate_videos("input_videos", "output_videos", rotation=1)
使用 HandBrake(图形界面,Windows/Mac/Linux)
- 下载安装 HandBrake
- 使用命令行批量处理:
# 安装 HandBrake CLI 后
for file in *.mp4; do
HandBrakeCLI -i "$file" -o "rotated_$file" --rotate=90
done
使用 Python + moviepy(更灵活)
from moviepy.editor import VideoFileClip
import os
def batch_rotate_with_moviepy(input_folder, output_folder, angle=90):
"""
使用moviepy批量旋转视频
angle: 90, 180, 270 度
"""
if not os.path.exists(output_folder):
os.makedirs(output_folder)
for filename in os.listdir(input_folder):
if filename.lower().endswith(('.mp4', '.avi', '.mov')):
input_path = os.path.join(input_folder, filename)
output_path = os.path.join(output_folder, f"rotated_{filename}")
try:
clip = VideoFileClip(input_path)
rotated = clip.rotate(angle)
rotated.write_videofile(output_path, codec='libx264', audio_codec='aac')
clip.close()
rotated.close()
print(f"完成: {filename}")
except Exception as e:
print(f"错误 {filename}: {e}")
# 使用
batch_rotate_with_moviepy("input", "output", 90)
使用专业软件(Windows)
Format Factory
- 选择"视频" → "所有转MP4"
- 添加文件 → 点击"输出配置"
- 在"旋转"选项中选择角度
- 开始转换
批量修复视频方向元数据
有时视频只是元数据错误,实际数据正确:
# 使用 exiftool 修复方向 exiftool -overwrite_original -Rotation=0 *.mp4
注意事项
- 备份文件:旋转会重新编码,可能损失画质
- 测试先:先用一个文件测试旋转效果
- 性能考虑:大量视频用FFmpeg最快
- 音频处理:确保音频流正确复制或重新编码
推荐方案
- 简单批量:使用 FFmpeg shell 脚本
- 需要预览:使用 HandBrake 图形界面
- 需要复杂处理:使用 Python + moviepy
选择适合你技术水平和需求的方法即可。