mcpField
F
ffmpeg-video-editor

ffmpeg-video-editor

github.com/sundial-orgクリエイティブ・メディア6701.6k 回インストール34 週間前に更新
リポジトリ

ffmpeg-video-editor について

ffmpeg-video-editorは、自然言語による動画編集の依頼をFFmpegコマンドに変換するスキルです。コマンド生成の支援が必要な動画編集者向けに、トリミング、変換、画面調整、音声処理、字幕、結合を扱います。

主な機能

  1. 01トリミングと形式変換コマンドの生成
  2. 02アスペクト比と解像度の調整
  3. 03動画圧縮と再生速度の変更
  4. 04音声の抽出または削除
  5. 05字幕や透かしの追加、動画の結合

活用シーン

  1. 01動画の一部切り出しやフレーム抽出
  2. 02ソーシャルプラットフォーム向けのサイズ変更
  3. 03ファイル圧縮や音声の書き出し
  4. 04動画の結合や字幕の焼き込み

インストール

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

$npx skills add https://github.com/sundial-org/awesome-openclaw-skills --skill ffmpeg-video-editor

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

詳細

FFmpeg 動画エディター

自然言語によるリクエストを FFmpeg コマンドに変換する動画編集アシスタントです。ユーザーが動画の編集を依頼したら、適切な FFmpeg コマンドを生成します。

コマンドの生成方法

  1. ユーザーのリクエストから操作を特定します
  2. パラメーターを抽出します(入力ファイル、出力ファイル、タイムスタンプ、形式など)
  3. 以下のパターンを使ってFFmpeg コマンドを生成します
  4. 出力ファイル名が指定されていない場合は、操作に基づいて作成します(例:video_trimmed.mp4)
  5. 出力を見やすくするため、必ず -y(上書き)と -hide_banner を含めます

コマンドリファレンス

動画のカット/トリミング

2 つのタイムスタンプの間の動画部分を抽出します。

ユーザーのリクエスト例:「video.mp4 を 1:21 から 1:35 までカット」「最初の 30 秒をトリミング」「0:05:00 から 0:10:30 まで抽出」

コマンド:

ffmpeg -y -hide_banner -i "INPUT" -ss START_TIME -to END_TIME -c copy "OUTPUT"

例:

  • 1:21 から 1:35 までカット:
    ffmpeg -y -hide_banner -i "video.mp4" -ss 00:01:21 -to 00:01:35 -c copy "video_trimmed.mp4"
    
  • 最初の 2 分を抽出:
    ffmpeg -y -hide_banner -i "video.mp4" -ss 00:00:00 -to 00:02:00 -c copy "video_clip.mp4"
    

形式の変換

動画形式を相互に変換します:mp4、mkv、avi、webm、mov、flv、wmv。

ユーザーのリクエスト例:「mkv に変換」「avi から mp4 に形式を変更」「webm にする」

形式別コマンド:

# MP4 (most compatible)
ffmpeg -y -hide_banner -i "INPUT" -c:v libx264 -c:a aac "OUTPUT.mp4"

# MKV (lossless container change)
ffmpeg -y -hide_banner -i "INPUT" -c copy "OUTPUT.mkv"

# WebM (web optimized)
ffmpeg -y -hide_banner -i "INPUT" -c:v libvpx-vp9 -c:a libopus "OUTPUT.webm"

# AVI
ffmpeg -y -hide_banner -i "INPUT" -c:v mpeg4 -c:a mp3 "OUTPUT.avi"

# MOV
ffmpeg -y -hide_banner -i "INPUT" -c:v libx264 -c:a aac "OUTPUT.mov"

アスペクト比の変更

黒帯(レターボックス)を追加して、動画を異なるアスペクト比にリサイズします。

ユーザーのリクエスト例:「アスペクト比を 16:9 に変更」「正方形にする」「TikTok 用に縦向きにする」

一般的なアスペクト比:

比率解像度用途
16:91920x1080YouTube、テレビ
4:31440x1080昔のテレビ形式
1:11080x1080Instagram の正方形
9:161080x1920TikTok、Reels、Stories
21:92560x1080ウルトラワイド/映画

コマンド(レターボックスあり):

ffmpeg -y -hide_banner -i "INPUT" -vf "scale=WIDTH:HEIGHT:force_original_aspect_ratio=decrease,pad=WIDTH:HEIGHT:(ow-iw)/2:(oh-ih)/2:black" -c:a copy "OUTPUT"

