mcpField
F
ffmpeg

ffmpeg

github.com/n0anクリエイティブ・メディア15279 回インストール7 週間前に更新
リポジトリ

ffmpeg について

メディア処理向けの FFmpeg コマンド作成スキルです。参照レシピを依頼に合わせて調整し、構文に注意が必要なオプションを確認します。編集、音声、フィルター、素材生成、エンコードを扱います。

主な機能

  1. 01作業別にレシピを選択
  2. 02パスや時間、コーデック設定を調整
  3. 03ストリーム指定子とオプション順を確認
  4. 04編集、音声、エンコードを案内

活用シーン

  1. 01メディアファイルのトリミングや変換
  2. 02音声のミックス、抽出、置換
  3. 03字幕、オーバーレイ、GIFの作成
  4. 04エンコードや再生互換性の問題調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/n0an/ffmpeg-skill --skill ffmpeg

インストール後、Claude Code で/ffmpegを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

agents/
openai.yaml
references/
advanced-editing.md
asset-generation.md
audio-processing.md
encoding-and-tuning.md
glossary.md
simple-editing.md

詳細

記憶に頼らず、リファレンスのレシピを組み合わせて、メディア処理タスクに適した FFmpeg コマンドを作成してください。FFmpeg の構文は引数の位置に大きく左右され、わずかな間違いが起きやすいため、コマンドを一から考えるより、リファレンスにある動作確認済みのコマンドを調整してください。

ワークフロー:

  1. タスクのカテゴリを特定します(簡単な編集、オーディオ処理、高度なフィルタリング、アセットの生成、エンコードの調整)。
  2. 該当するリファレンスファイルを開き、最も近いレシピを選びます。
  3. 入力パス、時間範囲、寸法、コーデック、フィルターパラメーターをユーザーのリクエストに合わせて調整します。
  4. コマンドを返す前に、references/glossary.mdを確認し、ストリームセレクター、-map、-c copyの使用、シーク位置を検証します。
  5. ユーザーが GPU のない macOS または Linux を使っている場合は、*_nvenc、*_qsv、VAAPI エンコーダーを提案しないでください。

作業の一部のみを行う場合は、関連するリファレンスファイルだけを読み込んでください。

