Install
$ agentstack add skill-takusaotome-claude-skills-library-ffmpeg-expert ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
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
- 入力ファイルを先にffprobeで確認する
- コーデック、解像度、ビットレートを把握してから変換
- コーデックコピー(-c copy)を活用
- フォーマット変換のみなら再エンコード不要で高速
- CRF値で品質を制御する
- ビットレート指定より品質が安定
- H.264: 18-28(23がデフォルト)
- H.265: 22-32(28がデフォルト)
- 2パスエンコードで品質を安定させる
- 特にビットレート制限がある場合に有効
- ハードウェアアクセラレーションで高速化
- 大量の動画処理時に特に効果的
- ただしソフトウェアエンコードより品質が劣る場合あり
- faststart フラグを使用
- Web配信用MP4には必須(-movflags +faststart)
- メタデータを先頭に移動してストリーミング開始を高速化
- 出力先のディスク容量を確認
- 大きな動画の変換前に十分な空き容量を確保
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/
このスキルにはアセットファイルは含まれません。
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: takusaotome
- Source: takusaotome/claude-skills-library
- License: MIT
- Homepage: https://takusaotome.github.io/claude-skills-library/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.