ffmpeg-usage について
ffmpeg-usageは、動画や音声を処理する人向けに、ffmpegの一般的なコマンドとワークフローをまとめたスキルです。形式変換、編集、字幕、圧縮、SNS向けの出力設定を扱います。
主な機能
- 01動画・音声形式の変換
- 02動画の拡大縮小・トリミング・回転
- 03GIF作成とサムネイル抽出
- 04音声の抽出・ミックス・変換
- 05字幕処理とファイル圧縮
活用シーン
- 01MOVファイルをMP4に変換
- 02動画の一部からGIFを作成
- 03動画から音声をMP3で抽出
- 04TikTokやInstagram向けに動画を調整
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ ychoi-kr/ claude-ffmpeg-skill --skill ffmpeg-usageインストール後、Claude Code で/ffmpeg-usageを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEREADME.mdvalidation_report.jsoninstall.shvalidate.pyexamples/conversion.sh詳細
ffmpeg の使用方法
概要
このスキルは、ffmpeg を使用した包括的な動画・音声処理機能を提供します。よくあるマルチメディアのタスク向けに、実戦で検証されたコマンドとワークフロー、プラットフォームごとの最適化、品質とファイルサイズを管理するためのベストプラクティスが含まれています。
バージョン: 1.0.0 要件: ffmpeg >= 4.0、ffprobe(任意ですが、推奨)
ユーザーが動画や音声の処理、形式変換、ソーシャルメディア向けの最適化、マルチメディアの編集について言及した場合は、Claude はこのスキルを使用してください。
使用する場面
ユーザーから次のような依頼があった場合は、このスキルを使用してください。
- 動画形式の変換(MP4、WebM、MOV など)
- 解像度の拡大・縮小、またはアスペクト比の変更
- 動画からの GIF の作成
- 音声の抽出または形式変換
- 動画の編集(トリミング、結合、速度調整、回転)
- 字幕の処理(焼き付け、ソフト字幕、抽出)
- 動画の圧縮または最適化
- プラットフォームごとの形式への変換(YouTube、Instagram、TikTok、Twitter)
- サムネイルまたはフレームの抽出
- 動画・音声ファイルの一括処理
前提条件
このスキルを使用する前に、ffmpeg がインストールされていることを確認してください。
# macOS
brew install ffmpeg
# Ubuntu/Debian
sudo apt-get install ffmpeg
# Windows (with Chocolatey)
choco install ffmpeg
インストールを確認します。
ffmpeg -version
対応する操作
1. 形式変換
最適化された設定で、動画形式を相互に変換します。
MP4 から WebM への変換:
ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 -c:a libopus output.webm
MOV から MP4 への変換:
ffmpeg -i input.mov -c:v libx264 -c:a aac -strict experimental output.mp4
任意の形式から MP4 への変換(幅広い互換性):
ffmpeg -i input.* -c:v libx264 -preset medium -crf 23 -c:a aac -b:a 128k output.mp4
2. 解像度の調整
アスペクト比を維持しながら、動画のサイズを変更します。
720p に縮小:
ffmpeg -i input.mp4 -vf scale=-1:720 -c:a copy output_720p.mp4
1080p に縮小:
ffmpeg -i input.mp4 -vf scale=-1:1080 -c:a copy output_1080p.mp4
幅を指定して縮小(高さは自動調整):
ffmpeg -i input.mp4 -vf scale=1280:-1 -c:a copy output.mp4
余白を追加して縮小(レターボックス):
ffmpeg -i input.mp4 -vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2" output.mp4
3. GIF の作成
ファイルサイズを最適化しながら、動画から高品質な GIF を作成します。
基本的な GIF(10 fps):
ffmpeg -i input.mp4 -vf "fps=10,scale=480:-1:flags=lanczos" output.gif
パレットを使った高品質な GIF:
# Generate palette
ffmpeg -i input.mp4 -vf "fps=10,scale=480:-1:flags=lanczos,palettegen" palette.png
# Create GIF using palette
ffmpeg -i input.mp4 -i palette.png -filter_complex "fps=10,scale=480:-1:flags=lanczos[x];[x][1:v]paletteuse" output.gif
指定した時間範囲から GIF を作成:
ffmpeg -ss 00:00:10 -t 5 -i input.mp4 -vf "fps=10,scale=480:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" output.gif
4. 音声操作
音声ストリームを抽出、変換、操作します。
音声を MP3 に抽出:
ffmpeg -i input.mp4 -vn -acodec libmp3lame -q:a 2 output.mp3
音声を WAV に抽出:
ffmpeg -i input.mp4 -vn -acodec pcm_s16le -ar 44100 -ac 2 output.wav
音声形式を変換:
ffmpeg -i input.wav -c:a aac -b:a 192k output.m4a
BGM を追加:
ffmpeg -i video.mp4 -i music.mp3 -c:v copy -c:a aac -map 0:v:0 -map 1:a:0 -shortest output.mp4
音声をミックス(重ね合わせ):
ffmpeg -i video.mp4 -i music.mp3 -filter_complex "[0:a][1:a]amix=inputs=2:duration=first" -c:v copy output.mp4
5. 動画編集
動画のトリミング、連結、変更を行います。
動画をトリミング:
# From 10s to 30s
ffmpeg -i input.mp4 -ss 00:00:10 -to 00:00:30 -c copy output.mp4
# Duration-based (10s starting from 5s)
ffmpeg -i input.mp4 -ss 00:00:05 -t 10 -c copy output.mp4
動画を連結:
形式と互換性に応じて方法を選択します。
方法 1:Concat プロトコル(推奨。一時ファイルは不要)
# For MPEG formats: .ts, .mpg, .mpeg, .mp3, .aac, etc.
# Direct concatenation without creating list file
ffmpeg -i "concat:file1.mp3|file2.mp3|file3.mp3" -c copy output.mp3
ffmpeg -i "concat:video1.ts|video2.ts|video3.ts" -c copy output.ts
# Works with: TS, MPEG-1, MPEG-2, MP3, AAC
# Does NOT work with: MP4, MOV, MKV (use Method 2 instead)
方法 2:Concat Demuxer(MP4、MOV、MKV 向け)
# Use process substitution to avoid temporary files
ffmpeg -f concat -safe 0 -i <(printf "file '%s'\n" video1.mp4 video2.mp4 video3.mp4) -c copy output.mp4
# If shell doesn't support process substitution:
printf "file '%s'\n" video1.mp4 video2.mp4 video3.mp4 > list.txt
ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4
rm list.txt
方法 3:Concat Filter(再エンコードしてもよい場合)
# Use when videos have different codecs/resolutions
ffmpeg -i video1.mp4 -i video2.mp4 -i video3.mp4 \
-filter_complex "[0:v][0:a][1:v][1:a][2:v][2:a]concat=n=3:v=1:a=1[v][a]" \
-map "[v]" -map "[a]" output.mp4
形式の選択ガイド:
.mp3、.aac、.ts、.mpg、.mpeg→ Concat プロトコル(方法 1)を使用.mp4、.mov、.mkv→ Concat Demuxer(方法 2)を使用- コーデックまたは解像度が異なる場合 → Concat Filter(方法 3)を使用
速度を上げる/下げる:
# 2x speed
ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" -an output.mp4
# 0.5x speed (slow motion)
ffmpeg -i input.mp4 -filter:v "setpts=2.0*PTS" output.mp4
動画を回転:
# 90 degrees clockwise
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4
# 180 degrees
ffmpeg -i input.mp4 -vf "transpose=2,transpose=2" output.mp4
6. 字幕処理
字幕の追加、抽出、焼き付けを行います。
字幕を動画に焼き付け:
ffmpeg -i input.mp4 -vf subtitles=subtitles.srt output.mp4
ソフト字幕を追加:
ffmpeg -i input.mp4 -i subtitles.srt -c copy -c:s mov_text output.mp4
字幕を抽出:
ffmpeg -i input.mp4 -map 0:s:0 subtitles.srt
7. サムネイルの抽出
フレームを画像として抽出します。
指定した時点の単一フレーム:
ffmpeg -i input.mp4 -ss 00:00:05 -vframes 1 thumbnail.jpg
複数のサムネイル:
# One frame every 10 seconds
ffmpeg -i input.mp4 -vf fps=1/10 thumb%04d.jpg
# First 10 frames
ffmpeg -i input.mp4 -vframes 10 frame%04d.png
8. 圧縮と最適化
品質を維持しながら、ファイルサイズを小さくします。
動画を圧縮(バランス重視):
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k output.mp4
高圧縮(ファイルサイズをさらに縮小):
ffmpeg -i input.mp4 -c:v libx264 -crf 28 -preset veryslow -c:a aac -b:a 96k output.mp4
Web 向けに圧縮:
ffmpeg -i input.mp4 -c:v libx264 -preset medium -crf 23 -movflags +faststart -c:a aac -b:a 128k output.mp4
プラットフォーム別のプリセット
YouTube 向け最適化
ffmpeg -i input.mp4 \
-c:v libx264 -preset slow -crf 18 \
-c:a aac -b:a 192k \
-pix_fmt yuv420p \
-movflags +faststart \
youtube.mp4
Instagram ストーリー(9:16)
ffmpeg -i input.mp4 \
-vf "scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2" \
-c:v libx264 -preset medium -crf 23 \
-c:a aac -b:a 128k \
-t 15 \
instagram_story.mp4
Twitter/X(16:9、最長 2:20)
ffmpeg -i input.mp4 \
-vf scale=1280:720 \
-c:v libx264 -preset medium -crf 23 \
-c:a aac -b:a 128k \
-t 140 \
twitter.mp4
TikTok(9:16)
ffmpeg -i input.mp4 \
-vf "scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2" \
-c:v libx264 -preset medium -crf 23 \
-c:a aac -b:a 128k \
-t 60 \
tiktok.mp4
よくある使用例
画面録画の最適化
# Reduce file size of screen recordings
ffmpeg -i screen_recording.mov \
-c:v libx264 -preset medium -crf 23 \
-vf "scale=1920:-1" \
-c:a aac -b:a 128k \
optimized.mp4
一括変換
# Convert all MOV files to MP4
for i in *.mov; do
ffmpeg -i "$i" -c:v libx264 -crf 23 -c:a aac "${i%.mov}.mp4"
done
画像から動画を作成
# From image sequence
ffmpeg -framerate 30 -pattern_type glob -i '*.jpg' \
-c:v libx264 -pix_fmt yuv420p \
output.mp4
# Single image to video (5 seconds)
ffmpeg -loop 1 -i image.jpg -c:v libx264 -t 5 -pix_fmt yuv420p output.mp4
ベストプラクティス
-
必ず最初に入力ファイルを確認してください:
ffmpeg -i input.mp4 # Or use ffprobe for detailed info ffprobe -v quiet -print_format json -show_format -show_streams input.mp4 -
可能な場合は、再エンコードを避けるために
-c copyを使用してください:ffmpeg -i input.mp4 -ss 00:01:00 -t 30 -c copy output.mp4 -
-tフラグを使って、処理前にプレビューしてください:# Test on first 10 seconds ffmpeg -i input.mp4 -t 10 [other options] test.mp4 -
適切な CRF 値を使用してください:
- 18 = 見た目では劣化がわからない品質
- 23 = 高品質(デフォルト)
- 28 = 許容できる品質で、ファイルサイズは小さめ
- 範囲:0(可逆)~51(最低品質)
-
ウェブ動画には
-movflags +faststartを追加してください:- プログレッシブ再生が可能になります
- メタデータをファイルの先頭に移動します
エラー処理
このスキルを使用する場合は、必ず以下を行ってください:
- 入力ファイルが存在し、読み取り可能であることを確認する
- 処理前に ffmpeg がインストールされていることを確認する
- 出力先のパスが書き込み可能であることを確認する
- 適切なメッセージを表示し、エラーを適切に処理する
- 大きなファイルの処理中は進行状況を表示する
Claude 向けのガイドライン
ユーザーから動画/音声の処理を依頼された場合:
- リクエストからタスクの種類を特定する
- このスキルから適切なコマンドを選択する
- 前提条件(ffmpeg のインストール、入力ファイルの存在)を確認する
- 実行前にコマンドの動作を説明する
- 適切なエラー処理を行いながらコマンドを実行する
- 出力が正常に作成されたことを確認する
- 該当する場合は最適化を提案する
複雑なワークフローは手順に分け、それぞれを説明してください。
動画の連結の場合: 一時ファイルを避けるため、可能であれば printf を使ったプロセス置換を使用してください(連結セクションの方法 2 を参照)。必要な場合にのみ、一時的な list.txt に切り替えてください。
例
ユーザー:「この MOV ファイルを MP4 に変換して」 応答: H.264 コーデックを使用する MOV から MP4 への変換コマンドを使用します
ユーザー:「この動画から、10 秒地点から始まる 5 秒間の GIF を作成して」 応答: 時間範囲を指定して GIF を作成します
ユーザー:「この 4K 動画をウェブ用に 1080p にリサイズしたい」 応答: 解像度のスケーリングとウェブ最適化プリセットを組み合わせます
ユーザー:「音声を MP3 として抽出して」 応答: MP3 コーデックを使用する音声抽出コマンドを使用します
参考資料
- FFmpeg 公式ドキュメント:https://ffmpeg.org/documentation.html
- FFmpeg Wiki:https://trac.ffmpeg.org/wiki
- 対応コーデック:https://ffmpeg.org/ffmpeg-codecs.html
- フィルターのドキュメント:https://ffmpeg.org/ffmpeg-filters.html