mcpField
F
ffmpeg-toolkit

ffmpeg-toolkit

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

ffmpeg-toolkit について

ffmpeg-toolkit は、ffmpeg で音声や動画を処理する人向けのスキルです。形式変換、編集、フィルター、抽出、圧縮のコマンド例に加え、ストリームコピーと再エンコードの使い分けを説明します。

主な機能

  1. 01形式変換とロスレスリマックス
  2. 02動画のトリミング、拡大縮小、クロップ、回転
  3. 03音声の抽出、置換、調整
  4. 04動画の圧縮と GIF の作成
  5. 05字幕、オーバーレイ、フレーム、メタデータの処理

活用シーン

  1. 01動画をウェブ向け MP4 に変換
  2. 02クリップを切り出して音声を抽出
  3. 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

ベストプラクティス

  1. 大きなファイルを処理する前に、必ず短いクリップでテストしてください
  2. 速度と品質を維持するため、可能な場合は -c copy を使用してください
  3. ウェブ向けに最適化した MP4 には、-movflags faststart を追加してください
  4. 固定ビットレートではなく、品質ベースのエンコードには CRF を使用してください
  5. 入力元を把握するため、まず ffmpeg -i input.mp4 で入力情報を確認してください
  6. 特定のファイルサイズを目標とする場合は、2 パスエンコードを使用してください

よくある問題

  • トリミング後に音声と映像が同期しない:-c copy ではなく再エンコードを使用してください
  • 先頭に黒いフレームが表示される:-avoid_negative_ts make_zero を追加してください
  • コンテナ内のコーデックに互換性がない:コンテナ形式がコーデックに対応しているか確認してください
  • GIF のサイズが大きすぎる:FPS を下げる、解像度を下げる、または再生時間を短くしてください

追加リソース

コマンドの詳細については、references/ffmpeg-commands.md を参照してください。

コメント