mcpField
M
media-processing

media-processing

github.com/samhvw8クリエイティブ・メディア1549 回インストール1 日前に更新
リポジトリ

media-processing について

FFmpeg と ImageMagick のコマンドラインツールで動画、音声、画像を処理するスキルです。変換、編集、最適化、解析、ストリーミングの手順と例を提供します。

主な機能

  1. 01FFmpegによる動画・音声変換
  2. 02画像編集と一括処理
  3. 03ストリーミングマニフェストの作成
  4. 04サムネイルとプレビューの生成
  5. 05メディアの解析と最適化

活用シーン

  1. 01動画のトランスコードと音声抽出
  2. 02画像の一括リサイズや透かし追加
  3. 03HLSプレイリストと動画プレビューの作成

インストール

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

$npx skills add https://github.com/samhvw8/dotfiles --skill media-processing

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
ffmpeg-encoding.md
ffmpeg-filters.md
ffmpeg-streaming.md
format-compatibility.md
imagemagick-batch.md
imagemagick-editing.md
scripts/
batch_resize.py
media_convert.py
requirements.txt
video_optimize.py
scripts/tests/
dot_coverage
requirements.txt
test_batch_resize.py
test_media_convert.py
test_video_optimize.py

詳細

メディア処理スキル

FFmpeg と ImageMagick のコマンドラインツールを使用して、変換、最適化、ストリーミング、編集などのタスクで動画、音声、画像を処理します。

このスキルを使用する場面

次の場合に使用します:

  • メディア形式(動画、音声、画像)を変換する
  • コーデック(H.264、H.265、VP9、AV1)を使って動画をエンコードする
  • 画像を処理する(サイズ変更、切り抜き、効果、ウォーターマーク)
  • 動画から音声を抽出する
  • ストリーミング用マニフェスト(HLS/DASH)を作成する
  • サムネイルやプレビューを生成する
  • メディアファイルを一括処理する
  • ファイルサイズと品質を最適化する
  • フィルターや効果を適用する
  • 合成画像や動画を作成する

ツールの選択ガイド

FFmpeg:動画/音声処理

次の場合に FFmpeg を使用します:

  • 動画のエンコード、変換、トランスコード
  • 音声の抽出、変換、ミキシング
  • ライブストリーミング(RTMP、HLS、DASH)
  • 動画フィルター(スケール、切り抜き、回転、オーバーレイ)
  • ハードウェアアクセラレーションによるエンコード
  • メディアファイルの検査(ffprobe)
  • フレームの抽出、連結
  • コーデックの選択と最適化
ImageMagick:画像処理

次の場合に ImageMagick を使用します:

  • 画像形式の変換(PNG、JPEG、WebP、GIF)
  • サイズ変更、切り抜き、変換
  • 画像の一括処理(mogrify)
  • 視覚効果(ぼかし、シャープ化、セピア)
  • テキストのオーバーレイとウォーターマーク
  • 画像の合成とモンタージュ
  • 色調整、フィルター
  • サムネイルの生成
選択マトリクス
タスクツール理由
動画エンコードFFmpegネイティブな動画コーデックのサポート
音声抽出FFmpegストリームを直接操作できる
画像サイズ変更ImageMagick静止画像に最適化されている
画像の一括処理ImageMagickmogrify でその場で編集できる
動画サムネイルFFmpegフレーム抽出機能を内蔵
GIF の作成FFmpeg または ImageMagick動画ソースには FFmpeg、画像には ImageMagick
ストリーミングFFmpegライブストリーミングプロトコル
画像効果ImageMagick豊富なフィルターライブラリ

インストール

macOS
brew install ffmpeg imagemagick
Ubuntu/Debian
sudo apt-get install ffmpeg imagemagick
Windows
# Using winget
winget install ffmpeg
winget install ImageMagick.ImageMagick

