本文へ移動
cccskills
無料GitHub で公開

ffmpeg-expert

FFmpegを使用したマルチメディア処理の専門スキル。動画・音声の変換、編集、最適化を効率的に支援。フォーマット変換、コーデック選択、フィルタ適用、ストリーミング準備、ハードウェアアクセラレーションなど幅広い操作をカバー。

Use when converting video/audio formats, transcoding codecs, trimming/cutting media, creating GIFs, extracting audio, adding watermarks, preparing for streaming (HLS/DASH), or optimizing media files for web/mobile.

インストール方法を見る

含まれるファイル(8)

  • SKILL.md14.9 KB
  • references/codec_guide.md11.4 KB
  • references/filter_reference.md13.8 KB
  • references/quick_reference.md10.2 KB
  • references/troubleshooting.md13.9 KB
  • scripts/ffprobe_analyzer.py23.0 KB
  • scripts/tests/__init__.py41 B
  • scripts/tests/test_ffprobe_analyzer.py10.8 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

FFmpeg Expert

Overview

FFmpegは、動画・音声の変換、編集、ストリーミング処理を行う最も強力なオープンソースツールです。このスキルは、FFmpegを使用した効率的なマルチメディア処理、最適なコーデック選択、フィルタ適用、パフォーマンス最適化を支援します。

When to Use This Skill

  • 動画フォーマットを変換したい(MP4, WebM, MKV, MOV, AVI等)
  • コーデックを変更したい(H.264, H.265/HEVC, VP9, AV1, ProRes)
  • 動画をトリミング・カットしたい
  • 動画を結合したい
  • 解像度やフレームレートを変更したい
  • 音声を抽出・変換したい(MP3, AAC, FLAC, WAV)
  • GIFを作成したい
  • サムネイルを生成したい
  • ストリーミング用に準備したい(HLS/DASH)
  • ハードウェアアクセラレーションを使いたい(NVENC, QSV, VideoToolbox)
  • フィルタを適用したい(ぼかし、色補正、字幕、ウォーターマーク等)

Example triggers:

  • "この動画をMP4に変換して"
  • "動画から音声だけ抽出したい"
  • "動画をGIFにしたい"
  • "1分から3分までカットして"
  • "H.265で圧縮したい"
  • "HLS用にセグメント化して"
  • "ウォーターマークを追加して"
  • "動画を720pにリサイズして"
  • "ffmpegコマンドを教えて"

Prerequisites

macOS (Homebrew)

# 基本インストール
brew install ffmpeg

# 全オプション付き(推奨)
brew install ffmpeg --with-fdk-aac --with-libvpx --with-libvorbis

Linux (apt/dnf)

# Ubuntu/Debian
sudo apt update && sudo apt install ffmpeg

# Fedora
sudo dnf install ffmpeg

# CentOS/RHEL (EPEL + RPM Fusion必要)
sudo yum install epel-release
sudo yum install ffmpeg

Windows

# Chocolatey
choco install ffmpeg

# Scoop
scoop install ffmpeg

# winget
winget install FFmpeg

確認コマンド

# バージョン確認
ffmpeg -version

# 利用可能なエンコーダ確認
ffmpeg -encoders

# 利用可能なデコーダ確認
ffmpeg -decoders

# ハードウェアアクセラレーション確認
ffmpeg -hwaccels

Workflow

Workflow 1: 動画フォーマット変換

1. 入力ファイル確認(ffprobe) → 2. 出力形式の選択 → 3. コーデック選択 → 4. 変換実行

Step 1: 入力ファイルの確認

# ファイル情報を確認
ffprobe -v error -show_format -show_streams input.mp4

# 簡易確認
ffprobe -v error -show_entries format=duration,size,bit_rate -of default=noprint_wrappers=1 input.mp4

Step 2: 基本変換

# 最もシンプルな変換(自動コーデック選択)
ffmpeg -i input.avi output.mp4

# コーデックをコピー(再エンコードなし・高速)
ffmpeg -i input.mkv -c copy output.mp4

# H.264で変換(汎用性最高)
ffmpeg -i input.avi -c:v libx264 -c:a aac output.mp4

Step 3: 品質調整

