ffmpeg-toolkit について
ffmpeg-toolkit は、ffmpeg で音声や動画を処理する人向けのスキルです。形式変換、編集、フィルター、抽出、圧縮のコマンド例に加え、ストリームコピーと再エンコードの使い分けを説明します。
主な機能
- 01形式変換とロスレスリマックス
- 02動画のトリミング、拡大縮小、クロップ、回転
- 03音声の抽出、置換、調整
- 04動画の圧縮と GIF の作成
- 05字幕、オーバーレイ、フレーム、メタデータの処理
活用シーン
- 01動画をウェブ向け MP4 に変換
- 02クリップを切り出して音声を抽出
- 03動画を拡大縮小またはクロップして GIF を作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ simonlee2/ claude-plugins --skill ffmpeg-toolkitインストール後、Claude Code で/ffmpeg-toolkitを入力して読み込まれたか確認します。
同梱ファイルreferences/ffmpeg-commands.md
詳細
FFmpeg Toolkit
ffmpeg を使った動画および音声処理の包括的なガイドです。
概要
このスキルでは、一般的な動画および音声操作に ffmpeg を使用する方法を説明します。ffmpeg は、形式変換、トリミング、サイズ変更、音声の抽出、GIF の作成など、マルチメディアファイルを処理するための強力なコマンドラインツールです。
基本原則
常に次のフラグを使用してください
-hide_banner- ffmpeg のバージョン情報を抑制し、出力を簡潔にします-y- 自動化のため、確認せずに出力ファイルを上書きします
-c copy(ストリームコピー)を使用する場合
次のような場合は -c copy を使用してください。
- 元の品質を保つ(再エンコードしない)
- 高速に処理する(再エンコードより 10~100 倍高速)
- ファイルサイズを元ファイルと同程度に保つ
制限事項: ストリームコピーでは、コーデックや解像度を変更したり、フィルターを適用したりできません。
再エンコードする場合
次のような場合は再エンコードしてください。
- 解像度またはアスペクト比を変更する
- フィルター(クロップ、回転、オーバーレイ)を適用する
- コーデックを変更する(例:HEVC から H.264)
- 品質またはビットレートを調整する
- フレーム単位で正確にトリミングする
一般的な操作
1. 形式変換
基本的な変換(再エンコードします):
ffmpeg -hide_banner -i input.mkv output.mp4
ロスレスのリマックス(再エンコードしません):
ffmpeg -hide_banner -i input.mkv -c copy output.mp4
Web 用に最適化された MP4 に変換:
ffmpeg -hide_banner -i input.mov -c:v libx264 -crf 23 -c:a aac -movflags faststart output.mp4
2. トリミング/カット
高速トリミング(再エンコードしませんが、キーフレームの問題が発生する場合があります):
ffmpeg -hide_banner -ss 00:01:30 -i input.mp4 -t 00:00:30 -c copy output.mp4
-ss 00:01:30- 1 分 30 秒から開始します-t 00:00:30- 長さを 30 秒にします
フレーム単位で正確なトリミング(再エンコードが必要です):
ffmpeg -hide_banner -i input.mp4 -ss 00:01:30 -t 00:00:30 -c:v libx264 -c:a aac output.mp4
ファイルの末尾までトリミング:
ffmpeg -hide_banner -ss 00:05:00 -i input.mp4 -c copy output.mp4
3. 音声操作
音声を MP3 に抽出:
ffmpeg -hide_banner -i video.mp4 -vn -c:a libmp3lame -q:a 2 audio.mp3
音声を WAV に抽出(ロスレス):
ffmpeg -hide_banner -i video.mp4 -vn audio.wav
動画から音声を削除:
ffmpeg -hide_banner -i input.mp4 -an -c:v copy output.mp4
動画に音声を追加:
ffmpeg -hide_banner -i video.mp4 -i audio.mp3 -c:v copy -c:a aac -map 0:v -map 1:a output.mp4
動画の音声を置き換え:
ffmpeg -hide_banner -i video.mp4 -i new_audio.mp3 -c:v copy -c:a aac -map 0:v -map 1:a -shortest output.mp4
4. サイズ変更/スケーリング
指定した解像度にスケーリング:
ffmpeg -hide_banner -i input.mp4 -vf "scale=1920:1080" -c:a copy output.mp4
アスペクト比を維持してスケーリング(幅 1280、高さは自動):
ffmpeg -hide_banner -i input.mp4 -vf "scale=1280:-1" -c:a copy output.mp4
指定範囲内に収まるようにスケーリング(1920x1080 を超えません):
ffmpeg -hide_banner -i input.mp4 -vf "scale='min(1920,iw)':'min(1080,ih)'" -c:a copy output.mp4
5. 圧縮
固定レート係数(CRF)— 推奨:
ffmpeg -hide_banner -i input.mp4 -c:v libx264 -crf 23 -c:a aac output.mp4
- CRF 18:視覚的にロスレス
- CRF 23:デフォルト。品質とサイズのバランスが良好
- CRF 28:ファイルサイズは小さくなりますが、品質は低下します
目標ビットレート:
ffmpeg -hide_banner -i input.mp4 -c:v libx264 -b:v 2M -c:a aac -b:a 128k output.mp4
2 パスエンコード(目標サイズに対して最高の品質):
ffmpeg -hide_banner -i input.mp4 -c:v libx264 -b:v 2M -pass 1 -f null /dev/null
ffmpeg -hide_banner -i input.mp4 -c:v libx264 -b:v 2M -pass 2 output.mp4
6. GIF の作成
基本的な GIF:
ffmpeg -hide_banner -i input.mp4 -vf "fps=10,scale=480:-1" output.gif
パレットを使った高品質な GIF:
ffmpeg -hide_banner -i input.mp4 -vf "fps=10,scale=480:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" output.gif
指定した区間から GIF を作成:
ffmpeg -hide_banner -ss 00:00:05 -t 3 -i input.mp4 -vf "fps=15,scale=320:-1:flags=lanczos" output.gif
7. 動画の結合
動画を連結(同じコーデック):
まず、ファイルリスト(videos.txt)を作成します。
file 'video1.mp4'
file 'video2.mp4'
file 'video3.mp4'
次に、連結します。
ffmpeg -hide_banner -f concat -safe 0 -i videos.txt -c copy output.mp4
再エンコードして連結(コーデックまたは解像度が異なる場合):
ffmpeg -hide_banner -f concat -safe 0 -i videos.txt -c:v libx264 -c:a aac output.mp4
8. 回転
時計回りに 90° 回転:
ffmpeg -hide_banner -i input.mp4 -vf "transpose=1" output.mp4
転置値:
0- 反時計回りに 90° 回転 + 垂直反転1- 時計回りに 90° 回転2- 反時計回りに 90° 回転3- 時計回りに 90° 回転 + 垂直反転
180° 回転:
ffmpeg -hide_banner -i input.mp4 -vf "transpose=1,transpose=1" output.mp4
9. クロップ
指定した寸法にクロップ:
ffmpeg -hide_banner -i input.mp4 -vf "crop=640:480:100:50" output.mp4
形式:crop=width:height:x:y
中央を正方形にクロップ:
ffmpeg -hide_banner -i input.mp4 -vf "crop=min(iw\,ih):min(iw\,ih)" output.mp4
10. 速度調整
動画を 2 倍速にする:
ffmpeg -hide_banner -i input.mp4 -vf "setpts=0.5*PTS" -af "atempo=2.0" output.mp4
動画を 0.5 倍速にする:
ffmpeg -hide_banner -i input.mp4 -vf "setpts=2*PTS" -af "atempo=0.5" output.mp4
音声なしで速度を上げる:
ffmpeg -hide_banner -i input.mp4 -vf "setpts=0.5*PTS" -an output.mp4
高度な操作
字幕の追加
字幕を動画に焼き込む:
ffmpeg -hide_banner -i input.mp4 -vf "subtitles=subs.srt" output.mp4
ASS 字幕を焼き込む(スタイル付き):
ffmpeg -hide_banner -i input.mp4 -vf "ass=subs.ass" output.mp4
透かし/オーバーレイの追加
画像オーバーレイ(右上隅):
ffmpeg -hide_banner -i input.mp4 -i logo.png -filter_complex "overlay=W-w-10:10" output.mp4
フレームの抽出
すべてのフレームを抽出:
ffmpeg -hide_banner -i input.mp4 frame_%04d.png
1 秒ごとに 1 フレームを抽出:
ffmpeg -hide_banner -i input.mp4 -vf "fps=1" frame_%04d.png
タイムスタンプを指定して 1 フレームを抽出:
ffmpeg -hide_banner -ss 00:00:10 -i input.mp4 -frames:v 1 thumbnail.png
画像から動画を作成
画像を動画に変換:
ffmpeg -hide_banner -framerate 30 -i frame_%04d.png -c:v libx264 -pix_fmt yuv420p output.mp4
メタデータの変更
タイトルを設定:
ffmpeg -hide_banner -i input.mp4 -c copy -metadata title="My Video" output.mp4
すべてのメタデータを削除:
ffmpeg -hide_banner -i input.mp4 -c copy -map_metadata -1 output.mp4
ハードウェアアクセラレーション(NVIDIA)
NVENC でエンコード:
ffmpeg -hide_banner -i input.mp4 -c:v h264_nvenc -preset fast -b:v 5M output.mp4
GPU でデコードおよびエンコード:
ffmpeg -hide_banner -hwaccel cuda -i input.mp4 -c:v h264_nvenc output.mp4
クイックリファレンス
| タスク | コマンド |
|---|---|
| 情報を取得する | ffmpeg -i input.mp4 |
| フォーマットを変換する | ffmpeg -i in.mkv out.mp4 |
| リマックスする(高速) | ffmpeg -i in.mkv -c copy out.mp4 |
| トリミングする | ffmpeg -ss 00:01:00 -t 30 -i in.mp4 -c copy out.mp4 |
| 音声を抽出する | ffmpeg -i in.mp4 -vn out.mp3 |
| 音声を削除する | ffmpeg -i in.mp4 -an -c:v copy out.mp4 |
| 拡大・縮小する | ffmpeg -i in.mp4 -vf "scale=1280:-1" out.mp4 |
| 圧縮する | ffmpeg -i in.mp4 -crf 28 out.mp4 |
| GIF に変換する | ffmpeg -i in.mp4 -vf "fps=10,scale=320:-1" out.gif |
| 90°回転する | ffmpeg -i in.mp4 -vf "transpose=1" out.mp4 |
ベストプラクティス
- 大きなファイルを処理する前に、必ず短いクリップでテストしてください
- 速度と品質を維持するため、可能な場合は
-c copyを使用してください - ウェブ向けに最適化した MP4 には、
-movflags faststartを追加してください - 固定ビットレートではなく、品質ベースのエンコードには CRF を使用してください
- 入力元を把握するため、まず
ffmpeg -i input.mp4で入力情報を確認してください - 特定のファイルサイズを目標とする場合は、2 パスエンコードを使用してください
よくある問題
- トリミング後に音声と映像が同期しない:
-c copyではなく再エンコードを使用してください - 先頭に黒いフレームが表示される:
-avoid_negative_ts make_zeroを追加してください - コンテナ内のコーデックに互換性がない:コンテナ形式がコーデックに対応しているか確認してください
- GIF のサイズが大きすぎる:FPS を下げる、解像度を下げる、または再生時間を短くしてください
追加リソース
コマンドの詳細については、references/ffmpeg-commands.md を参照してください。