Clawdbot Skills

Video Frames Skill - ffmpegによる動画フレーム抽出機能

Clawdbot向けVideo Frames Skillを利用して、動画ファイルから静止画フレームを抽出し、サムネイル生成や映像分析を実現する方法を解説します。

投稿者: AI Tools Hub
Clawdbot ffmpeg 動画処理 フレーム抽出 サムネイル生成 映像分析

Video Frames Skill - ffmpegによる動画フレーム抽出機能

動画コンテンツから特定のフレームを静止画として抽出する作業は、サムネイル生成、シーン分析、品質検証など、さまざまな用途で必要とされる。手動でのスクリーンショット取得は非効率であり、大量の動画を処理する場合には自動化が不可欠である。

Clawdbot向けVideo Frames Skillは、ffmpeg(オープンソースの動画処理ツール)を活用し、コマンドラインから動画の任意のフレームを抽出する機能を提供する。本記事では、その技術仕様、実装方法、実用例について解説する。

選定基準

本記事の執筆にあたり、以下の基準でSkillを評価した。


技術的仕様

システム要件

Video Frames Skillは以下の環境で動作する。

  • 必須コマンド: ffmpeg
  • 対応プラットフォーム: Linux、macOS、Windows(WSL含む)

インストール方法

ffmpegは、各プラットフォームのパッケージマネージャーを使用してインストールする。

macOS(Homebrew):

brew install ffmpeg

Ubuntu/Debian:

sudo apt update
sudo apt install ffmpeg

Windows(Chocolatey):

choco install ffmpeg

対応動画形式

ffmpegは、以下を含む多数の動画形式に対応している。

  • MP4、MOV、AVI、MKV
  • WebM、FLV、WMV
  • MPEG、3GP、VOB

主要機能

最初のフレームの抽出

動画の冒頭フレームをサムネイルとして保存する。

{baseDir}/scripts/frame.sh /path/to/video.mp4 --out /tmp/frame.jpg

デフォルトでは、JPEG形式で保存される。

特定のタイムスタンプからの抽出

動画の任意の時点(例: 10秒時点)のフレームを抽出する。

{baseDir}/scripts/frame.sh /path/to/video.mp4 --time 00:00:10 --out /tmp/frame-10s.jpg

タイムスタンプは HH:MM:SS 形式で指定する。

高品質画像の抽出(PNG)

UI解析や高精度の画像処理が必要な場合、PNG形式での保存が推奨される。

{baseDir}/scripts/frame.sh /path/to/video.mp4 --time 00:01:30 --out /tmp/frame-90s.png

JPEG vs PNG の選択基準:

  • JPEG: ファイルサイズが小さく、共有やプレビューに適する
  • PNG: 可逆圧縮で画質が高く、テキストやUIの解析に適する

実装例

例1: 動画全体から等間隔でフレームを抽出

#!/bin/bash
# 10秒ごとにフレームを抽出

VIDEO_FILE="/path/to/video.mp4"
OUTPUT_DIR="/tmp/frames"
INTERVAL=10  # 秒

mkdir -p "$OUTPUT_DIR"

# 動画の長さを取得
DURATION=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$VIDEO_FILE")
DURATION_INT=${DURATION%.*}

for ((t=0; t<DURATION_INT; t+=INTERVAL)); do
  timestamp=$(printf "%02d:%02d:%02d" $((t/3600)) $((t%3600/60)) $((t%60)))
  output_file="$OUTPUT_DIR/frame-${t}s.jpg"
  
  {baseDir}/scripts/frame.sh "$VIDEO_FILE" --time "$timestamp" --out "$output_file"
  echo "Extracted frame at $timestamp -> $output_file"
done

例2: サムネイル画像の自動生成(バッチ処理)

#!/bin/bash
# ディレクトリ内の全動画からサムネイルを生成

VIDEO_DIR="/videos"
THUMBNAIL_DIR="/thumbnails"

mkdir -p "$THUMBNAIL_DIR"

