关于 media-processing
media-processing 是一项使用 FFmpeg 和 ImageMagick 命令行处理视频、音频与图像的技能,面向媒体转换与编辑任务。它涵盖批量处理、优化、流媒体生成和媒体分析。
主要功能
- 01视频编码、转码与滤镜处理
- 02音频提取、转换与混音
- 03图像转换、裁剪与效果处理
- 04批量处理与文件优化
- 05生成缩略图及 HLS/DASH 清单
适用场景
- 01将视频转为其他格式或编码
- 02从视频提取音轨并转换格式
- 03批量调整图像尺寸并压缩
- 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 | 内置帧提取功能 |
| 创建 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
性能提示
- 使用 CRF 控制质量 - 对视频而言,比使用比特率更好
- 尽可能复制流 - 使用
-c copy避免重新编码 - 硬件加速 - GPU 编码速度快 5-10 倍
- 选择合适的预设 - 平衡速度与压缩率
- 使用 mogrify 批处理 - 原位处理图像
- 移除元数据 - 使用
-strip减小文件大小 - 使用渐进式 JPEG - 使用
-interlace Plane加快网页加载 - 限制内存 - 避免处理大型批次时发生崩溃
- 先用样本测试 - 批处理前验证设置
- 并行处理 - 使用 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 size800x600^- Fill (may crop)800x- Width onlyx600- Height only50%- 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
- FFmpeg: https://ffmpeg.org/documentation.html
- FFmpeg Wiki: https://trac.ffmpeg.org/
- ImageMagick: https://imagemagick.org/
- ImageMagick Usage: https://imagemagick.org/Usage/
评论
支持 Markdown