FFmpeg Reference
Filter Syntax
Video Filters (-vf)
# Chain filters with comma
-vf "scale=1920:1080,fps=30,crop=1280:720"
# Complex filters with labels
-filter_complex "[0:v]scale=1920:1080[scaled];[scaled]fps=30[out]" -map "[out]"
Common Video Filters
| Filter | Syntax | Example |
|---|
| scale | scale=w:h | scale=1920:1080 or scale=1280:-1 (auto height) |
| crop | crop=w:h:x:y | crop=1280:720:320:180 |
| fps | fps=N | fps=30 |
| pad | pad=w:h:x:y:color | pad=1920:1080:(ow-iw)/2:(oh-ih)/2:black |
| fade | fade=t=in/out:st=N:d=N | fade=t=in:st=0:d=1 |
| setpts | setpts=N*PTS | setpts=0.5*PTS (2x speed) |
| drawtext | drawtext=text='Hi':fontsize=24 | Add text overlay |
| overlay | overlay=x:y | Combine videos |
Common Audio Filters (-af)
| Filter | Syntax | Example |
|---|
| volume | volume=N | volume=1.5 or volume=0.5 |
| afade | afade=t=in/out:st=N:d=N | afade=t=in:st=0:d=1 |
| atempo | atempo=N | atempo=2.0 (2x speed, range 0.5-2.0) |
| loudnorm | loudnorm | Normalize audio levels |
Codec Options
Video Codecs (-c:v)
| Codec | Use Case | Notes |
|---|
| libx264 | Universal H.264 | Best compatibility |
| libx265 | H.265/HEVC | Better compression, less compatible |
| libvpx-vp9 | WebM | Good for web |
| prores | ProRes | Professional editing |
| copy | Stream copy | No re-encoding, fastest |
Audio Codecs (-c:a)
| Codec | Use Case | Notes |
|---|
| aac | MP4 container | Most compatible |
| libmp3lame | MP3 | Universal |
| libvorbis | WebM/OGG | Open source |
| pcm_s16le | WAV | Uncompressed |
| copy | Stream copy | No re-encoding |
Quality Settings
CRF (Constant Rate Factor) for x264/x265
| CRF | Quality | Use Case |
|---|
| 0 | Lossless | Archive |
| 17-18 | Visually lossless | Master |
| 19-22 | High quality | Production |
| 23 | Default | General use |
| 24-27 | Medium | Web delivery |
| 28+ | Low | Preview/draft |
Presets (-preset)
Faster presets = larger files, quicker encoding
ultrafast → superfast → veryfast → faster → fast → medium → slow → slower → veryslow
Container Formats
| Format | Extension | Best For |
|---|
| MP4 | .mp4 | Universal, web, mobile |
| MOV | .mov | Apple ecosystem, ProRes |
| WebM | .webm | Web (VP9) |
| MKV | .mkv | Archive, multiple streams |
| GIF | .gif | Short animations (no audio) |
Input/Output Options
Input Options (before -i)
| Option | Purpose | Example |
|---|
| -ss | Seek to time | -ss 00:01:30 |
| -t | Duration limit | -t 00:00:30 |
| -r | Input framerate | -r 30 |
| -f | Force format | -f gif |
Output Options (after -i)
| Option | Purpose | Example |
|---|
| -y | Overwrite output | -y |
| -n | Never overwrite | -n |
| -movflags faststart | Web streaming | -movflags faststart |
| -pix_fmt | Pixel format | -pix_fmt yuv420p |
| -an | No audio | -an |
| -vn | No video | -vn |
Useful Patterns
Get Duration in Seconds
ffprobe -v error -show_entries format=duration -of csv=p=0 input.mp4
Get Resolution
ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=p=0 input.mp4
Get Frame Count
ffprobe -v error -select_streams v:0 -count_frames -show_entries stream=nb_read_frames -of csv=p=0 input.mp4
Create Thumbnail
# At specific time
ffmpeg -i input.mp4 -ss 00:00:05 -vframes 1 thumbnail.jpg
# Best quality
ffmpeg -i input.mp4 -ss 00:00:05 -vframes 1 -q:v 2 thumbnail.jpg
Create GIF from Video
# Simple (large file)
ffmpeg -i input.mp4 -vf "fps=10,scale=480:-1" output.gif
# With palette (better quality, smaller)
ffmpeg -i input.mp4 -vf "fps=10,scale=480:-1,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" output.gif
Picture-in-Picture
# Overlay small video in corner
ffmpeg -i main.mp4 -i overlay.mp4 \
-filter_complex "[1:v]scale=320:-1[pip];[0:v][pip]overlay=W-w-20:H-h-20" \
-c:a copy output.mp4
Side-by-Side Videos
ffmpeg -i left.mp4 -i right.mp4 \
-filter_complex "[0:v][1:v]hstack=inputs=2[v]" \
-map "[v]" -c:v libx264 output.mp4
Remotion Integration Notes
- Remotion uses
<OffthreadVideo> which handles most formats
- Prefer H.264 (libx264) in MP4 container
- Always use
-movflags faststart for web playback
- Match fps to composition (usually 30fps)
- Resolution should match composition (1920x1080 typical)