# CRF値で品質指定(低い=高品質、推奨: 18-28)
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -c:a aac output.mp4

# プリセットで速度/圧縮効率調整
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset medium output.mp4
# プリセット: ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow

Workflow 2: 動画編集(カット・結合)

1. タイムスタンプ確認 → 2. カット方法の選択 → 3. 実行

カット(トリミング)

# 開始時間から指定時間(再エンコードなし・高速だがキーフレーム依存)
ffmpeg -ss 00:01:00 -i input.mp4 -t 00:02:00 -c copy output.mp4

# 開始時間から終了時間まで
ffmpeg -ss 00:01:00 -i input.mp4 -to 00:03:00 -c copy output.mp4

# 精密カット(再エンコード必要だが正確)
ffmpeg -i input.mp4 -ss 00:01:00 -to 00:03:00 -c:v libx264 -c:a aac output.mp4

結合

# Step 1: ファイルリストを作成
cat > list.txt << EOF
file 'part1.mp4'
file 'part2.mp4'
file 'part3.mp4'
EOF

# Step 2: 結合(同じコーデックなら再エンコードなし)
ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4

Workflow 3: 音声処理

1. 入力確認 → 2. 出力形式・品質設定 → 3. 変換/抽出

音声抽出

# MP3で抽出
ffmpeg -i input.mp4 -vn -acodec mp3 -ab 192k output.mp3

# AACで抽出
ffmpeg -i input.mp4 -vn -acodec aac -ab 256k output.aac

# 無圧縮WAVで抽出
ffmpeg -i input.mp4 -vn output.wav

# 元のコーデックのまま抽出
ffmpeg -i input.mp4 -vn -c:a copy output.m4a

音声操作

# 音声削除
ffmpeg -i input.mp4 -an output.mp4

# 音声置換
ffmpeg -i video.mp4 -i new_audio.mp3 -c:v copy -c:a aac -map 0:v:0 -map 1:a:0 output.mp4

# 音量調整(2倍)
ffmpeg -i input.mp4 -af "volume=2.0" output.mp4

# 音量正規化(ラウドネス基準)
ffmpeg -i input.mp4 -af "loudnorm=I=-16:TP=-1.5:LRA=11" output.mp4

Workflow 4: GIF・画像生成

1. 区間指定 → 2. パレット生成(高品質の場合) → 3. GIF生成

シンプルGIF生成

# 基本GIF(最初の5秒、10fps、幅320px)
ffmpeg -i input.mp4 -t 5 -vf "fps=10,scale=320:-1" output.gif

高品質GIF生成(パレット使用)

# Step 1: パレット生成
ffmpeg -i input.mp4 -t 5 -vf "fps=10,scale=320:-1,palettegen" palette.png

# Step 2: パレット適用してGIF生成
ffmpeg -i input.mp4 -i palette.png -t 5 -lavfi "fps=10,scale=320:-1[x];[x][1:v]paletteuse" output.gif

サムネイル・フレーム抽出

# 指定位置から1フレーム抽出
ffmpeg -ss 00:00:10 -i input.mp4 -frames:v 1 thumbnail.jpg

# 毎秒1フレーム抽出
ffmpeg -i input.mp4 -vf "fps=1" frame_%04d.jpg

# シーン変化で自動抽出
ffmpeg -i input.mp4 -vf "select='gt(scene,0.4)'" -vsync vfr scene_%04d.jpg

Workflow 5: ストリーミング準備

1. 入力分析 → 2. エンコード設定 → 3. HLS/DASH生成

HLS (HTTP Live Streaming) 生成

# 基本HLS
ffmpeg -i input.mp4 -c:v libx264 -c:a aac -hls_time 10 -hls_list_size 0 output.m3u8

# 複数ビットレート(Adaptive Bitrate)
ffmpeg -i input.mp4 \
  -map 0:v -map 0:a -c:v libx264 -c:a aac \
  -b:v:0 5M -s:v:0 1920x1080 \
  -b:v:1 3M -s:v:1 1280x720 \
  -b:v:2 1M -s:v:2 640x360 \
  -var_stream_map "v:0,a:0 v:1,a:1 v:2,a:2" \
  -hls_time 10 -hls_list_size 0 \
  -master_pl_name master.m3u8 \
  stream_%v.m3u8