# Or download binaries
# FFmpeg: https://ffmpeg.org/download.html
# ImageMagick: https://imagemagick.org/script/download.php
インストールの確認
ffmpeg -version
ffprobe -version
magick -version
# or
convert -version

クイックスタートの例

動画変換
# Convert format (copy streams, fast)
ffmpeg -i input.mkv -c copy output.mp4

# Re-encode with H.264
ffmpeg -i input.avi -c:v libx264 -crf 22 -c:a aac output.mp4

# Resize video to 720p
ffmpeg -i input.mp4 -vf scale=-1:720 -c:a copy output.mp4
音声抽出
# Extract audio (no re-encoding)
ffmpeg -i video.mp4 -vn -c:a copy audio.m4a

# Convert to MP3
ffmpeg -i video.mp4 -vn -q:a 0 audio.mp3
画像処理
# Convert format
magick input.png output.jpg

# Resize maintaining aspect ratio
magick input.jpg -resize 800x600 output.jpg

# Create square thumbnail
magick input.jpg -resize 200x200^ -gravity center -extent 200x200 thumb.jpg
画像の一括サイズ変更
# Resize all JPEGs to 800px width
mogrify -resize 800x -quality 85 *.jpg

# Output to separate directory
mogrify -path ./output -resize 800x600 *.jpg
動画のサムネイル
# Extract frame at 5 seconds
ffmpeg -ss 00:00:05 -i video.mp4 -vframes 1 -vf scale=320:-1 thumb.jpg
HLS ストリーミング
# Generate HLS playlist
ffmpeg -i input.mp4 \
  -c:v libx264 -preset fast -crf 22 -g 48 \
  -c:a aac -b:a 128k \
  -f hls -hls_time 6 -hls_playlist_type vod \
  playlist.m3u8
画像のウォーターマーク
# Add watermark to corner
magick input.jpg watermark.png -gravity southeast \
  -geometry +10+10 -composite output.jpg

よくあるワークフロー

Web 向けに動画を最適化する
# H.264 with good compression
ffmpeg -i input.mp4 \
  -c:v libx264 -preset slow -crf 23 \
  -c:a aac -b:a 128k \
  -movflags +faststart \
  output.mp4
レスポンシブ画像を作成する
# Generate multiple sizes
for size in 320 640 1024 1920; do
  magick input.jpg -resize ${size}x -quality 85 "output-${size}w.jpg"
done
動画の一部分を抽出する
# From 1:30 to 3:00 (re-encode for precision)
ffmpeg -i input.mp4 -ss 00:01:30 -to 00:03:00 \
  -c:v libx264 -c:a aac output.mp4
画像を一括最適化する
# Convert PNG to optimized JPEG
mogrify -path ./optimized -format jpg -quality 85 -strip *.png
動画から GIF を作成する
# High quality GIF with palette
ffmpeg -i input.mp4 -vf "fps=15,scale=640:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" output.gif
画像にぼかし効果を適用する
# Gaussian blur
magick input.jpg -gaussian-blur 0x8 output.jpg

高度なテクニック

マルチパス動画エンコード
# Pass 1 (analysis)
ffmpeg -y -i input.mkv -c:v libx264 -b:v 2600k -pass 1 -an -f null /dev/null

# Pass 2 (encoding)
ffmpeg -i input.mkv -c:v libx264 -b:v 2600k -pass 2 -c:a aac output.mp4
ハードウェアアクセラレーションによるエンコード
# NVIDIA NVENC
ffmpeg -hwaccel cuda -i input.mp4 -c:v h264_nvenc -preset fast -crf 22 output.mp4

# Intel QuickSync
ffmpeg -hwaccel qsv -c:v h264_qsv -i input.mp4 -c:v h264_qsv output.mp4
複雑な画像処理パイプライン
# Resize, crop, border, adjust
magick input.jpg \
  -resize 1000x1000^ \
  -gravity center \
  -crop 1000x1000+0+0 +repage \
  -bordercolor black -border 5x5 \
  -brightness-contrast 5x10 \
  -quality 90 \
  output.jpg