基本的な指示

  • 上書きしてよい場合は、コマンドの先頭に必ず-yを付けます。それ以外の場合は省略し、出力ファイルの上書き前に FFmpeg が確認するようにします。
  • フィルター、コーデックの変更、または正確なトリミングが不要な場合は、-c copy(ストリームコピー/リマックス)を優先してください。再エンコードを避けられ、処理が大幅に速くなります。
  • 動画フィルター(scale、overlay、subtitles、trim、fade)を適用する場合、オーディオをミキシングまたは変更する場合(amix、atempo、volume)、字幕を焼き込む場合、コーデック間でトランスコードする場合、または圧縮する場合は、-c copyを使用しないでください。
  • フレーム単位で正確にトリミングするには、-c:v copyを使わず、出力側のシーク(-iの後に-ss)を使用します。入力側のシーク(-iの前に-ss)は高速ですが、最も近いキーフレームまでしかシークせず、黒いフレームが入ったり、カットが数秒ずれたりすることがあります。
  • H.264 出力では、ユーザーが別の指定をしない限り、-c:v libx264 -crf 18 -preset veryslow -movflags +faststart -pix_fmt yuv420pを既定値として使用します。QuickTime やほとんどの一般向けプレーヤーでは、yuv420pが必要です。
  • Apple デバイス向けの H.265(HEVC)出力では、AirDrop と QuickTime でファイルを再生できるよう、-vtag hvc1を追加します。
  • 主な画質調整パラメーターとして CRF を使用します。値を下げるほど画質が上がり、値を約 6 上げるとビットレートはおよそ半分になります。libx264 の妥当な範囲は 17~28 で、18 は「視覚的に劣化が分からない」水準です。libvpx-vp9 では、固定品質にするため-b:v 0を指定し、15~35 の範囲を使用します。
  • フィルターを連結する際、名前付きストリーム([v0]、[a1])、複数の入力、または音声と動画の両方の操作が必要になったら、-filter_complexを優先します。単一ストリームのフィルタリングには-vf/-af`を使用します。
  • trim/atrimの後は、必ずsetpts=PTS-STARTPTS/asetpts=PTS-STARTPTSでタイムスタンプをリセットしてください。これを行わないと、concatや後続のフィルターが正しく動作しません。
  • 再生時間の異なる入力をミキシングし、出力を最も短いストリームの長さに合わせる場合は、-shortestを使用します。両方の動作が必要な場合は、amix内でduration=shortestと組み合わせてください。
  • padを使用する場合は、リサイズ/パディングの処理の後にsetsar=1:1を置き、ピクセルアスペクト比を 1:1 に固定してください。これを省略すると、寸法が正しく見えても出力が引き伸ばされることがあります。
  • シェルや FFmpeg の式パーサーが文字を誤って解釈しないよう、-vfと-filter_complexの引数はシングルクォートで囲むか、式内のカンマを\でエスケープしてください。
  • プログラムでファイル名を生成する場合は、コーデックに合った拡張子を優先してください(H.264/H.265 には.mp4、VP9/Opus には.webm、複数の字幕トラックが必要な場合は.mkv、ProRes/Apple 向けのワークフローには.mov)。
  • ユーザーから再生の問題(黒いフレーム、音声のずれ、「ファイルを再生できない」など)が報告された場合は、まず-pix_fmt yuv420pの指定漏れ、+faststartの指定漏れ、-c copyと組み合わせた入力側シーク、または Apple デバイスでの HEVC 向け-vtagの誤りを確認してください。
  • ユーザーが目標ファイルサイズを指定している場合は、2 パス ABR(-b:v <rate>を指定し、-pass 1の後に-pass 2を実行)に切り替えます。CRF ではサイズ上限を設定できません。
  • フィルターグラフをデバッグする前に、ffprobe -show_streams -i <file>でメタデータとストリーム構成を確認してください。ストリームインデックスの不一致は、最もよくある気づきにくい失敗の原因です。

出力形式

ユーザーがコマンドを求めた場合は、次の内容を返します。

  1. すぐに貼り付けて使える、1 行の FFmpeg コマンド全文を sh コードブロックに入れて示します。
  2. 重要な各フラグとフィルターについて説明する、簡潔な箇条書きを示します。
  3. 注意事項を示します。プレーヤーとの互換性、予想される実行時間、非可逆な処理、または該当するリファレンスファイルに記載された既知の FFmpeg の癖などです。

ユーザーが明示的に「コマンドのみ」と求めた場合は、説明の箇条書きを省略します。

既存のコマンドのレビューを求められた場合は、次の項目に分けて指摘事項を整理します。

  1. 正確性 - 失敗したり、誤った出力になったりするフラグやフィルターの順序。
  2. 品質 - CRF、プリセット、色空間、faststart、音声ビットレート。
  3. パフォーマンス - 不要な再エンコード、遅いフィルターチェーン、ハードウェアアクセラレーションの不足。
  4. 移植性 - コーデックとコンテナの不一致、Apple HEVC タグ、一般向け再生に適した yuv420p。

「視覚的な品質を保って、この MP4 をウェブ向けに圧縮して」のような依頼に対する出力例:

ffmpeg -i input.mp4 -c:v libx264 -crf 20 -preset veryslow -pix_fmt yuv420p -movflags +faststart -c:a aac -b:a 128k output.mp4
  • -crf 20 は、ファイルサイズを小さくしながらソースに近い品質を保ちます。アーカイブ用には 18 に下げてください。
  • -preset veryslow は、エンコード時間と引き換えに、同じ CRF で出力サイズを約 20~30%小さくします。
  • -pix_fmt yuv420p を指定すると、Safari、QuickTime、ほとんどのブラウザーで再生できます。
  • +faststart は moov atom を先頭に移動するため、動画全体のダウンロードが完了する前に再生を開始できます。
  • -c:a aac -b:a 128k は、音声を透明なステレオビットレートで再エンコードします。

例は以上です。

リファレンス

  • references/glossary.md - フラグとフィルターの構文、ストリームセレクター、-map、-c copy の規則、入力シークと出力シーク。
  • references/simple-editing.md - フォーマット変換(MP4/MKV/MOV/AVI)、サイズ変更とパディング、時間指定のトリミング。
  • references/audio-processing.md - 音声の置き換え、抽出、ミックス、クロスフェード、ダウンサンプリング、ステレオからモノラルへの変換、フォーマット変更。
  • references/advanced-editing.md - 再生速度、fps、ジャンプカット、ソーシャルメディア向けのクロップ、drawtext オーバーレイ、字幕、ウォーターマーク、vstack、イントロとアウトロの組み立て。
  • references/asset-generation.md - 画像からの動画作成、xfade を使ったスライドショー、ケン・バーンズ効果、GIF、サムネイル、シーン切り替えストーリーボード。
  • references/encoding-and-tuning.md - 日常的に使うテンプレート、libx264/libx265/libvpx-vp9、faststart、CRF の指針、シーク、GPU エンコーダー、ffprobe。

ソース

レシピはRendi FFmpeg チートシートを参考にしています。リファレンス内のサンプル URL は storage.rendi.dev を参照しているため、ローカルファイルなしでコマンドを直接実行できます。

コメント