mcpField
M
media-processing

media-processing

github.com/jackspace创意与媒体1648 次安装12 周前更新
代码仓库

关于 media-processing

media-processing 是一项使用 FFmpeg 和 ImageMagick 命令行处理视频、音频与图像的技能,面向媒体转换与编辑任务。它涵盖批量处理、优化、流媒体生成和媒体分析。

主要功能

  1. 01视频编码、转码与滤镜处理
  2. 02音频提取、转换与混音
  3. 03图像转换、裁剪与效果处理
  4. 04批量处理与文件优化
  5. 05生成缩略图及 HLS/DASH 清单

适用场景

  1. 01将视频转为其他格式或编码
  2. 02从视频提取音轨并转换格式
  3. 03批量调整图像尺寸并压缩
  4. 04生成视频缩略图或 HLS 播放清单

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jackspace/claudeskillz --skill media-processing

安装后在 Claude Code 中输入/media-processing确认已加载。

附带文件SKILL.json

详细介绍

媒体处理技能

使用 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专为静态图像优化
批量处理图像ImageMagick使用 mogrify 原位编辑
视频缩略图FFmpeg内置帧提取功能
创建 GIFFFmpeg 或 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 加快网页加载
  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

评论

支持 Markdown