DASH (Dynamic Adaptive Streaming over HTTP) 生成

ffmpeg -i input.mp4 -c:v libx264 -c:a aac -f dash output.mpd

Video Operations Reference

解像度・スケーリング

# 固定解像度
ffmpeg -i input.mp4 -vf "scale=1920:1080" output.mp4

# アスペクト比維持(幅基準)
ffmpeg -i input.mp4 -vf "scale=1280:-1" output.mp4

# アスペクト比維持(偶数保証)
ffmpeg -i input.mp4 -vf "scale=1280:-2" output.mp4

# 高品質スケーリング(Lanczos)
ffmpeg -i input.mp4 -vf "scale=1920:1080:flags=lanczos" output.mp4

フレームレート変換

# 30fpsに変換
ffmpeg -i input.mp4 -vf "fps=30" output.mp4

# 24fps(映画風)
ffmpeg -i input.mp4 -vf "fps=24" output.mp4

回転・反転

# 時計回り90度
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4

# 反時計回り90度
ffmpeg -i input.mp4 -vf "transpose=2" output.mp4

# 180度回転
ffmpeg -i input.mp4 -vf "transpose=1,transpose=1" output.mp4

# 水平反転
ffmpeg -i input.mp4 -vf "hflip" output.mp4

# 垂直反転
ffmpeg -i input.mp4 -vf "vflip" output.mp4

クロップ

# 中央から640x480をクロップ
ffmpeg -i input.mp4 -vf "crop=640:480" output.mp4

# 左上から640x480をクロップ
ffmpeg -i input.mp4 -vf "crop=640:480:0:0" output.mp4

# 16:9にクロップ
ffmpeg -i input.mp4 -vf "crop=ih*16/9:ih" output.mp4

速度変更

# 2倍速
ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" -af "atempo=2.0" output.mp4

# 0.5倍速(スローモーション)
ffmpeg -i input.mp4 -vf "setpts=2.0*PTS" -af "atempo=0.5" output.mp4

# 4倍速(音声は2回atempo適用)
ffmpeg -i input.mp4 -vf "setpts=0.25*PTS" -af "atempo=2.0,atempo=2.0" output.mp4

Audio Operations Reference

フォーマット変換

# MP3変換(高品質)
ffmpeg -i input.wav -acodec mp3 -ab 320k output.mp3

# AAC変換
ffmpeg -i input.mp3 -acodec aac -ab 256k output.m4a

# FLAC(ロスレス)
ffmpeg -i input.wav -acodec flac output.flac

# Opus(Web/VoIP向け高効率)
ffmpeg -i input.mp3 -acodec libopus -ab 128k output.opus

サンプルレート・チャンネル変換

# サンプルレート変更
ffmpeg -i input.mp3 -ar 44100 output.mp3

# モノラルに変換
ffmpeg -i input.mp3 -ac 1 output.mp3

# ステレオに変換
ffmpeg -i input.mp3 -ac 2 output.mp3

Advanced Operations

ハードウェアアクセラレーション

NVIDIA NVENC (CUDA)

# H.264 NVENC
ffmpeg -hwaccel cuda -i input.mp4 -c:v h264_nvenc -preset p7 output.mp4

# H.265/HEVC NVENC
ffmpeg -hwaccel cuda -i input.mp4 -c:v hevc_nvenc -preset p7 output.mp4

Intel QSV (Quick Sync Video)

# H.264 QSV
ffmpeg -hwaccel qsv -i input.mp4 -c:v h264_qsv -preset veryslow output.mp4

# H.265/HEVC QSV
ffmpeg -hwaccel qsv -i input.mp4 -c:v hevc_qsv output.mp4

Apple VideoToolbox (macOS)

# H.264 VideoToolbox
ffmpeg -i input.mp4 -c:v h264_videotoolbox -b:v 5M output.mp4

# H.265/HEVC VideoToolbox
ffmpeg -i input.mp4 -c:v hevc_videotoolbox -b:v 5M output.mp4

2パスエンコード

# Pass 1
ffmpeg -i input.mp4 -c:v libx264 -b:v 5M -pass 1 -an -f null /dev/null

