media-processing

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Media 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

决策矩阵

TaskToolWhy
Video encodingFFmpegNative video codec support
Audio extractionFFmpegDirect stream manipulation
Image resizeImageMagickOptimized for still images
Batch imagesImageMagickmogrify for in-place edits
Video thumbnailsFFmpegFrame extraction built-in
GIF creationFFmpeg or ImageMagickFFmpeg for video source, ImageMagick for images
StreamingFFmpegLive streaming protocols
Image effectsImageMagickRich filter library
任务工具原因
视频编码FFmpeg原生支持视频编码标准
音频提取FFmpeg直接操作媒体流
图像调整大小ImageMagick针对静态图像优化
批量图像处理ImageMagick使用mogrify进行原地编辑
视频缩略图FFmpeg内置帧提取功能
GIF创建FFmpeg或ImageMagickFFmpeg处理视频源,ImageMagick处理图像源
流媒体推流FFmpeg支持直播协议
图像特效ImageMagick丰富的滤镜库

Installation

安装

macOS

macOS系统

bash
brew install ffmpeg imagemagick
bash
brew install ffmpeg imagemagick

Ubuntu/Debian

Ubuntu/Debian系统

bash
sudo apt-get install ffmpeg imagemagick
bash
sudo apt-get install ffmpeg imagemagick

Windows

Windows系统

bash
undefined
bash
undefined

Using winget

使用winget

winget install ffmpeg winget install ImageMagick.ImageMagick
winget install ffmpeg winget install ImageMagick.ImageMagick

Or download binaries

或下载二进制文件

undefined
undefined

Verify Installation

验证安装

bash
ffmpeg -version
ffprobe -version
magick -version
bash
ffmpeg -version
ffprobe -version
magick -version

or

convert -version
undefined
convert -version
undefined

Quick Start Examples

快速入门示例

Video Conversion

视频格式转换

bash
undefined
bash
undefined

Convert 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
undefined
ffmpeg -i input.mp4 -vf scale=-1:720 -c:a copy output.mp4
undefined

Audio Extraction

音频提取

bash
undefined
bash
undefined

Extract 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
undefined
ffmpeg -i video.mp4 -vn -q:a 0 audio.mp3
undefined

Image Processing

图像处理

bash
undefined
bash
undefined

Convert 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
undefined
magick input.jpg -resize 200x200^ -gravity center -extent 200x200 thumb.jpg
undefined

Batch Image Resize

批量调整图像大小

bash
undefined
bash
undefined

Resize 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
undefined
mogrify -path ./output -resize 800x600 *.jpg
undefined

Video Thumbnail

视频缩略图

bash
undefined
bash
undefined

Extract frame at 5 seconds

提取第5秒的帧

ffmpeg -ss 00:00:05 -i video.mp4 -vframes 1 -vf scale=320:-1 thumb.jpg
undefined
ffmpeg -ss 00:00:05 -i video.mp4 -vframes 1 -vf scale=320:-1 thumb.jpg
undefined

HLS Streaming

HLS流媒体

bash
undefined
bash
undefined

Generate 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
undefined
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
undefined

Image Watermark

图像水印

bash
undefined
bash
undefined

Add watermark to corner

在角落添加水印

magick input.jpg watermark.png -gravity southeast
-geometry +10+10 -composite output.jpg
undefined
magick input.jpg watermark.png -gravity southeast
-geometry +10+10 -composite output.jpg
undefined

Common Workflows

常见工作流

Optimize Video for Web

优化视频用于网页播放

bash
undefined
bash
undefined

H.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
undefined
ffmpeg -i input.mp4
-c:v libx264 -preset slow -crf 23
-c:a aac -b:a 128k
-movflags +faststart
output.mp4
undefined

Create Responsive Images

创建响应式图像

bash
undefined
bash
undefined

Generate multiple sizes

生成多种尺寸

for size in 320 640 1024 1920; do magick input.jpg -resize ${size}x -quality 85 "output-${size}w.jpg" done
undefined
for size in 320 640 1024 1920; do magick input.jpg -resize ${size}x -quality 85 "output-${size}w.jpg" done
undefined

Extract Video Segment

提取视频片段

bash
undefined
bash
undefined

From 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
undefined
ffmpeg -i input.mp4 -ss 00:01:30 -to 00:03:00
-c:v libx264 -c:a aac output.mp4
undefined

Batch Image Optimization

批量图像优化

bash
undefined
bash
undefined

Convert PNG to optimized JPEG

将PNG转换为优化后的JPEG

mogrify -path ./optimized -format jpg -quality 85 -strip *.png
undefined
mogrify -path ./optimized -format jpg -quality 85 -strip *.png
undefined

Video GIF Creation

视频转GIF

bash
undefined
bash
undefined

High 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
undefined
ffmpeg -i input.mp4 -vf "fps=15,scale=640:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" output.gif
undefined

Image Blur Effect

图像模糊特效

bash
undefined
bash
undefined

Gaussian blur

高斯模糊

magick input.jpg -gaussian-blur 0x8 output.jpg
undefined
magick input.jpg -gaussian-blur 0x8 output.jpg
undefined

