【Python】フォルダ内の動画ファイルを自動でリサイズ・圧縮する方法

【Python】フォルダ内の動画ファイルを自動でリサイズ・圧縮する方法 Python

動画を大量に扱うと、ファイルサイズの肥大化や解像度のばらつきが問題になることがあります。この記事では、Pythonを使ってフォルダ内の動画ファイルを一括でリサイズ・圧縮する方法を解説します。SNS投稿用やアーカイブ用に最適化する際にも役立ちます。

必要なライブラリとツール

動画の変換・圧縮には高機能なツール「FFmpeg」を使用し、Pythonからはsubprocessモジュールを通じてFFmpegを操作します。

Windows
公式サイトからダウンロードし、パスを通す

Mac(Homebrew使用)
brew install ffmpeg

スクリプトの概要

  • 指定フォルダ内の動画ファイル(例:MP4)を走査
  • FFmpegを使って1280×720にリサイズし、ビットレートを指定して圧縮
  • 出力先フォルダに変換後の動画を保存

実装コード例

import os
import subprocess

# 入力と出力フォルダのパス
input_folder = 'input_videos'
output_folder = 'output_videos'

# 出力フォルダが存在しない場合は作成
os.makedirs(output_folder, exist_ok=True)

# 処理対象とする拡張子
target_extensions = ('.mp4', '.mov', '.avi', '.mkv')

# 変換処理
for filename in os.listdir(input_folder):
    if filename.lower().endswith(target_extensions):
        input_path = os.path.join(input_folder, filename)
        output_path = os.path.join(output_folder, filename)

        # FFmpegコマンド
        command = [
            'ffmpeg',
            '-i', input_path,
            '-vf', 'scale=1280:720',       # 解像度を1280x720にリサイズ
            '-b:v', '1M',                  # ビデオビットレート 1Mbps
            '-c:a', 'aac',                 # 音声コーデックをAACに
            '-b:a', '128k',                # 音声ビットレート
            '-y',                          # 上書き確認を省略
            output_path
        ]

        print(f'変換中: {filename}')
        subprocess.run(command)
        print(f'保存完了: {output_path}')

補足:画質とファイルサイズの調整

  • scale=1280:720:解像度を指定。-1を使えば縦横比を保持できます(例:scale=1280:-1)。
  • -b:v 1M:ビットレートで圧縮率を調整。1Mは1Mbps、画質とサイズのバランスに応じて調整してください。
  • フレームレートを下げることで、さらなる圧縮も可能です(例:-r 24を追加)。

まとめ

PythonとFFmpegを組み合わせれば、動画ファイルの一括リサイズ・圧縮が簡単に実現できます。日々の動画管理やSNSアップロード前の最適化作業などに活用してみてください。