例:

  • YouTube 用の 16:9:
    ffmpeg -y -hide_banner -i "video.mp4" -vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2:black" -c:a copy "video_16x9.mp4"
    
  • Instagram 用の正方形:
    ffmpeg -y -hide_banner -i "video.mp4" -vf "scale=1080:1080:force_original_aspect_ratio=decrease,pad=1080:1080:(ow-iw)/2:(oh-ih)/2:black" -c:a copy "video_square.mp4"
    
  • TikTok 用の縦向き:
    ffmpeg -y -hide_banner -i "video.mp4" -vf "scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2:black" -c:a copy "video_vertical.mp4"
    

解像度の変更

動画を標準解像度にリサイズします。

ユーザーのリクエスト例:「720p にリサイズ」「4K にする」「480p に縮小」

解像度:

名前寸法
4K3840x2160
1080p1920x1080
720p1280x720
480p854x480
360p640x360

コマンド:

ffmpeg -y -hide_banner -i "INPUT" -vf "scale=WIDTH:HEIGHT" -c:a copy "OUTPUT"

例 - 720p にリサイズ:

ffmpeg -y -hide_banner -i "video.mp4" -vf "scale=1280:720" -c:a copy "video_720p.mp4"

動画の圧縮

ファイルサイズを小さくします。CRF は画質を制御します:18(高画質)→ 28(低画質)、23 はバランスの取れた設定です。

ユーザーのリクエスト例:「動画を圧縮」「ファイルサイズを小さく」「メール用に軽くする」

コマンド:

ffmpeg -y -hide_banner -i "INPUT" -c:v libx264 -crf CRF_VALUE -preset medium -c:a aac -b:a 128k "OUTPUT"

例:

  • バランスの取れた圧縮(CRF 23):
    ffmpeg -y -hide_banner -i "video.mp4" -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k "video_compressed.mp4"
    
  • 強い圧縮/ファイルサイズを小さくする(CRF 28):
    ffmpeg -y -hide_banner -i "video.mp4" -c:v libx264 -crf 28 -preset fast -c:a aac -b:a 96k "video_small.mp4"
    
  • 高画質(CRF 18):
    ffmpeg -y -hide_banner -i "video.mp4" -c:v libx264 -crf 18 -preset slow -c:a aac -b:a 192k "video_hq.mp4"
    

音声の抽出

動画から音声トラックを抽出します。

ユーザーのリクエスト例:「音声を mp3 として抽出」「動画から音声を取り出す」「音声のみの形式に変換」

コマンド:

ffmpeg -y -hide_banner -i "INPUT" -vn -acodec CODEC "OUTPUT.FORMAT"

形式別コーデック:

形式コーデック
mp3libmp3lame
aacaac
wavpcm_s16le
flacflac
ogglibvorbis

例 - MP3 として抽出:

ffmpeg -y -hide_banner -i "video.mp4" -vn -acodec libmp3lame "video.mp3"

音声の削除

無音の動画(音声トラックを削除した動画)を作成します。

ユーザーのリクエスト例:「音声を削除」「動画をミュート」「無音にする」

コマンド:

ffmpeg -y -hide_banner -i "INPUT" -an -c:v copy "OUTPUT"

例:

ffmpeg -y -hide_banner -i "video.mp4" -an -c:v copy "video_silent.mp4"

再生速度の変更

動画の再生速度を上げたり下げたりします。

ユーザーのリクエスト例:「2 倍速にする」「スローモーション」「10 倍のタイムラプスにする」

コマンド:

# Speed up (e.g., 2x speed)
ffmpeg -y -hide_banner -i "INPUT" -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" "OUTPUT"

# Slow down (e.g., 0.5x speed / half speed)
ffmpeg -y -hide_banner -i "INPUT" -filter_complex "[0:v]setpts=2.0*PTS[v];[0:a]atempo=0.5[a]" -map "[v]" -map "[a]" "OUTPUT"

計算式:

  • 動画:setpts = (1/speed)*PTS(2 倍速 → 0.5*PTS)
  • 音声:atempo = speed(0.5~2.0 で指定し、範囲外の場合は連結します)

例:

  • 2 倍速:
    ffmpeg -y -hide_banner -i "video.mp4" -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" "video_2x.mp4"
    
  • 0.5 倍速(スローモーション):
    ffmpeg -y -hide_banner -i "video.mp4" -filter_complex "[0:v]setpts=2.0*PTS[v];[0:a]atempo=0.5[a]" -map "[v]" -map "[a]" "video_slowmo.mp4"
    

GIF への変換

動画からアニメーション GIF を作成します。

ユーザーのリクエスト例:「GIF を作成」「GIF に変換」「0:10 から 0:15 までの GIF」

コマンド:

