動画ファイル(MP4)からサムネイル画像を取得したいとき、PythonとOpenCVを使えば簡単に静止画を切り出すことができます。この記事では、macOS上での環境構築から実際のPythonコードまでをステップバイステップで解説します。
目次
- 使用ツールとライブラリ
- 環境準備(macOS)
- サンプル動画のダウンロード
- Pythonスクリプトの紹介
- 出力結果の確認
- トラブルシューティング
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など)も可能です。
コメント