ffmpeg について
メディア処理向けの FFmpeg コマンド作成スキルです。参照レシピを依頼に合わせて調整し、構文に注意が必要なオプションを確認します。編集、音声、フィルター、素材生成、エンコードを扱います。
主な機能
- 01作業別にレシピを選択
- 02パスや時間、コーデック設定を調整
- 03ストリーム指定子とオプション順を確認
- 04編集、音声、エンコードを案内
活用シーン
- 01メディアファイルのトリミングや変換
- 02音声のミックス、抽出、置換
- 03字幕、オーバーレイ、GIFの作成
- 04エンコードや再生互換性の問題調査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ n0an/ ffmpeg-skill --skill ffmpegインストール後、Claude Code で/ffmpegを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/advanced-editing.mdasset-generation.mdaudio-processing.mdencoding-and-tuning.mdglossary.mdsimple-editing.md詳細
記憶に頼らず、リファレンスのレシピを組み合わせて、メディア処理タスクに適した FFmpeg コマンドを作成してください。FFmpeg の構文は引数の位置に大きく左右され、わずかな間違いが起きやすいため、コマンドを一から考えるより、リファレンスにある動作確認済みのコマンドを調整してください。
ワークフロー:
- タスクのカテゴリを特定します(簡単な編集、オーディオ処理、高度なフィルタリング、アセットの生成、エンコードの調整)。
- 該当するリファレンスファイルを開き、最も近いレシピを選びます。
- 入力パス、時間範囲、寸法、コーデック、フィルターパラメーターをユーザーのリクエストに合わせて調整します。
- コマンドを返す前に、
references/glossary.mdを確認し、ストリームセレクター、-map、-c copyの使用、シーク位置を検証します。 - ユーザーが 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 行の FFmpeg コマンド全文を
shコードブロックに入れて示します。 - 重要な各フラグとフィルターについて説明する、簡潔な箇条書きを示します。
- 注意事項を示します。プレーヤーとの互換性、予想される実行時間、非可逆な処理、または該当するリファレンスファイルに記載された既知の FFmpeg の癖などです。
ユーザーが明示的に「コマンドのみ」と求めた場合は、説明の箇条書きを省略します。
既存のコマンドのレビューを求められた場合は、次の項目に分けて指摘事項を整理します。
- 正確性 - 失敗したり、誤った出力になったりするフラグやフィルターの順序。
- 品質 - CRF、プリセット、色空間、faststart、音声ビットレート。
- パフォーマンス - 不要な再エンコード、遅いフィルターチェーン、ハードウェアアクセラレーションの不足。
- 移植性 - コーデックとコンテナの不一致、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 を参照しているため、ローカルファイルなしでコマンドを直接実行できます。
コメント
Markdown 対応