動画フィルターチェーン
# Scale, denoise, watermark
ffmpeg -i video.mp4 -i logo.png \
  -filter_complex "[0:v]scale=1280:720,hqdn3d[v];[v][1:v]overlay=10:10" \
  -c:a copy output.mp4
画像からアニメーション GIF を作成する
# Create with delay
magick -delay 100 -loop 0 frame*.png animated.gif

# Optimize size
magick animated.gif -fuzz 5% -layers Optimize optimized.gif

メディア分析

動画のプロパティを調べる
# Detailed JSON output
ffprobe -v quiet -print_format json -show_format -show_streams input.mp4

# Get resolution
ffprobe -v error -select_streams v:0 \
  -show_entries stream=width,height \
  -of csv=s=x:p=0 input.mp4
画像情報
# Basic info
identify image.jpg

# Detailed format
identify -verbose image.jpg

# Custom format
identify -format "%f: %wx%h %b\n" image.jpg

パフォーマンスのヒント

  1. 品質管理には CRF を使用する - 動画ではビットレートより優れています
  2. 可能な場合はストリームをコピーする - -c copy を使い、再エンコードを避けます
  3. ハードウェアアクセラレーション - GPU エンコードは 5~10 倍高速です
  4. 適切なプリセットを選ぶ - 速度と圧縮率のバランスを取ります
  5. mogrify で一括処理する - 画像をその場で処理できます
  6. メタデータを削除する - -strip でファイルサイズを削減します
  7. プログレッシブ JPEG - -interlace Plane で Web ページの読み込みを改善します
  8. メモリを制限する - 大量のファイルを処理する際のクラッシュを防ぎます
  9. サンプルでテストする - 一括処理の前に設定を確認します
  10. 並列処理 - 複数のファイルには GNU Parallel を使用します

リファレンスドキュメント

詳細なガイドは references/ にあります:

  • ffmpeg-encoding.md - 動画/音声コーデック、品質の最適化、ハードウェアアクセラレーション
  • ffmpeg-streaming.md - HLS/DASH、ライブストリーミング、アダプティブビットレート
  • ffmpeg-filters.md - 動画/音声フィルター、複雑なフィルターグラフ
  • imagemagick-editing.md - 形式変換、効果、変換
  • imagemagick-batch.md - 一括処理、mogrify、並列処理
  • format-compatibility.md - 形式のサポート、コーデックの推奨事項

よく使うパラメーター

FFmpeg Video
  • -c:v - Video codec (libx264, libx265, libvpx-vp9)
  • -crf - Quality (0-51, lower=better, 23=default)
  • -preset - Speed/compression (ultrafast to veryslow)
  • -b:v - Video bitrate (e.g., 2M, 2500k)
  • -vf - Video filters
FFmpeg Audio
  • -c:a - Audio codec (aac, mp3, opus)
  • -b:a - Audio bitrate (e.g., 128k, 192k)
  • -ar - Sample rate (44100, 48000)
ImageMagick Geometry
  • 800x600 - Fit within (maintains aspect)
  • 800x600! - Force exact size
  • 800x600^ - Fill (may crop)
  • 800x - Width only
  • x600 - Height only
  • 50% - Scale percentage

Troubleshooting

FFmpeg "Unknown encoder"

# Check available encoders
ffmpeg -encoders | grep h264

# Install codec libraries
sudo apt-get install libx264-dev libx265-dev

ImageMagick "not authorized"

# Edit policy file
sudo nano /etc/ImageMagick-7/policy.xml
# Change <policy domain="coder" rights="none" pattern="PDF" />
# to <policy domain="coder" rights="read|write" pattern="PDF" />

Memory errors

# Limit memory usage
ffmpeg -threads 4 input.mp4 output.mp4
magick -limit memory 2GB -limit map 4GB input.jpg output.jpg

Resources

コメント