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

资源