ffmpeg -y -hide_banner -i "INPUT" -ss START -t DURATION -vf "fps=15,scale=480:-1:flags=lanczos" -loop 0 "OUTPUT.gif"

例 - 0:10 から始まる 5 秒間の GIF:

ffmpeg -y -hide_banner -i "video.mp4" -ss 00:00:10 -t 5 -vf "fps=15,scale=480:-1:flags=lanczos" -loop 0 "video.gif"

動画の回転/反転

動画の向きを回転または反転します。

ユーザーのリクエスト例:「90 度回転」「水平方向に反転」「上下逆さまに回転」

コマンド:

# Rotate 90° clockwise
ffmpeg -y -hide_banner -i "INPUT" -vf "transpose=1" -c:a copy "OUTPUT"

# Rotate 90° counter-clockwise
ffmpeg -y -hide_banner -i "INPUT" -vf "transpose=2" -c:a copy "OUTPUT"

# Rotate 180°
ffmpeg -y -hide_banner -i "INPUT" -vf "transpose=2,transpose=2" -c:a copy "OUTPUT"

# Flip horizontal (mirror)
ffmpeg -y -hide_banner -i "INPUT" -vf "hflip" -c:a copy "OUTPUT"

# Flip vertical
ffmpeg -y -hide_banner -i "INPUT" -vf "vflip" -c:a copy "OUTPUT"

スクリーンショット/フレームを抽出する

動画から単一のフレームをキャプチャします。

ユーザーの発話例:「1:30 のスクリーンショット」「サムネイルを抽出」「5 秒時点のフレームを取得」

コマンド:

ffmpeg -y -hide_banner -i "INPUT" -ss TIMESTAMP -frames:v 1 "OUTPUT.jpg"

例:

ffmpeg -y -hide_banner -i "video.mp4" -ss 00:01:30 -frames:v 1 "screenshot.jpg"

透かし/ロゴを追加する

動画に画像を重ねます。

ユーザーの発話例:「logo.png を追加」「隅に透かしを入れる」「画像を重ねる」

位置:

位置オーバーレイ値
左上overlay=10:10
右上overlay=W-w-10:10
左下overlay=10:H-h-10
右下overlay=W-w-10:H-h-10
中央overlay=(W-w)/2:(H-h)/2

コマンド:

ffmpeg -y -hide_banner -i "VIDEO" -i "LOGO" -filter_complex "overlay=POSITION" "OUTPUT"

例 - 右上にロゴを配置:

ffmpeg -y -hide_banner -i "video.mp4" -i "logo.png" -filter_complex "overlay=W-w-10:10" "video_watermarked.mp4"

字幕を焼き込む

字幕を動画に恒久的に埋め込みます。

ユーザーの発話例:「字幕を追加」「srt ファイルを焼き込む」「キャプションを埋め込む」

コマンド:

ffmpeg -y -hide_banner -i "INPUT" -vf "subtitles='SUBTITLE_FILE'" "OUTPUT"

例:

ffmpeg -y -hide_banner -i "video.mp4" -vf "subtitles='subtitles.srt'" "video_subtitled.mp4"

動画を結合/連結する

複数の動画をつなぎ合わせます。

ユーザーの発話例:「video1 と video2 を結合」「クリップをまとめる」「イントロとメインをつなぐ」

**方法:**まず動画の一覧を記載したテキストファイルを作成し、その後、連結します。

ステップ 1 - ファイル一覧を作成(files.txt):

file 'video1.mp4'
file 'video2.mp4'
file 'video3.mp4'

ステップ 2 - 連結:

ffmpeg -y -hide_banner -f concat -safe 0 -i files.txt -c copy "merged.mp4"

時刻形式のリファレンス

タイムスタンプには次の形式を使用します。

  • HH:MM:SS → 01:30:45(1 時間 30 分 45 秒)
  • MM:SS → 05:30(5 分 30 秒)
  • SS → 90(90 秒)
  • HH:MM:SS.mmm → 00:01:23.500(ミリ秒を含む)

応答形式

コマンドを生成するときは:

  1. FFmpeg コマンドをコードブロックに表示します
  2. コマンドの動作を簡潔に説明します
  3. 出力ファイル名を仮定した場合は、その旨を伝えます

応答例:

Here's the command to cut your video from 1:21 to 1:35:

​```bash
ffmpeg -y -hide_banner -i "video.mp4" -ss 00:01:21 -to 00:01:35 -c copy "video_trimmed.mp4"
​```

This extracts the segment without re-encoding (using `-c copy` for speed). Output saved as `video_trimmed.mp4`.

コメント