media-processing by mrgoonie/claudekit-skills
npx skills add https://github.com/mrgoonie/claudekit-skills --skill media-processing使用 FFmpeg 和 ImageMagick 命令行工具处理视频、音频和图像,用于转换、优化、流媒体和操作任务。
在以下情况下使用:
使用 FFmpeg 处理:
使用 ImageMagick 处理:
| 任务 | 工具 | 原因 |
|---|
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
| 视频编码 | FFmpeg | 原生视频编解码器支持 |
| 音频提取 | FFmpeg | 直接操作流 |
| 图像调整大小 | ImageMagick | 为静态图像优化 |
| 批量处理图像 | ImageMagick | mogrify 用于原地编辑 |
| 视频缩略图 | FFmpeg | 内置帧提取功能 |
| GIF 创建 | FFmpeg 或 ImageMagick | FFmpeg 用于视频源,ImageMagick 用于图像 |
| 流媒体 | FFmpeg | 直播流协议 |
| 图像特效 | ImageMagick | 丰富的滤镜库 |
brew install ffmpeg imagemagick
sudo apt-get install ffmpeg imagemagick
# 使用 winget
winget install ffmpeg
winget install ImageMagick.ImageMagick
# 或下载二进制文件
# FFmpeg: https://ffmpeg.org/download.html
# ImageMagick: https://imagemagick.org/script/download.php
ffmpeg -version
ffprobe -version
magick -version
# 或
convert -version
# 转换格式(复制流,快速)
ffmpeg -i input.mkv -c copy output.mp4
# 使用 H.264 重新编码
ffmpeg -i input.avi -c:v libx264 -crf 22 -c:a aac output.mp4
# 将视频调整为 720p
ffmpeg -i input.mp4 -vf scale=-1:720 -c:a copy output.mp4
# 提取音频(不重新编码)
ffmpeg -i video.mp4 -vn -c:a copy audio.m4a
# 转换为 MP3
ffmpeg -i video.mp4 -vn -q:a 0 audio.mp3
# 转换格式
magick input.png output.jpg
# 调整大小并保持宽高比
magick input.jpg -resize 800x600 output.jpg
# 创建方形缩略图
magick input.jpg -resize 200x200^ -gravity center -extent 200x200 thumb.jpg
# 将所有 JPEG 调整为 800 像素宽度
mogrify -resize 800x -quality 85 *.jpg
# 输出到单独的目录
mogrify -path ./output -resize 800x600 *.jpg
# 在 5 秒处提取帧
ffmpeg -ss 00:00:05 -i video.mp4 -vframes 1 -vf scale=320:-1 thumb.jpg
# 生成 HLS 播放列表
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
# 在角落添加水印
magick input.jpg watermark.png -gravity southeast \
-geometry +10+10 -composite output.jpg
# H.264,压缩效果好
ffmpeg -i input.mp4 \
-c:v libx264 -preset slow -crf 23 \
-c:a aac -b:a 128k \
-movflags +faststart \
output.mp4
# 生成多种尺寸
for size in 320 640 1024 1920; do
magick input.jpg -resize ${size}x -quality 85 "output-${size}w.jpg"
done
# 从 1:30 到 3:00(重新编码以确保精度)
ffmpeg -i input.mp4 -ss 00:01:30 -to 00:03:00 \
-c:v libx264 -c:a aac output.mp4
# 将 PNG 转换为优化的 JPEG
mogrify -path ./optimized -format jpg -quality 85 -strip *.png
# 使用调色板的高质量 GIF
ffmpeg -i input.mp4 -vf "fps=15,scale=640:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" output.gif
# 高斯模糊
magick input.jpg -gaussian-blur 0x8 output.jpg
# 第 1 遍(分析)
ffmpeg -y -i input.mkv -c:v libx264 -b:v 2600k -pass 1 -an -f null /dev/null
# 第 2 遍(编码)
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
# 调整大小、裁剪、边框、调整
magick input.jpg \
-resize 1000x1000^ \
-gravity center \
-crop 1000x1000+0+0 +repage \
-bordercolor black -border 5x5 \
-brightness-contrast 5x10 \
-quality 90 \
output.jpg
# 缩放、降噪、水印
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
magick -delay 100 -loop 0 frame*.png animated.gif
# 优化大小
magick animated.gif -fuzz 5% -layers Optimize optimized.gif
# 详细的 JSON 输出
ffprobe -v quiet -print_format json -show_format -show_streams input.mp4
# 获取分辨率
ffprobe -v error -select_streams v:0 \
-show_entries stream=width,height \
-of csv=s=x:p=0 input.mp4
# 基本信息
identify image.jpg
# 详细格式信息
identify -verbose image.jpg
# 自定义格式
identify -format "%f: %wx%h %b\n" image.jpg
-c copy 避免重新编码-strip 减小文件大小-interlace Plane 获得更好的网页加载效果references/ 目录中的详细指南:
-c:v - 视频编解码器(libx264, libx265, libvpx-vp9)-crf - 质量(0-51,值越低越好,23=默认)-preset - 速度/压缩率(ultrafast 到 veryslow)-b:v - 视频比特率(例如,2M, 2500k)-vf - 视频滤镜-c:a - 音频编解码器(aac, mp3, opus)-b:a - 音频比特率(例如,128k, 192k)-ar - 采样率(44100, 48000)800x600 - 适应(保持宽高比)800x600! - 强制精确尺寸800x600^ - 填充(可能裁剪)800x - 仅宽度x600 - 仅高度50% - 缩放百分比FFmpeg "Unknown encoder"
# 检查可用编码器
ffmpeg -encoders | grep h264
# 安装编解码器库
sudo apt-get install libx264-dev libx265-dev
ImageMagick "not authorized"
# 编辑策略文件
sudo nano /etc/ImageMagick-7/policy.xml
# 将 <policy domain="coder" rights="none" pattern="PDF" />
# 改为 <policy domain="coder" rights="read|write" pattern="PDF" />
内存错误
# 限制内存使用
ffmpeg -threads 4 input.mp4 output.mp4
magick -limit memory 2GB -limit map 4GB input.jpg output.jpg
每周安装数
286
仓库
GitHub 星标数
1.9K
首次出现
2026 年 1 月 22 日
安全审计
安装于
opencode234
gemini-cli219
claude-code218
codex216
cursor199
github-copilot185
Process video, audio, and images using FFmpeg and ImageMagick command-line tools for conversion, optimization, streaming, and manipulation tasks.
Use when:
Use FFmpeg for:
Use ImageMagick for:
| Task | Tool | Why |
|---|---|---|
| Video encoding | FFmpeg | Native video codec support |
| Audio extraction | FFmpeg | Direct stream manipulation |
| Image resize | ImageMagick | Optimized for still images |
| Batch images | ImageMagick | mogrify for in-place edits |
| Video thumbnails | FFmpeg | Frame extraction built-in |
| GIF creation | FFmpeg or ImageMagick | FFmpeg for video source, ImageMagick for images |
| Streaming | FFmpeg | Live streaming protocols |
| Image effects | ImageMagick | Rich filter library |
brew install ffmpeg imagemagick
sudo apt-get install ffmpeg imagemagick
# 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
# 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
# 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
# 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
# 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
-c copy-strip-interlace PlaneDetailed guides in references/:
-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-c:a - Audio codec (aac, mp3, opus)-b:a - Audio bitrate (e.g., 128k, 192k)-ar - Sample rate (44100, 48000)800x600 - Fit within (maintains aspect)800x600! - Force exact size800x600^ - Fill (may crop)800x - Width onlyx600 - Height only50% - Scale percentageFFmpeg "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
Weekly Installs
286
Repository
GitHub Stars
1.9K
First Seen
Jan 22, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykWarn
Installed on
opencode234
gemini-cli219
claude-code218
codex216
cursor199
github-copilot185
Skills CLI 使用指南:AI Agent 技能包管理器安装与管理教程
27,400 周安装