脚本如何批量旋转视频方向

wen 实用脚本 1

本文目录导读:

脚本如何批量旋转视频方向

  1. 使用 FFmpeg(最强大、跨平台)
  2. 使用 HandBrake(图形界面,Windows/Mac/Linux)
  3. 使用 Python + moviepy(更灵活)
  4. 使用专业软件(Windows)
  5. 批量修复视频方向元数据
  6. 注意事项
  7. 推荐方案

使用 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)

  1. 下载安装 HandBrake
  2. 使用命令行批量处理:
# 安装 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

  1. 选择"视频" → "所有转MP4"
  2. 添加文件 → 点击"输出配置"
  3. 在"旋转"选项中选择角度
  4. 开始转换

批量修复视频方向元数据

有时视频只是元数据错误,实际数据正确:

# 使用 exiftool 修复方向
exiftool -overwrite_original -Rotation=0 *.mp4

注意事项

  1. 备份文件:旋转会重新编码,可能损失画质
  2. 测试先:先用一个文件测试旋转效果
  3. 性能考虑:大量视频用FFmpeg最快
  4. 音频处理:确保音频流正确复制或重新编码

推荐方案

  • 简单批量:使用 FFmpeg shell 脚本
  • 需要预览:使用 HandBrake 图形界面
  • 需要复杂处理:使用 Python + moviepy

选择适合你技术水平和需求的方法即可。

抱歉,评论功能暂时关闭!