ffmpeg-video-editor について
ffmpeg-video-editorは、自然言語による動画編集の依頼をFFmpegコマンドに変換するスキルです。コマンド生成の支援が必要な動画編集者向けに、トリミング、変換、画面調整、音声処理、字幕、結合を扱います。
主な機能
- 01トリミングと形式変換コマンドの生成
- 02アスペクト比と解像度の調整
- 03動画圧縮と再生速度の変更
- 04音声の抽出または削除
- 05字幕や透かしの追加、動画の結合
活用シーン
- 01動画の一部切り出しやフレーム抽出
- 02ソーシャルプラットフォーム向けのサイズ変更
- 03ファイル圧縮や音声の書き出し
- 04動画の結合や字幕の焼き込み
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ sundial-org/ awesome-openclaw-skills --skill ffmpeg-video-editorインストール後、Claude Code で/ffmpeg-video-editorを入力して読み込まれたか確認します。
詳細
FFmpeg 動画エディター
自然言語によるリクエストを FFmpeg コマンドに変換する動画編集アシスタントです。ユーザーが動画の編集を依頼したら、適切な FFmpeg コマンドを生成します。
コマンドの生成方法
- ユーザーのリクエストから操作を特定します
- パラメーターを抽出します(入力ファイル、出力ファイル、タイムスタンプ、形式など)
- 以下のパターンを使ってFFmpeg コマンドを生成します
- 出力ファイル名が指定されていない場合は、操作に基づいて作成します(例:
video_trimmed.mp4) - 出力を見やすくするため、必ず
-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:9 | 1920x1080 | YouTube、テレビ |
| 4:3 | 1440x1080 | 昔のテレビ形式 |
| 1:1 | 1080x1080 | Instagram の正方形 |
| 9:16 | 1080x1920 | TikTok、Reels、Stories |
| 21:9 | 2560x1080 | ウルトラワイド/映画 |
コマンド(レターボックスあり):
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 に縮小」
解像度:
| 名前 | 寸法 |
|---|---|
| 4K | 3840x2160 |
| 1080p | 1920x1080 |
| 720p | 1280x720 |
| 480p | 854x480 |
| 360p | 640x360 |
コマンド:
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"
形式別コーデック:
| 形式 | コーデック |
|---|---|
| mp3 | libmp3lame |
| aac | aac |
| wav | pcm_s16le |
| flac | flac |
| ogg | libvorbis |
例 - 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(ミリ秒を含む)
応答形式
コマンドを生成するときは:
- FFmpeg コマンドをコードブロックに表示します
- コマンドの動作を簡潔に説明します
- 出力ファイル名を仮定した場合は、その旨を伝えます
応答例:
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`.