media-processing
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseMedia Processing Skill
多媒体处理技能
Process video, audio, and images using FFmpeg and ImageMagick command-line tools for conversion, optimization, streaming, and manipulation tasks.
使用FFmpeg与ImageMagick命令行工具完成视频、音频和图像的转换、优化、流媒体及编辑任务。
When to Use This Skill
何时使用本技能
Use when:
- Converting media formats (video, audio, images)
- Encoding video with codecs (H.264, H.265, VP9, AV1)
- Processing images (resize, crop, effects, watermarks)
- Extracting audio from video
- Creating streaming manifests (HLS/DASH)
- Generating thumbnails and previews
- Batch processing media files
- Optimizing file sizes and quality
- Applying filters and effects
- Creating composite images or videos
适用场景:
- 转换媒体格式(视频、音频、图像)
- 使用编码标准(H.264、H.265、VP9、AV1)编码视频
- 图像处理(调整大小、裁剪、添加特效、水印)
- 从视频中提取音频
- 创建流媒体清单(HLS/DASH)
- 生成缩略图和预览图
- 批量处理媒体文件
- 优化文件大小与质量
- 应用滤镜与特效
- 创建合成图像或视频
Tool Selection Guide
工具选择指南
FFmpeg: Video/Audio Processing
FFmpeg:音视频处理
Use FFmpeg for:
- Video encoding, conversion, transcoding
- Audio extraction, conversion, mixing
- Live streaming (RTMP, HLS, DASH)
- Video filters (scale, crop, rotate, overlay)
- Hardware-accelerated encoding
- Media file inspection (ffprobe)
- Frame extraction, concatenation
- Codec selection and optimization
FFmpeg适用于:
- 视频编码、格式转换、转码
- 音频提取、格式转换、混音
- 直播流媒体(RTMP、HLS、DASH)
- 视频滤镜(缩放、裁剪、旋转、叠加)
- 硬件加速编码
- 媒体文件检测(ffprobe)
- 帧提取、视频拼接
- 编码标准选择与优化
ImageMagick: Image Processing
ImageMagick:图像处理
Use ImageMagick for:
- Image format conversion (PNG, JPEG, WebP, GIF)
- Resizing, cropping, transformations
- Batch image processing (mogrify)
- Visual effects (blur, sharpen, sepia)
- Text overlays and watermarks
- Image composition and montages
- Color adjustments, filters
- Thumbnail generation
ImageMagick适用于:
- 图像格式转换(PNG、JPEG、WebP、GIF)
- 调整大小、裁剪、几何变换
- 批量图像处理(mogrify)
- 视觉特效(模糊、锐化、复古色调)
- 文字叠加与水印
- 图像合成与拼接
- 色彩调整、滤镜应用
- 缩略图生成
Decision Matrix
决策矩阵
| 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 |
| 任务 | 工具 | 原因 |
|---|---|---|
| 视频编码 | FFmpeg | 原生支持视频编码标准 |
| 音频提取 | FFmpeg | 直接操作媒体流 |
| 图像调整大小 | ImageMagick | 针对静态图像优化 |
| 批量图像处理 | ImageMagick | 使用mogrify进行原地编辑 |
| 视频缩略图 | FFmpeg | 内置帧提取功能 |
| GIF创建 | FFmpeg或ImageMagick | FFmpeg处理视频源,ImageMagick处理图像源 |
| 流媒体推流 | FFmpeg | 支持直播协议 |
| 图像特效 | ImageMagick | 丰富的滤镜库 |
Installation
安装
macOS
macOS系统
bash
brew install ffmpeg imagemagickbash
brew install ffmpeg imagemagickUbuntu/Debian
Ubuntu/Debian系统
bash
sudo apt-get install ffmpeg imagemagickbash
sudo apt-get install ffmpeg imagemagickWindows
Windows系统
bash
undefinedbash
undefinedUsing winget
使用winget
winget install ffmpeg
winget install ImageMagick.ImageMagick
winget install ffmpeg
winget install ImageMagick.ImageMagick
Or download binaries
或下载二进制文件
FFmpeg: https://ffmpeg.org/download.html
FFmpeg: https://ffmpeg.org/download.html
ImageMagick: https://imagemagick.org/script/download.php
ImageMagick: https://imagemagick.org/script/download.php
undefinedundefinedVerify Installation
验证安装
bash
ffmpeg -version
ffprobe -version
magick -versionbash
ffmpeg -version
ffprobe -version
magick -versionor
或
convert -version
undefinedconvert -version
undefinedQuick Start Examples
快速入门示例
Video Conversion
视频格式转换
bash
undefinedbash
undefinedConvert format (copy streams, fast)
转换格式(复制流,快速处理)
ffmpeg -i input.mkv -c copy output.mp4
ffmpeg -i input.mkv -c copy output.mp4
Re-encode with H.264
使用H.264重新编码
ffmpeg -i input.avi -c:v libx264 -crf 22 -c:a aac output.mp4
ffmpeg -i input.avi -c:v libx264 -crf 22 -c:a aac output.mp4
Resize video to 720p
将视频调整为720p分辨率
ffmpeg -i input.mp4 -vf scale=-1:720 -c:a copy output.mp4
undefinedffmpeg -i input.mp4 -vf scale=-1:720 -c:a copy output.mp4
undefinedAudio Extraction
音频提取
bash
undefinedbash
undefinedExtract audio (no re-encoding)
提取音频(不重新编码)
ffmpeg -i video.mp4 -vn -c:a copy audio.m4a
ffmpeg -i video.mp4 -vn -c:a copy audio.m4a
Convert to MP3
转换为MP3格式
ffmpeg -i video.mp4 -vn -q:a 0 audio.mp3
undefinedffmpeg -i video.mp4 -vn -q:a 0 audio.mp3
undefinedImage Processing
图像处理
bash
undefinedbash
undefinedConvert format
转换图像格式
magick input.png output.jpg
magick input.png output.jpg
Resize maintaining aspect ratio
按比例调整大小
magick input.jpg -resize 800x600 output.jpg
magick input.jpg -resize 800x600 output.jpg
Create square thumbnail
创建方形缩略图
magick input.jpg -resize 200x200^ -gravity center -extent 200x200 thumb.jpg
undefinedmagick input.jpg -resize 200x200^ -gravity center -extent 200x200 thumb.jpg
undefinedBatch Image Resize
批量调整图像大小
bash
undefinedbash
undefinedResize all JPEGs to 800px width
将所有JPEG图像调整为800px宽度
mogrify -resize 800x -quality 85 *.jpg
mogrify -resize 800x -quality 85 *.jpg
Output to separate directory
输出到指定目录
mogrify -path ./output -resize 800x600 *.jpg
undefinedmogrify -path ./output -resize 800x600 *.jpg
undefinedVideo Thumbnail
视频缩略图
bash
undefinedbash
undefinedExtract frame at 5 seconds
提取第5秒的帧
ffmpeg -ss 00:00:05 -i video.mp4 -vframes 1 -vf scale=320:-1 thumb.jpg
undefinedffmpeg -ss 00:00:05 -i video.mp4 -vframes 1 -vf scale=320:-1 thumb.jpg
undefinedHLS Streaming
HLS流媒体
bash
undefinedbash
undefinedGenerate HLS playlist
生成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
-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
undefinedffmpeg -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
-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
undefinedImage Watermark
图像水印
bash
undefinedbash
undefinedAdd watermark to corner
在角落添加水印
magick input.jpg watermark.png -gravity southeast
-geometry +10+10 -composite output.jpg
-geometry +10+10 -composite output.jpg
undefinedmagick input.jpg watermark.png -gravity southeast
-geometry +10+10 -composite output.jpg
-geometry +10+10 -composite output.jpg
undefinedCommon Workflows
常见工作流
Optimize Video for Web
优化视频用于网页播放
bash
undefinedbash
undefinedH.264 with good compression
高压缩率的H.264编码
ffmpeg -i input.mp4
-c:v libx264 -preset slow -crf 23
-c:a aac -b:a 128k
-movflags +faststart
output.mp4
-c:v libx264 -preset slow -crf 23
-c:a aac -b:a 128k
-movflags +faststart
output.mp4
undefinedffmpeg -i input.mp4
-c:v libx264 -preset slow -crf 23
-c:a aac -b:a 128k
-movflags +faststart
output.mp4
-c:v libx264 -preset slow -crf 23
-c:a aac -b:a 128k
-movflags +faststart
output.mp4
undefinedCreate Responsive Images
创建响应式图像
bash
undefinedbash
undefinedGenerate multiple sizes
生成多种尺寸
for size in 320 640 1024 1920; do
magick input.jpg -resize ${size}x -quality 85 "output-${size}w.jpg"
done
undefinedfor size in 320 640 1024 1920; do
magick input.jpg -resize ${size}x -quality 85 "output-${size}w.jpg"
done
undefinedExtract Video Segment
提取视频片段
bash
undefinedbash
undefinedFrom 1:30 to 3:00 (re-encode for precision)
提取1:30到3:00的片段(重新编码保证精度)
ffmpeg -i input.mp4 -ss 00:01:30 -to 00:03:00
-c:v libx264 -c:a aac output.mp4
-c:v libx264 -c:a aac output.mp4
undefinedffmpeg -i input.mp4 -ss 00:01:30 -to 00:03:00
-c:v libx264 -c:a aac output.mp4
-c:v libx264 -c:a aac output.mp4
undefinedBatch Image Optimization
批量图像优化
bash
undefinedbash
undefinedConvert PNG to optimized JPEG
将PNG转换为优化后的JPEG
mogrify -path ./optimized -format jpg -quality 85 -strip *.png
undefinedmogrify -path ./optimized -format jpg -quality 85 -strip *.png
undefinedVideo GIF Creation
视频转GIF
bash
undefinedbash
undefinedHigh quality GIF with palette
使用调色板生成高质量GIF
ffmpeg -i input.mp4 -vf "fps=15,scale=640:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" output.gif
undefinedffmpeg -i input.mp4 -vf "fps=15,scale=640:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" output.gif
undefinedImage Blur Effect
图像模糊特效
bash
undefinedbash
undefinedGaussian blur
高斯模糊
magick input.jpg -gaussian-blur 0x8 output.jpg
undefinedmagick input.jpg -gaussian-blur 0x8 output.jpg
undefinedAdvanced Techniques
高级技巧
Multi-Pass Video Encoding
视频多遍编码
bash
undefinedbash
undefinedPass 1 (analysis)
第一遍(分析)
ffmpeg -y -i input.mkv -c:v libx264 -b:v 2600k -pass 1 -an -f null /dev/null
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
undefinedffmpeg -i input.mkv -c:v libx264 -b:v 2600k -pass 2 -c:a aac output.mp4
undefinedHardware-Accelerated Encoding
硬件加速编码
bash
undefinedbash
undefinedNVIDIA NVENC
NVIDIA NVENC
ffmpeg -hwaccel cuda -i input.mp4 -c:v h264_nvenc -preset fast -crf 22 output.mp4
ffmpeg -hwaccel cuda -i input.mp4 -c:v h264_nvenc -preset fast -crf 22 output.mp4
Intel QuickSync
Intel QuickSync
ffmpeg -hwaccel qsv -c:v h264_qsv -i input.mp4 -c:v h264_qsv output.mp4
undefinedffmpeg -hwaccel qsv -c:v h264_qsv -i input.mp4 -c:v h264_qsv output.mp4
undefinedComplex Image Pipeline
复杂图像流水线
bash
undefinedbash
undefinedResize, 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
-resize 1000x1000^
-gravity center
-crop 1000x1000+0+0 +repage
-bordercolor black -border 5x5
-brightness-contrast 5x10
-quality 90
output.jpg
undefinedmagick input.jpg
-resize 1000x1000^
-gravity center
-crop 1000x1000+0+0 +repage
-bordercolor black -border 5x5
-brightness-contrast 5x10
-quality 90
output.jpg
-resize 1000x1000^
-gravity center
-crop 1000x1000+0+0 +repage
-bordercolor black -border 5x5
-brightness-contrast 5x10
-quality 90
output.jpg
undefinedVideo Filter Chains
视频滤镜链
bash
undefinedbash
undefinedScale, 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
-filter_complex "[0:v]scale=1280:720,hqdn3d[v];[v][1:v]overlay=10:10"
-c:a copy output.mp4
undefinedffmpeg -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
-filter_complex "[0:v]scale=1280:720,hqdn3d[v];[v][1:v]overlay=10:10"
-c:a copy output.mp4
undefinedAnimated GIF from Images
图像生成动态GIF
bash
undefinedbash
undefinedCreate with delay
创建带延迟的GIF
magick -delay 100 -loop 0 frame*.png animated.gif
magick -delay 100 -loop 0 frame*.png animated.gif
Optimize size
优化大小
magick animated.gif -fuzz 5% -layers Optimize optimized.gif
undefinedmagick animated.gif -fuzz 5% -layers Optimize optimized.gif
undefinedMedia Analysis
媒体分析
Inspect Video Properties
查看视频属性
bash
undefinedbash
undefinedDetailed JSON output
详细JSON输出
ffprobe -v quiet -print_format json -show_format -show_streams input.mp4
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
-show_entries stream=width,height
-of csv=s=x:p=0 input.mp4
undefinedffprobe -v error -select_streams v:0
-show_entries stream=width,height
-of csv=s=x:p=0 input.mp4
-show_entries stream=width,height
-of csv=s=x:p=0 input.mp4
undefinedImage Information
图像信息
bash
undefinedbash
undefinedBasic info
基础信息
identify image.jpg
identify image.jpg
Detailed format
详细格式
identify -verbose image.jpg
identify -verbose image.jpg
Custom format
自定义格式
identify -format "%f: %wx%h %b\n" image.jpg
undefinedidentify -format "%f: %wx%h %b\n" image.jpg
undefinedPerformance Tips
性能优化技巧
- Use CRF for quality control - Better than bitrate for video
- Copy streams when possible - Avoid re-encoding with
-c copy - Hardware acceleration - GPU encoding 5-10x faster
- Appropriate presets - Balance speed vs compression
- Batch with mogrify - In-place image processing
- Strip metadata - Reduce file size with
-strip - Progressive JPEG - Better web loading with
-interlace Plane - Limit memory - Prevent crashes on large batches
- Test on samples - Verify settings before batch
- Parallel processing - Use GNU Parallel for multiple files
- 使用CRF控制质量 - 比码率更适合视频质量控制
- 尽可能复制流 - 使用避免重新编码
-c copy - 硬件加速 - GPU编码速度提升5-10倍
- 选择合适的预设 - 平衡速度与压缩比
- 使用mogrify批量处理 - 原地图像处理
- 去除元数据 - 使用减小文件大小
-strip - 渐进式JPEG - 使用优化网页加载
-interlace Plane - 限制内存使用 - 避免大批次处理时崩溃
- 先测试样本 - 批量处理前验证设置
- 并行处理 - 使用GNU Parallel处理多文件
Reference Documentation
参考文档
Detailed guides in :
references/- ffmpeg-encoding.md - Video/audio codecs, quality optimization, hardware acceleration
- ffmpeg-streaming.md - HLS/DASH, live streaming, adaptive bitrate
- ffmpeg-filters.md - Video/audio filters, complex filtergraphs
- imagemagick-editing.md - Format conversion, effects, transformations
- imagemagick-batch.md - Batch processing, mogrify, parallel operations
- format-compatibility.md - Format support, codec recommendations
references/- ffmpeg-encoding.md - 音视频编码标准、质量优化、硬件加速
- ffmpeg-streaming.md - HLS/DASH、直播推流、自适应码率
- ffmpeg-filters.md - 音视频滤镜、复杂滤镜图
- imagemagick-editing.md - 格式转换、特效、几何变换
- imagemagick-batch.md - 批量处理、mogrify、并行操作
- format-compatibility.md - 格式支持、编码推荐
Common Parameters
常用参数
FFmpeg Video
FFmpeg视频参数
- - Video codec (libx264, libx265, libvpx-vp9)
-c:v - - Quality (0-51, lower=better, 23=default)
-crf - - Speed/compression (ultrafast to veryslow)
-preset - - Video bitrate (e.g., 2M, 2500k)
-b:v - - Video filters
-vf
- - 视频编码(libx264、libx265、libvpx-vp9)
-c:v - - 质量控制(0-51,值越小质量越好,默认23)
-crf - - 速度/压缩比(ultrafast到veryslow)
-preset - - 视频码率(如2M、2500k)
-b:v - - 视频滤镜
-vf
FFmpeg Audio
FFmpeg音频参数
- - Audio codec (aac, mp3, opus)
-c:a - - Audio bitrate (e.g., 128k, 192k)
-b:a - - Sample rate (44100, 48000)
-ar
- - 音频编码(aac、mp3、opus)
-c:a - - 音频码率(如128k、192k)
-b:a - - 采样率(44100、48000)
-ar
ImageMagick Geometry
ImageMagick几何参数
- - Fit within (maintains aspect)
800x600 - - Force exact size
800x600! - - Fill (may crop)
800x600^ - - Width only
800x - - Height only
x600 - - Scale percentage
50%
- - 按比例适配该尺寸
800x600 - - 强制使用精确尺寸
800x600! - - 填充至该尺寸(可能裁剪)
800x600^ - - 仅指定宽度
800x - - 仅指定高度
x600 - - 按比例缩放
50%
Troubleshooting
故障排除
FFmpeg "Unknown encoder"
bash
undefinedFFmpeg提示"Unknown encoder"
bash
undefinedCheck available encoders
查看可用编码器
ffmpeg -encoders | grep h264
ffmpeg -encoders | grep h264
Install codec libraries
安装编码库
sudo apt-get install libx264-dev libx265-dev
**ImageMagick "not authorized"**
```bashsudo apt-get install libx264-dev libx265-dev
**ImageMagick提示"not authorized"**
```bashEdit policy file
编辑策略文件
sudo nano /etc/ImageMagick-7/policy.xml
sudo nano /etc/ImageMagick-7/policy.xml
Change <policy domain="coder" rights="none" pattern="PDF" />
将 <policy domain="coder" rights="none" pattern="PDF" />
to <policy domain="coder" rights="read|write" pattern="PDF" />
修改为 <policy domain="coder" rights="read|write" pattern="PDF" />
**Memory errors**
```bash
**内存错误**
```bashLimit memory usage
限制内存使用
ffmpeg -threads 4 input.mp4 output.mp4
magick -limit memory 2GB -limit map 4GB input.jpg output.jpg
undefinedffmpeg -threads 4 input.mp4 output.mp4
magick -limit memory 2GB -limit map 4GB input.jpg output.jpg
undefinedResources
资源链接
- FFmpeg: https://ffmpeg.org/documentation.html
- FFmpeg Wiki: https://trac.ffmpeg.org/
- ImageMagick: https://imagemagick.org/
- ImageMagick Usage: https://imagemagick.org/Usage/
- FFmpeg: https://ffmpeg.org/documentation.html
- FFmpeg Wiki: https://trac.ffmpeg.org/
- ImageMagick: https://imagemagick.org/
- ImageMagick用法指南: https://imagemagick.org/Usage/