Advanced Techniques

高级技巧

Multi-Pass Video Encoding

视频多遍编码

bash
undefined
bash
undefined

Pass 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
undefined
ffmpeg -i input.mkv -c:v libx264 -b:v 2600k -pass 2 -c:a aac output.mp4
undefined

Hardware-Accelerated Encoding

硬件加速编码

bash
undefined
bash
undefined

NVIDIA 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
undefined
ffmpeg -hwaccel qsv -c:v h264_qsv -i input.mp4 -c:v h264_qsv output.mp4
undefined

Complex Image Pipeline

复杂图像流水线

bash
undefined
bash
undefined

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
undefined
magick input.jpg
-resize 1000x1000^
-gravity center
-crop 1000x1000+0+0 +repage
-bordercolor black -border 5x5
-brightness-contrast 5x10
-quality 90
output.jpg
undefined

Video Filter Chains

视频滤镜链

bash
undefined
bash
undefined

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
undefined
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
undefined

Animated GIF from Images

图像生成动态GIF

bash
undefined
bash
undefined

Create 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
undefined
magick animated.gif -fuzz 5% -layers Optimize optimized.gif
undefined

Media Analysis

媒体分析

Inspect Video Properties

查看视频属性

bash
undefined
bash
undefined

Detailed 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
undefined
ffprobe -v error -select_streams v:0
-show_entries stream=width,height
-of csv=s=x:p=0 input.mp4
undefined

Image Information

图像信息

bash
undefined
bash
undefined

Basic 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
undefined
identify -format "%f: %wx%h %b\n" image.jpg
undefined

Performance Tips

性能优化技巧

  1. Use CRF for quality control - Better than bitrate for video
  2. Copy streams when possible - Avoid re-encoding with
    -c copy
  3. Hardware acceleration - GPU encoding 5-10x faster
  4. Appropriate presets - Balance speed vs compression
  5. Batch with mogrify - In-place image processing
  6. Strip metadata - Reduce file size with
    -strip
  7. Progressive JPEG - Better web loading with
    -interlace Plane
  8. Limit memory - Prevent crashes on large batches
  9. Test on samples - Verify settings before batch
  10. Parallel processing - Use GNU Parallel for multiple files
  1. 使用CRF控制质量 - 比码率更适合视频质量控制
  2. 尽可能复制流 - 使用
    -c copy
    避免重新编码
  3. 硬件加速 - GPU编码速度提升5-10倍
  4. 选择合适的预设 - 平衡速度与压缩比
  5. 使用mogrify批量处理 - 原地图像处理
  6. 去除元数据 - 使用
    -strip
    减小文件大小
  7. 渐进式JPEG - 使用
    -interlace Plane
    优化网页加载
  8. 限制内存使用 - 避免大批次处理时崩溃
  9. 先测试样本 - 批量处理前验证设置
  10. 并行处理 - 使用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视频参数

  • -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:v
    - 视频编码(libx264、libx265、libvpx-vp9)
  • -crf
    - 质量控制(0-51,值越小质量越好,默认23)
  • -preset
    - 速度/压缩比(ultrafast到veryslow)
  • -b:v
    - 视频码率(如2M、2500k)
  • -vf
    - 视频滤镜

FFmpeg Audio

FFmpeg音频参数

  • -c:a
    - Audio codec (aac, mp3, opus)
  • -b:a
    - Audio bitrate (e.g., 128k, 192k)
  • -ar
    - Sample rate (44100, 48000)
  • -c:a
    - 音频编码(aac、mp3、opus)
  • -b:a
    - 音频码率(如128k、192k)
  • -ar
    - 采样率(44100、48000)

ImageMagick Geometry

ImageMagick几何参数

  • 800x600
    - Fit within (maintains aspect)
  • 800x600!
    - Force exact size
  • 800x600^
    - Fill (may crop)
  • 800x
    - Width only
  • x600
    - Height only
  • 50%
    - Scale percentage
  • 800x600
    - 按比例适配该尺寸
  • 800x600!
    - 强制使用精确尺寸
  • 800x600^
    - 填充至该尺寸(可能裁剪)
  • 800x
    - 仅指定宽度
  • x600
    - 仅指定高度
  • 50%
    - 按比例缩放

Troubleshooting

故障排除

FFmpeg "Unknown encoder"
bash
undefined
FFmpeg提示"Unknown encoder"
bash
undefined

Check available encoders

查看可用编码器

ffmpeg -encoders | grep h264
ffmpeg -encoders | grep h264

Install codec libraries

安装编码库

sudo apt-get install libx264-dev libx265-dev

**ImageMagick "not authorized"**
```bash
sudo apt-get install libx264-dev libx265-dev

**ImageMagick提示"not authorized"**
```bash

Edit 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

**内存错误**
```bash

Limit memory usage

限制内存使用

ffmpeg -threads 4 input.mp4 output.mp4 magick -limit memory 2GB -limit map 4GB input.jpg output.jpg
undefined
ffmpeg -threads 4 input.mp4 output.mp4 magick -limit memory 2GB -limit map 4GB input.jpg output.jpg
undefined

Resources

资源链接