# Pass 2
ffmpeg -i input.mp4 -c:v libx264 -b:v 5M -pass 2 -c:a aac -b:a 192k output.mp4

ウォーターマーク・オーバーレイ

# 右下にロゴ配置
ffmpeg -i video.mp4 -i logo.png -filter_complex "[1:v]scale=100:-1[logo];[0:v][logo]overlay=W-w-10:H-h-10" output.mp4

# 中央に半透明ロゴ
ffmpeg -i video.mp4 -i logo.png -filter_complex "[1:v]scale=200:-1,format=rgba,colorchannelmixer=aa=0.5[logo];[0:v][logo]overlay=(W-w)/2:(H-h)/2" output.mp4

字幕

# SRT字幕を焼き込み
ffmpeg -i input.mp4 -vf "subtitles=subtitle.srt" output.mp4

# ASS字幕を焼き込み(スタイル保持)
ffmpeg -i input.mp4 -vf "ass=subtitle.ass" output.mp4

# 字幕ストリームとして追加
ffmpeg -i input.mp4 -i subtitle.srt -c copy -c:s mov_text output.mp4

Common Patterns

Pattern 1: Web用最適化

ffmpeg -i input.mp4 \
  -c:v libx264 -crf 23 -preset medium \
  -c:a aac -b:a 128k \
  -movflags +faststart \
  -pix_fmt yuv420p \
  output_web.mp4

Pattern 2: モバイル用最適化

ffmpeg -i input.mp4 \
  -c:v libx264 -crf 26 -preset fast \
  -vf "scale=-2:720" \
  -c:a aac -b:a 96k \
  -movflags +faststart \
  output_mobile.mp4

Pattern 3: アーカイブ用高品質

ffmpeg -i input.mp4 \
  -c:v libx265 -crf 22 -preset slow \
  -c:a flac \
  output_archive.mkv

Pattern 4: SNS投稿用(Instagram/Twitter)

# Instagram(正方形、60秒以内)
ffmpeg -i input.mp4 \
  -t 60 \
  -vf "crop=min(iw\,ih):min(iw\,ih),scale=1080:1080" \
  -c:v libx264 -crf 23 \
  -c:a aac -b:a 128k \
  output_instagram.mp4

# Twitter(16:9推奨)
ffmpeg -i input.mp4 \
  -t 140 \
  -vf "scale=1280:720" \
  -c:v libx264 -crf 23 \
  -c:a aac -b:a 128k \
  output_twitter.mp4

Pattern 5: バッチ処理

# 全MP4をWebM(VP9)に変換
for f in *.mp4; do
  ffmpeg -i "$f" -c:v libvpx-vp9 -crf 30 -b:v 0 -c:a libopus "${f%.mp4}.webm"
done

# ディレクトリ内の動画をサムネイル生成
for f in *.mp4; do
  ffmpeg -ss 00:00:05 -i "$f" -frames:v 1 "${f%.mp4}_thumb.jpg"
done

Best Practices

  1. 入力ファイルを先にffprobeで確認する

    • コーデック、解像度、ビットレートを把握してから変換
  2. コーデックコピー(-c copy)を活用

    • フォーマット変換のみなら再エンコード不要で高速
  3. CRF値で品質を制御する

    • ビットレート指定より品質が安定
    • H.264: 18-28(23がデフォルト)
    • H.265: 22-32(28がデフォルト)
  4. 2パスエンコードで品質を安定させる

    • 特にビットレート制限がある場合に有効
  5. ハードウェアアクセラレーションで高速化

    • 大量の動画処理時に特に効果的
    • ただしソフトウェアエンコードより品質が劣る場合あり
  6. faststart フラグを使用

    • Web配信用MP4には必須(-movflags +faststart)
    • メタデータを先頭に移動してストリーミング開始を高速化
  7. 出力先のディスク容量を確認

    • 大きな動画の変換前に十分な空き容量を確保

Troubleshooting

よくある問題と解決策の詳細は references/troubleshooting.md を参照してください。

主なエラー:

  • "Unknown encoder" → コーデック未インストール、ffmpeg -encoders で確認
  • "height not divisible by 2" → -vf "scale=1280:-2" で偶数に調整
  • カット位置のズレ → -c copy ではキーフレーム依存、精密カットは再エンコード
  • 音ズレ → ファイル間のコーデック/フレームレート統一が必要

