ffmpeg Skill
Comprehensive multimedia framework for video/audio encoding, conversion, streaming, and filtering.
When to Use
Use ffmpeg when you need:
- Convert video formats
- Compress videos
- Extract audio
- Create streams
- Apply filters
- Batch process media
- Generate thumbnails
Quick Start
Invoke the Skill
"Use ffmpeg to:
- Convert video.mkv to MP4
- Compress to 720p
- Reduce file size
- Maintain good quality"
What You Get
The skill will help you:
- Choose right codecs
- Set optimal quality
- Apply filters
- Optimize file size
- Handle batch processing
Common Use Cases
Format Conversion
"Use ffmpeg to convert all MKV files to MP4 with H.264 codec"
Video Compression
"Use ffmpeg to compress 4K video to 1080p with good quality"
Extract Audio
"Use ffmpeg to extract audio from video as MP3"
Create GIF
"Use ffmpeg to create high-quality GIF from video clip"
Popular Operations
Convert Format
# Simple conversion
ffmpeg -i input.mkv -c copy output.mp4
# With re-encoding
ffmpeg -i input.avi -c:v libx264 -c:a aac output.mp4
Compress Video
# Quality-based (CRF 23 = default, lower = better)
ffmpeg -i input.mp4 -c:v libx264 -crf 22 -preset slow output.mp4
# Target file size with two-pass
ffmpeg -i input.mp4 -c:v libx264 -b:v 2M -pass 1 -f null /dev/null
ffmpeg -i input.mp4 -c:v libx264 -b:v 2M -pass 2 output.mp4
Extract Audio
# Keep original format
ffmpeg -i video.mp4 -vn -c:a copy audio.m4a
# Convert to MP3
ffmpeg -i video.mp4 -vn -q:a 0 audio.mp3
Trim Video
# Without re-encoding (fast)
ffmpeg -i input.mp4 -ss 00:01:00 -to 00:02:00 -c copy output.mp4
# With re-encoding (precise)
ffmpeg -i input.mp4 -ss 00:01:00 -t 00:01:00 -c:v libx264 output.mp4
Common Codecs
Video Codecs
- H.264 (libx264): Universal compatibility
- H.265 (libx265): Better compression, 4K
- VP9: Open-source, YouTube
- AV1: Next-gen, best compression
Audio Codecs
- AAC: Industry standard
- MP3: Universal compatibility
- Opus: Best for streaming/voice
- FLAC: Lossless quality
Video Filters
Scale/Resize
# Specific dimensions
ffmpeg -i input.mp4 -vf scale=1280:720 output.mp4
# Keep aspect ratio
ffmpeg -i input.mp4 -vf scale=1280:-1 output.mp4
# Half resolution
ffmpeg -i input.mp4 -vf scale=iw/2:ih/2 output.mp4
Crop
# Manual crop
ffmpeg -i input.mp4 -vf "crop=1280:720:0:0" output.mp4
# Auto-detect black borders
ffmpeg -i input.mp4 -vf cropdetect output.mp4
Other Filters
# Denoise
ffmpeg -i input.mp4 -vf hqdn3d output.mp4
# Rotate 90° clockwise
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4
# Add watermark
ffmpeg -i video.mp4 -i logo.png -filter_complex "overlay=10:10" output.mp4
Audio Filters
# Increase volume
ffmpeg -i input.mp4 -af "volume=10dB" output.mp4
# Normalize audio
ffmpeg -i input.mp4 -af loudnorm output.mp4
# Mix audio tracks
ffmpeg -i audio1.mp3 -i audio2.mp3 -filter_complex amix output.mp3
Streaming
RTMP (Twitch/YouTube)
ffmpeg -re -i input.mp4 \
-c:v libx264 -preset veryfast -maxrate 3000k \
-c:a aac -b:a 128k \
-f flv rtmp://live.twitch.tv/app/YOUR_KEY
HLS Streaming
ffmpeg -i input.mp4 \
-c:v libx264 -c:a aac \
-f hls -hls_time 6 -hls_playlist_type vod \
playlist.m3u8
Advanced Use Cases
Create GIF
ffmpeg -i input.mp4 \
-vf "fps=15,scale=640:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" \
output.gif
Extract Frames
# All frames
ffmpeg -i input.mp4 frame_%04d.png
# 1 frame per second
ffmpeg -i input.mp4 -vf fps=1 frame_%04d.png
# Single frame at 5s
ffmpeg -ss 00:00:05 -i input.mp4 -frames:v 1 frame.png
Video from Images
ffmpeg -framerate 30 -i frame_%04d.png \
-c:v libx264 -pix_fmt yuv420p output.mp4
Concatenate Videos
Create concat.txt:
file 'input1.mp4'
file 'input2.mp4'
Run:
ffmpeg -f concat -safe 0 -i concat.txt -c copy output.mp4
Batch Processing
Convert All Files
for file in *.mkv; do
ffmpeg -i "$file" -c:v libx264 -crf 22 "${file%.mkv}.mp4"
done
Resize All Videos
for file in *.mp4; do
ffmpeg -i "$file" -vf scale=-1:720 "720p_${file}"
done
Hardware Acceleration
NVIDIA GPU
ffmpeg -hwaccel cuda -i input.mp4 \
-c:v h264_nvenc -preset fast output.mp4
Intel QuickSync
ffmpeg -hwaccel qsv -i input.mp4 \
-c:v h264_qsv -preset fast output.mp4
Quality Settings
CRF Values
- 0 = Lossless (huge file)
- 17-18 = Visually lossless
- 20-23 = High quality (recommended)
- 24-28 = Medium quality
- 30+ = Low quality
Presets (speed vs compression)
- ultrafast, superfast, veryfast, faster, fast
- medium (default)
- slow, slower, veryslow
Quick Examples
Simple Conversion:
"Use ffmpeg to convert video.mkv to MP4"
Compress for Web:
"Use ffmpeg to compress video for web:
- 1080p resolution
- Good quality
- Small file size
- H.264 codec"
Extract Audio:
"Use ffmpeg to extract audio from all videos in folder as MP3"
Create Thumbnail:
"Use ffmpeg to create thumbnail from video at 5 second mark"
Best Practices
- Test on short clip first
- Use CRF for quality
- Copy streams when possible (
-c copy) - Choose appropriate presets
- Don’t upscale unnecessarily
- Match audio quality to video
- Use hardware acceleration
- Verify output quality
Troubleshooting
Unknown encoder
# Check available encoders
ffmpeg -encoders | grep h264
Compatibility issues
Use safe defaults:
ffmpeg -i input.mkv -c:v libx264 -profile:v high \
-pix_fmt yuv420p -c:a aac output.mp4
Performance issues
- Use hardware acceleration
- Choose faster presets
- Reduce resolution
- Enable multi-threading
Next Steps
Bottom Line: ffmpeg handles all video/audio needs. Convert, compress, stream - one tool for everything.