for video in "$VIDEO_DIR"/*.{mp4,mov,avi}; do
  if [ -f "$video" ]; then
    filename=$(basename "$video")
    name="${filename%.*}"
    
    {baseDir}/scripts/frame.sh "$video" --time 00:00:05 --out "$THUMBNAIL_DIR/${name}.jpg"
    echo "Thumbnail created: ${name}.jpg"
  fi
done

例3: 動画の品質チェック用のサンプルフレーム抽出

#!/bin/bash
# 先頭、中間、末尾のフレームを抽出して品質確認

VIDEO_FILE="/path/to/video.mp4"
OUTPUT_DIR="/tmp/quality-check"

mkdir -p "$OUTPUT_DIR"

# 動画の長さを取得
DURATION=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$VIDEO_FILE")
DURATION_INT=${DURATION%.*}
MID_TIME=$((DURATION_INT / 2))

# 先頭フレーム
{baseDir}/scripts/frame.sh "$VIDEO_FILE" --time 00:00:00 --out "$OUTPUT_DIR/start.png"

# 中間フレーム
mid_timestamp=$(printf "%02d:%02d:%02d" $((MID_TIME/3600)) $((MID_TIME%3600/60)) $((MID_TIME%60)))
{baseDir}/scripts/frame.sh "$VIDEO_FILE" --time "$mid_timestamp" --out "$OUTPUT_DIR/middle.png"

# 末尾フレーム(最後から5秒前)
end_time=$((DURATION_INT - 5))
end_timestamp=$(printf "%02d:%02d:%02d" $((end_time/3600)) $((end_time%3600/60)) $((end_time%60)))
{baseDir}/scripts/frame.sh "$VIDEO_FILE" --time "$end_timestamp" --out "$OUTPUT_DIR/end.png"

echo "Quality check frames saved to $OUTPUT_DIR"

例4: 動画シーンの変化検出用フレーム抽出

#!/bin/bash
# 1秒ごとにフレームを抽出し、画像認識AIで分析

VIDEO_FILE="/path/to/video.mp4"
OUTPUT_DIR="/tmp/scene-analysis"

mkdir -p "$OUTPUT_DIR"

DURATION=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$VIDEO_FILE")
DURATION_INT=${DURATION%.*}

for ((t=0; t<DURATION_INT; t+=1)); do
  timestamp=$(printf "%02d:%02d:%02d" $((t/3600)) $((t%3600/60)) $((t%60)))
  output_file="$OUTPUT_DIR/frame-${t}.jpg"
  
  {baseDir}/scripts/frame.sh "$VIDEO_FILE" --time "$timestamp" --out "$output_file"
done

echo "Scene analysis frames saved to $OUTPUT_DIR"
# 後続処理: 画像認識AIでシーン分類

例5: 動画プレビュー用のコンタクトシート生成

#!/bin/bash
# 6x6グリッドでサムネイルを並べたコンタクトシートを作成

VIDEO_FILE="/path/to/video.mp4"
OUTPUT_DIR="/tmp/contact-sheet"
GRID_SIZE=36  # 6x6

mkdir -p "$OUTPUT_DIR"

DURATION=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$VIDEO_FILE")
DURATION_INT=${DURATION%.*}
INTERVAL=$((DURATION_INT / GRID_SIZE))

for ((i=0; i<GRID_SIZE; i++)); do
  t=$((i * INTERVAL))
  timestamp=$(printf "%02d:%02d:%02d" $((t/3600)) $((t%3600/60)) $((t%60)))
  output_file="$OUTPUT_DIR/frame-${i}.jpg"
  
  {baseDir}/scripts/frame.sh "$VIDEO_FILE" --time "$timestamp" --out "$output_file"
done

# ImageMagick等で6x6グリッド画像に結合
montage "$OUTPUT_DIR"/frame-*.jpg -tile 6x6 -geometry 200x150+2+2 /tmp/contact-sheet.jpg
echo "Contact sheet created: /tmp/contact-sheet.jpg"

ユースケース

動画サムネイルの自動生成

動画共有プラットフォームやコンテンツ管理システムにおいて、アップロードされた動画から自動的にサムネイル画像を生成する用途。

映像品質の検証

エンコード処理後の動画について、複数のフレームを抽出して画質や色味を確認する用途。ブロックノイズや色ズレ等の問題を早期に発見できる。

シーン分析・コンテンツ分類

機械学習モデルによる画像認識と組み合わせて、動画内のシーン(風景、人物、テキスト等)を自動分類する用途。

教育・トレーニング資料の作成

講義動画やチュートリアル動画から重要なシーンを抽出し、スライド資料や配布資料に活用する用途。

監視カメラ映像の分析

セキュリティカメラの録画映像から定期的にフレームを抽出し、異常検知や人物追跡に活用する用途。


制限事項・セキュリティ考慮事項

処理時間

動画ファイルのサイズやコーデックによって、フレーム抽出にかかる時間は変動する。4K動画や高ビットレート動画では、数秒程度の処理時間が必要となる場合がある。

ディスクスペース

大量のフレームを抽出する場合、出力画像の総容量がディスク容量を圧迫する可能性がある。PNG形式は特にファイルサイズが大きくなるため、ストレージの空き容量に注意する必要がある。

コーデックの対応状況

ffmpegは多数のコーデックに対応しているが、一部の独自形式(ProRes RAW、H.266/VVC等)は追加のライブラリやビルドオプションが必要となる場合がある。

著作権とプライバシー

動画ファイルが第三者の著作物や個人情報を含む場合、フレーム抽出および保存には適切な権利処理が必要。特に顔認識や監視カメラ映像の処理には、プライバシー保護法令(GDPR、個人情報保護法等)の遵守が求められる。

精度の限界

フレーム抽出は指定されたタイムスタンプに最も近いキーフレームを取得する仕組みであるため、厳密なタイムスタンプとは若干のズレが生じる可能性がある。


参考リンク


本記事の情報は2026年2月15日時点のものです。各ツールの機能や仕様は変更される可能性があります。最新情報は各公式サイトをご確認ください。

この記事をシェア

人気記事

Comparison

ChatGPT(OpenAI)とClaude(Anthropic)の機能比較 2026年版。コーディング・長文解析・コスト・API料金の違いを検証

ChatGPT(GPT-4o/o3)とClaude(Sonnet 4.6/Opus 4.5)を2026年時点の最新情報で比較する。コーディング能力、長文処理、日本語品質、API料金、無料プランの違いをSWE-benchなどのベンチマーク結果とともに解説する。

続きを読む →
opinion

【2026年2月20日 所感】「AIがコードを書く」は仮説から現実になった——しかし私たちはその意味をまだ消化できていない

2026年2月20日に観測したコーディングエージェント関連ニュースの総括と所感。Anthropicの自律性研究、cmux、MJ Rathbunのエージェント事故、HN「外骨格 vs チーム」論争、Stripe Minions週1000件PR、Taalas 17k tokens/sec——朝から夜までの流れを通じて見えてきた「AIがコードを書く時代」の実相を考察する。

続きを読む →
tool

868のスキルをnpx 1コマンドで——「Antigravity Awesome Skills」が主要AIコーディングエージェントの共通スキル基盤になりつつある

Claude Code・Gemini CLI・Codex CLI・Cursor・GitHub Copilotなど主要AIコーディングアシスタントを横断する868以上のスキルライブラリ「Antigravity Awesome Skills」(v5.4.0)を詳細分析。Anthropic・Vercel・OpenAI・Supabase・Microsoftの公式スキルを統合した設計思想、ロール別バンドル・ワークフロー機能、SKILL.mdによる相互運用性のアーキテクチャを解説する。

続きを読む →

他のAIツールも探す

生産性、創造性、イノベーションのための60以上のAIツールの厳選ディレクトリをご覧ください。

0 tools selected