Output

実行結果の形式:

  • 分析レポート: Markdownまたは JSON形式でメディアファイル情報を出力
  • 互換性チェック結果: Browser/Mobile互換性の警告・推奨事項
  • エンコードコマンド: 用途別(Web/Mobile/Archive/Streaming)の推奨ffmpegコマンド

Resources

scripts/

  • scripts/ffprobe_analyzer.py: メディアファイルの分析と最適エンコード設定の提案

使用例:

# 基本分析
python scripts/ffprobe_analyzer.py input.mp4

# Web用推奨コマンド付きレポート生成
python scripts/ffprobe_analyzer.py input.mp4 --use-case web --suggest-commands

# JSON形式で出力
python scripts/ffprobe_analyzer.py input.mp4 --format json --output report.json

references/

  • quick_reference.md: よく使うコマンドのチートシート
  • codec_guide.md: コーデック選択ガイド
  • filter_reference.md: フィルタ構文とサンプル
  • troubleshooting.md: トラブルシューティングガイド

assets/

このスキルにはアセットファイルは含まれません。

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

action-status-updater

無料日本語概要

Track and update action item status from natural language updates like 'Seanのメールには返信しておいた' or 'Lu対応予定'. Integrates with daily-comms-ops workflow. Use when managing action items across communication channels.

takusaotome/claude-skills-library92026年10月5日 更新

ai-adoption-consultant

無料日本語概要

AI活用提案の専門コンサルタントスキル。LLM・AIエージェントの活用事例知識を基に、業界別、部門別、シーン別に最適なAI導入提案を行います。システム化、業務改善、効率化を得意とし、具体的な活用事例、期待効果、導入ステップを含む実践的な提案を提供します。Use when proposing AI/LLM adoption strategies for specific industries, departments, or business scenarios.

takusaotome/claude-skills-library92026年10月5日 更新

Generate AI-powered BPO service proposals for Japanese companies in the US market. Use when creating outsourcing proposals with AI service menus, ROI estimation, implementation roadmaps, and bilingual (JA/EN) proposal documents for 在米日系企業向けAI実装.

日本語の概要は準備中です。原文の説明を表示しています。

takusaotome/claude-skills-library92026年10月5日 更新

ai-text-humanizer

無料日本語概要

AI(LLM)が生成した日本語テキストの「AI臭」を検出・診断し、人間らしい文章にリライトするスキル。 Use when: 「AIっぽい文章を直して」「人間らしくリライトして」「AI臭を消して」「この文章をもっと自然にして」 「テキストのAI感を減らして」「機械っぽさを取りたい」 "make this sound more human", "remove AI tone", "humanize this text", "detect if this is AI-generated". 6つのAI特有パターン(視覚的マーカー、単調なリズム、マニュアル的構成、非コミット姿勢、抽象語の濫用、 定型メタファー)を正規表現ベースで検出し、0-100のAI臭スコアを算出。3つの人間化技法 (バランスを崩す・客観を崩す・論理を崩す)でリライトを実行する。 Note: 検出スクリプトは日本語テキスト専用。英語テキストの場合はClaude自身がreferences/を参照して分析・リライトする。

takusaotome/claude-skills-library92026年10月5日 更新

Generate audit-ready internal control design documents from As-Is business process inventories. Produces control IDs, assertion mappings, procedures, SoD analysis, KPIs, materiality thresholds, and implementation roadmaps. Use when building internal controls for new audit engagements, SOX/J-SOX compliance, or process improvement initiatives.

日本語の概要は準備中です。原文の説明を表示しています。

takusaotome/claude-skills-library92026年10月5日 更新

Review audit-related documents (control design documents, bottleneck analyses, requirements definitions, etc.) for quality, scoring them 0-100 with a severity-rated findings list. Use when reviewing audit documents, checking control design quality, or verifying cross-document consistency. Supports documents governed by US GAAP, IFRS, or J-GAAP.

日本語の概要は準備中です。原文の説明を表示しています。

takusaotome/claude-skills-library92026年10月5日 更新

takusaotome のスキルをすべて見る

このスキルの問題を報告する