Comprehensive guide for professional video and audio manipulation using FFmpeg and FFprobe.
SKILL.md
FFmpeg Master
Comprehensive guide for professional video and audio manipulation using FFmpeg and FFprobe.
Core Concepts
FFmpeg is the leading multimedia framework, able to decode, encode, transcode, mux, demux, stream, filter and play almost anything that humans and machines have created. It is a command-line tool that processes streams through a complex pipeline of demuxers, decoders, filters, encoders, and muxers.
Common Operations
bash
# Basic Transcoding (MP4 to MKV)
ffmpeg -i input.mp4 output.mkv
# Change Video Codec (to H.265/HEVC)
ffmpeg -i input.mp4 -c:v libx265 -crf 28 -c:a copy output.mp4
# Extract Audio (No Video)
ffmpeg -i input.mp4 -vn -c:a libmp3lame -q:a 2 output.mp3
# Resize/Scale Video
ffmpeg -i input.mp4 -vf "scale=1280:720" output.mp4
# Cut Video (Start at 10s, Duration 30s)
ffmpeg -i input.mp4 -ss 00:00:10 -t 00:00:30 -c copy output.mp4
# Fast Precise Cut (Re-encoding only the cut points is complex, so standard re-encoding is safer for precision)
ffmpeg -ss 00:00:10 -i input.mp4 -to 00:00:40 -c:v libx264 -crf 23 -c:a aac output.mp4
# Concatenate Files (using demuxer)
# Create filelist.txt: file 'part1.mp4' \n file 'part2.mp4'
ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4
# Speed Up/Slow Down Video (2x speed)
ffmpeg -i input.mp4 -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mp4
Processing Categories & When to Use
Codecs & Quality
Option
Use When
-c:v libx264
Standard H.264 encoding (best compatibility)
-c:v libx265
H.265/HEVC encoding (best compression/quality)
-crf [0-51]
Constant Rate Factor (lower is higher quality, 18-28 recommended)
-preset
Encoding speed vs compression (ultrafast, medium, veryslow)
-c:a copy
Pass-through audio without re-encoding (saves time/quality)
Filters & Manipulation
Filter
Use When
scale
Changing resolution (e.g., scale=1920:-1 for 1080p width)
crop
Removing edges (e.g., crop=w:h:x:y)
transpose
Rotating video (1=90deg CW, 2=90deg CCW)
fps
Changing frame rate (e.g., fps=30)
drawtext
Adding text overlays/watermarks
overlay
Picture-in-picture or adding image watermarks
fade
Adding fade-in/out effects (e.g., fade=in:0:30 for first 30 frames)
volume
Adjusting audio levels (e.g., volume=1.5 for 150% volume)
setpts
Changing video speed (e.g., setpts=0.5*PTS for double speed)
atempo
Changing audio speed without pitch shift (0.5 to 2.0)
Inspection & Metadata
Tool/Option
Use When
ffprobe -v error -show_format -show_streams
Getting detailed technical info of a file
-metadata title="Name"
Setting global metadata tags
-map
Selecting specific streams (e.g., -map 0:v:0 -map 0:a:1)
Advanced: Complex Filtergraphs
Use filter_complex when you need to process multiple inputs or create non-linear filter chains.