FFmpeg Fundamentals (2025)
Foundational FFmpeg knowledge for 7.1 LTS and 8.0.1. This SKILL is a lean orchestrator; detailed recipes and tables live under references/.
When to Use This Skill
Use for foundational FFmpeg operations:
- First-time FFmpeg users needing syntax help
- Basic transcoding between formats (MP4, WebM, MKV, MOV)
- Understanding codec options and quality settings
- Simple filter operations (scale, crop, rotate)
- File analysis with ffprobe
For specialized topics see related skills: hardware encoding -> ffmpeg-hardware-acceleration, streaming -> ffmpeg-streaming, Docker -> ffmpeg-docker-containers, advanced filter graphs -> ffmpeg-filter-complex-patterns.
Quick Reference
| Task |
Command Pattern |
| Convert format |
ffmpeg -i input.ext output.ext |
| Set quality (CRF) |
-c:v libx264 -crf 23 |
| Scale video |
-vf "scale=1920:1080" |
| Trim video |
-ss 00:00:10 -t 00:00:30 |
| Extract audio |
-vn -c:a aac output.m4a |
| Probe file |
ffprobe -v error -show_format -show_streams file |
Core Workflow
- Verify your FFmpeg version with
ffmpeg -version. Prefer the latest stable (8.0.1) or the 7.1 LTS.
- Probe the input with
ffprobe to inspect codecs, container, resolution, and duration.
- Decide whether to remux (
-c copy) or transcode (specify encoders, quality).
- Pick encoders and quality settings (see Codec Reference below).
- Add filters as needed (see
references/filter-essentials.md and references/frame-manipulation.md).
- Verify the output: re-probe, check duration, A/V sync, and pixel format.
Basic Command Syntax
ffmpeg [global_options] {[input_options] -i input} ... {[output_options] output} ...
Common examples:
# Basic transcode
ffmpeg -i input.mp4 output.mkv
# Specify codecs
ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.mp4
# Copy streams without re-encoding (remux)
ffmpeg -i input.mkv -c copy output.mp4
# CRF quality mode
ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4
# Bitrate mode
ffmpeg -i input.mp4 -c:v libx264 -b:v 5M output.mp4
# Overwrite without prompting
ffmpeg -y -i input.mp4 output.mp4
# Show progress as parseable stats
ffmpeg -progress - -i input.mp4 output.mp4
For exhaustive option ordering rules, stream specifiers, and per-format option tables, see the ffmpeg-command-syntax skill.
Codec Reference (2025)
Video Codecs (Software)
| Codec |
Encoder |
Use Case |
Quality |
Speed |
| H.264/AVC |
libx264 |
Universal compatibility |
Excellent |
Medium |
| H.265/HEVC |
libx265 |
4K, HDR, storage efficiency |
Excellent |
Slow |
| H.266/VVC |
libvvenc |
Next-gen, 8K |
Best |
Very Slow |
| AV1 |
libsvtav1, libaom-av1 |
Web streaming, royalty-free |
Excellent |
Slow-Medium |
| VP9 |
libvpx-vp9 |
WebM, YouTube |
Very Good |
Slow |
| ProRes |
prores_ks |
Professional editing |
Lossless |
Fast |
Hardware Encoders
| Platform |
H.264 |
H.265 |
AV1 |
VVC |
FFv1 |
| NVIDIA |
h264_nvenc |
hevc_nvenc |
av1_nvenc |
- |
- |
| Intel |
h264_qsv |
hevc_qsv |
av1_qsv |
- |
- |
| AMD |
h264_amf |
hevc_amf |
av1_amf |
- |
- |
| Apple |
h264_videotoolbox |
hevc_videotoolbox |
- |
- |
- |
| Vulkan |
h264_vulkan |
hevc_vulkan |
av1_vulkan (8.0+) |
- |
ffv1_vulkan (8.0+) |
Hardware Decoders (FFmpeg 8.0+)
| Platform |
VVC/H.266 |
VP9 |
ProRes RAW |
| VAAPI |
vvc (8.0+) |
Yes |
- |
| QSV |
vvc_qsv (7.1+) |
Yes |
- |
| Vulkan |
- |
vp9 (8.0+) |
Yes (8.0+) |
Audio Codecs
| Codec |
Encoder |
Use Case |
Bitrate Range |
| AAC |
aac, libfdk_aac |
Universal, streaming |
96-320 kbps |
| MP3 |
libmp3lame |
Legacy compatibility |
128-320 kbps |
| Opus |
libopus |
VoIP, streaming, WebM |
32-256 kbps |
| FLAC |
flac |
Lossless archival |
~900 kbps |
| AC3 |
ac3 |
DVD, Blu-ray |
384-640 kbps |
| EAC3 |
eac3 |
Streaming, Dolby Digital+ |
192-768 kbps |
Probing & Analysis
# Get media info as JSON
ffprobe -v quiet -print_format json -show_format -show_streams input.mp4
# Get duration
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 input.mp4
# Get resolution
ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=p=0 input.mp4
# Get codec
ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 input.mp4
# Validate file
ffprobe -v error input.mp4 && echo "Valid" || echo "Invalid"
Best Practices
Performance
- Use
-threads 0 to auto-detect optimal thread count.
- Place
-ss before -i for fast seeking (may be less accurate); after -i for frame-accurate seek.
- Use
-c copy when possible to avoid re-encoding.
- Use hardware acceleration when available.
Quality
- Prefer CRF over bitrate for single-pass encoding.
- Use
-preset slow or slower for better compression.
- Use
-tune options (film, animation, grain) when appropriate.
- Keep
-pix_fmt yuv420p for broad compatibility.
Compatibility
- Use
-movflags +faststart for web MP4 files.
- Use
-vtag hvc1 for HEVC on Apple devices.
- Test on target devices before mass conversion.
- Provide fallback formats for older browsers.
Error Prevention
- Test commands on a sample file first.
- Use
-report for detailed logging.
- Check output file size and duration.
- Verify A/V sync after conversion.
Capability Discovery
ffmpeg -encoders # List encoders
ffmpeg -decoders # List decoders
ffmpeg -formats # List formats
ffmpeg -filters # List filters
ffmpeg -hwaccels # List hardware acceleration methods
ffmpeg -h encoder=libx264 # Encoder-specific options
Exit codes:
- 0: success
- 1: error (check stderr)
- 255: interrupted (Ctrl+C)
Reference Map
Detailed recipes, option tables, and FFmpeg 8.0-specific guides:
references/version-history.md - Full FFmpeg 8.0 / 7.1 LTS feature lists, update strategy, official resources
references/common-operations.md - Format conversion, scaling, trimming, concat, audio, subtitles, Whisper recipe, image ops, output optimization (web/iOS/Android)
references/filter-essentials.md - Video filters (-vf), audio filters (-af), complex filtergraphs, filter_complex syntax reference
references/frame-manipulation.md - Frame rate, setpts, select, thumbnails, tiles, freezing, looping, reversing
references/whisper-transcription.md - Whisper AI filter for speech recognition and subtitle generation
references/vvc-h266-encoding.md - VVC/H.266 encoding with libvvenc plus hardware decode
references/vulkan-compute-codecs.md - Vulkan compute-based codecs (FFv1, AV1, VP9, ProRes RAW)
For deeper dives: ffmpeg-filter-complex-patterns, ffmpeg-hardware-acceleration, ffmpeg-streaming, ffmpeg-captions-subtitles, ffmpeg-audio-processing.
1---2name: ffmpeg-fundamentals-20253description: Complete FFmpeg core knowledge system for FFmpeg 7.1 LTS and 8.0.1 (latest stable, released 2025-11-20). PROACTIVELY activate for: (1) Basic transcoding and format conversion, (2) Command syntax questions, (3) Codec selection (H.264, H.265, VVC, AV1, VP9, APV), (4) Quality settings (CRF, bitrate, presets), (5) Video/audio filter chains, (6) Trimming, splitting, concatenating, (7) Resolution scaling and aspect ratios, (8) FFmpeg 8.0 features (Whisper AI, Vulkan codecs, APV, WHIP), (9) Version checking and update guidance. Provides: Command syntax reference, codec comparison tables, filter examples, format conversion recipes, probing commands, Whisper transcription examples, version checking commands. Ensures: Correct FFmpeg usage with 2025 best practices and latest stable version.4---5
6# FFmpeg Fundamentals (2025)
7
8Foundational FFmpeg knowledge for 7.1 LTS and 8.0.1. This SKILL is a lean orchestrator; detailed recipes and tables live under `references/`.
9
10## When to Use This Skill
11
12Use for foundational FFmpeg operations:
13
14- First-time FFmpeg users needing syntax help
15- Basic transcoding between formats (MP4, WebM, MKV, MOV)
16- Understanding codec options and quality settings
17- Simple filter operations (scale, crop, rotate)
18- File analysis with ffprobe
19
20For specialized topics see related skills: hardware encoding -> `ffmpeg-hardware-acceleration`, streaming -> `ffmpeg-streaming`, Docker -> `ffmpeg-docker-containers`, advanced filter graphs -> `ffmpeg-filter-complex-patterns`.
21
22## Quick Reference
23
24| Task | Command Pattern |
25|------|-----------------|
26| Convert format | `ffmpeg -i input.ext output.ext` |
27| Set quality (CRF) | `-c:v libx264 -crf 23` |
28| Scale video | `-vf "scale=1920:1080"` |
29| Trim video | `-ss 00:00:10 -t 00:00:30` |
30| Extract audio | `-vn -c:a aac output.m4a` |
31| Probe file | `ffprobe -v error -show_format -show_streams file` |
32
33## Core Workflow
34
351. Verify your FFmpeg version with `ffmpeg -version`. Prefer the latest stable (8.0.1) or the 7.1 LTS.
362. Probe the input with `ffprobe` to inspect codecs, container, resolution, and duration.
373. Decide whether to **remux** (`-c copy`) or **transcode** (specify encoders, quality).
384. Pick encoders and quality settings (see Codec Reference below).
395. Add filters as needed (see `references/filter-essentials.md` and `references/frame-manipulation.md`).
406. Verify the output: re-probe, check duration, A/V sync, and pixel format.
41
42## Basic Command Syntax
43
44```bash
45ffmpeg [global_options] {[input_options] -i input} ... {[output_options] output} ...
46```
47
48Common examples:
49
50```bash
51# Basic transcode
52ffmpeg -i input.mp4 output.mkv
53
54# Specify codecs
55ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.mp4
56
57# Copy streams without re-encoding (remux)
58ffmpeg -i input.mkv -c copy output.mp4
59
60# CRF quality mode
61ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4
62
63# Bitrate mode
64ffmpeg -i input.mp4 -c:v libx264 -b:v 5M output.mp4
65
66# Overwrite without prompting
67ffmpeg -y -i input.mp4 output.mp4
68
69# Show progress as parseable stats
70ffmpeg -progress - -i input.mp4 output.mp4
71```
72
73For exhaustive option ordering rules, stream specifiers, and per-format option tables, see the `ffmpeg-command-syntax` skill.
74
75## Codec Reference (2025)
76
77### Video Codecs (Software)
78
79| Codec | Encoder | Use Case | Quality | Speed |
80|-------|---------|----------|---------|-------|
81| H.264/AVC | libx264 | Universal compatibility | Excellent | Medium |
82| H.265/HEVC | libx265 | 4K, HDR, storage efficiency | Excellent | Slow |
83| H.266/VVC | libvvenc | Next-gen, 8K | Best | Very Slow |
84| AV1 | libsvtav1, libaom-av1 | Web streaming, royalty-free | Excellent | Slow-Medium |
85| VP9 | libvpx-vp9 | WebM, YouTube | Very Good | Slow |
86| ProRes | prores_ks | Professional editing | Lossless | Fast |
87
88### Hardware Encoders
89
90| Platform | H.264 | H.265 | AV1 | VVC | FFv1 |
91|----------|-------|-------|-----|-----|------|
92| NVIDIA | h264_nvenc | hevc_nvenc | av1_nvenc | - | - |
93| Intel | h264_qsv | hevc_qsv | av1_qsv | - | - |
94| AMD | h264_amf | hevc_amf | av1_amf | - | - |
95| Apple | h264_videotoolbox | hevc_videotoolbox | - | - | - |
96| Vulkan | h264_vulkan | hevc_vulkan | av1_vulkan (8.0+) | - | ffv1_vulkan (8.0+) |
97
98### Hardware Decoders (FFmpeg 8.0+)
99
100| Platform | VVC/H.266 | VP9 | ProRes RAW |
101|----------|-----------|-----|------------|
102| VAAPI | vvc (8.0+) | Yes | - |
103| QSV | vvc_qsv (7.1+) | Yes | - |
104| Vulkan | - | vp9 (8.0+) | Yes (8.0+) |
105
106### Audio Codecs
107
108| Codec | Encoder | Use Case | Bitrate Range |
109|-------|---------|----------|---------------|
110| AAC | aac, libfdk_aac | Universal, streaming | 96-320 kbps |
111| MP3 | libmp3lame | Legacy compatibility | 128-320 kbps |
112| Opus | libopus | VoIP, streaming, WebM | 32-256 kbps |
113| FLAC | flac | Lossless archival | ~900 kbps |
114| AC3 | ac3 | DVD, Blu-ray | 384-640 kbps |
115| EAC3 | eac3 | Streaming, Dolby Digital+ | 192-768 kbps |
116
117## Probing & Analysis
118
119```bash
120# Get media info as JSON
121ffprobe -v quiet -print_format json -show_format -show_streams input.mp4
122
123# Get duration
124ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 input.mp4
125
126# Get resolution
127ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=p=0 input.mp4
128
129# Get codec
130ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 input.mp4
131
132# Validate file
133ffprobe -v error input.mp4 && echo "Valid" || echo "Invalid"
134```
135
136## Best Practices
137
138### Performance
139
1401. Use `-threads 0` to auto-detect optimal thread count.
1412. Place `-ss` before `-i` for fast seeking (may be less accurate); after `-i` for frame-accurate seek.
1423. Use `-c copy` when possible to avoid re-encoding.
1434. Use hardware acceleration when available.
144
145### Quality
146
1471. Prefer CRF over bitrate for single-pass encoding.
1482. Use `-preset slow` or slower for better compression.
1493. Use `-tune` options (`film`, `animation`, `grain`) when appropriate.
1504. Keep `-pix_fmt yuv420p` for broad compatibility.
151
152### Compatibility
153
1541. Use `-movflags +faststart` for web MP4 files.
1552. Use `-vtag hvc1` for HEVC on Apple devices.
1563. Test on target devices before mass conversion.
1574. Provide fallback formats for older browsers.
158
159### Error Prevention
160
1611. Test commands on a sample file first.
1622. Use `-report` for detailed logging.
1633. Check output file size and duration.
1644. Verify A/V sync after conversion.
165
166## Capability Discovery
167
168```bash
169ffmpeg -encoders # List encoders
170ffmpeg -decoders # List decoders
171ffmpeg -formats # List formats
172ffmpeg -filters # List filters
173ffmpeg -hwaccels # List hardware acceleration methods
174ffmpeg -h encoder=libx264 # Encoder-specific options
175```
176
177Exit codes:
178
179- 0: success
180- 1: error (check stderr)
181- 255: interrupted (Ctrl+C)
182
183## Reference Map
184
185Detailed recipes, option tables, and FFmpeg 8.0-specific guides:
186
187- `references/version-history.md` - Full FFmpeg 8.0 / 7.1 LTS feature lists, update strategy, official resources
188- `references/common-operations.md` - Format conversion, scaling, trimming, concat, audio, subtitles, Whisper recipe, image ops, output optimization (web/iOS/Android)
189- `references/filter-essentials.md` - Video filters (`-vf`), audio filters (`-af`), complex filtergraphs, filter_complex syntax reference
190- `references/frame-manipulation.md` - Frame rate, setpts, select, thumbnails, tiles, freezing, looping, reversing
191- `references/whisper-transcription.md` - Whisper AI filter for speech recognition and subtitle generation
192- `references/vvc-h266-encoding.md` - VVC/H.266 encoding with libvvenc plus hardware decode
193- `references/vulkan-compute-codecs.md` - Vulkan compute-based codecs (FFv1, AV1, VP9, ProRes RAW)
194
195For deeper dives: `ffmpeg-filter-complex-patterns`, `ffmpeg-hardware-acceleration`, `ffmpeg-streaming`, `ffmpeg-captions-subtitles`, `ffmpeg-audio-processing`.