PythonでMP4動画からサムネイル画像を取得する方法【Mac対応・OpenCV使用】

動画ファイル(MP4)からサムネイル画像を取得したいとき、PythonとOpenCVを使えば簡単に静止画を切り出すことができます。この記事では、macOS上での環境構築から実際のPythonコードまでをステップバイステップで解説します。


目次

  1. 使用ツールとライブラリ
  2. 環境準備(macOS)
  3. サンプル動画のダウンロード
  4. Pythonスクリプトの紹介
  5. 出力結果の確認
  6. トラブルシューティング

1. 使用ツールとライブラリ

  • Python 3.9+
  • OpenCV (opencv-python)
  • macOS上で動作確認済み

2. 環境準備(macOS)

Pythonのバージョン確認

python3 --version

OpenCVのインストール

pip3 install opencv-python

3. サンプル動画のダウンロード

以下のコマンドでサンプルMP4動画を取得します:

curl -O https://filesamples.com/samples/video/mp4/sample_640x360.mp4

または、Google提供の以下のようなテスト動画も利用可能です:

curl -o BigBuckBunny.mp4 https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4

4. Pythonスクリプトの紹介

以下のPythonスクリプトでは、MP4動画の1秒目のフレームを抽出し、JPEG画像として保存します。

import cv2
import os

# 動画ファイルのパス(カレントディレクトリにあるファイル)
video_path = os.path.expanduser("sample_640x360.mp4")

# サムネイル画像の保存先
thumbnail_path = os.path.expanduser("~/thumbnail.jpg")

# 動画を読み込む
cap = cv2.VideoCapture(video_path)

# 1000ミリ秒(1秒目)にシーク
cap.set(cv2.CAP_PROP_POS_MSEC, 1000)

# フレームを1枚取得
success, frame = cap.read()

if success:
    cv2.imwrite(thumbnail_path, frame)
    print("✅ サムネイル画像を保存しました:", thumbnail_path)
else:
    print("❌ フレームの取得に失敗しました。")

cap.release()

5. 出力結果の確認

スクリプト実行後、~/thumbnail.jpg に画像ファイルが生成されます。画像ビューアなどで確認できます。


6. トラブルシューティング

症状対処方法
cv2 が見つからないpip3 install opencv-python を再実行
フレームの取得に失敗しました と表示される動画ファイルが存在するか、フォーマットが正しいかを確認
.mov などMP4以外の形式事前にFFmpegなどでMP4へ変換推奨

おわりに

動画から特定の時間のフレームを抽出してサムネイルを生成する処理は、機械学習やメディア管理ツールにも応用できます。OpenCVとPythonの組み合わせで、簡潔かつ柔軟に実装できるのが大きなメリットです。

より高度な使い方として、複数の時間点から連続して画像を取得する方法や、Webアプリケーションへの組み込み(Flaskなど)も可能です。

コメント

タイトルとURLをコピーしました