FFmpeg Cheatsheet

A comprehensive reference for common FFmpeg commands

🔍
Pro Tip: Click on any command to copy it to your clipboard. You can filter commands by category or use the search box.
Command Description Category
ffmpeg -i input.mp4 output.avi Convert MP4 to AVI Conversion
ffmpeg -i input.mp4 output.mkv Convert MP4 to MKV container Conversion
ffmpeg -i input.mp4 -c copy output.mkv Copy streams without re-encoding (fast) Streams
ffmpeg -i input.avi -c:v libx264 -crf 23 output.mp4 Convert to MP4 with H.264 codec and decent quality Conversion
ffmpeg -i input.mp4 -c:v libx264 -preset slow -crf 18 -c:a copy output.mp4 High quality H.264 encode (smaller CRF = higher quality) Video
ffmpeg -i input.mp4 -c:v libx265 -crf 28 -c:a aac -b:a 128k output.mp4 Convert to H.265/HEVC (better compression) Video
ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 0 -crf 30 -c:a libopus output.webm Convert to WebM with VP9 codec Conversion
ffmpeg -i input.mp4 -vn -ar 44100 -ac 2 -ab 192k output.mp3 Extract audio to MP3 Audio
ffmpeg -i input.mp4 -vn -c:a aac -b:a 192k output.aac Extract audio to AAC Audio
ffmpeg -i input.mp4 -vn -c:a copy output.m4a Extract audio without re-encoding Audio
ffmpeg -i input.mp3 -af "volume=2" output.mp3 Increase audio volume (2x) Audio
ffmpeg -i input.mp3 -af "equalizer=f=1000:width_type=o:width=2:g=6" output.mp3 Apply EQ to boost 1kHz by 6dB Audio
ffmpeg -ss 00:00:30 -i input.mp4 -t 10 -c copy clip.mp4 Trim a 10s segment starting at 30s Trimming
ffmpeg -ss 00:01:00 -to 00:02:00 -i input.mp4 -c copy clip.mp4 Extract clip from 1min to 2min Trimming
ffmpeg -i input.mp4 -ss 00:00:10 -t 15 -an -c:v copy clip_no_audio.mp4 Extract video only (no audio) from 10s for 15s Trimming
ffmpeg -i input.mp4 -vf "fps=1" frames_%04d.jpg Extract 1 frame per second Frames
ffmpeg -i input.mp4 -vf "select=eq(n\,100)" -frames:v 1 frame_100.jpg Extract exactly the 100th frame Frames
ffmpeg -i input.mp4 -vf thumbnail=100 -frames:v 1 thumbnail.jpg Generate a thumbnail Frames
ffmpeg -f image2 -i frame_%04d.jpg output.mp4 Create video from image sequence Frames
ffmpeg -i input.mp4 -vf "scale=1280:720" output_720p.mp4 Scale video to 720p Video
ffmpeg -i input.mp4 -vf "scale=1280:-1" output.mp4 Scale width to 1280px, height auto Video
ffmpeg -i input.mp4 -vf "scale=iw/2:ih/2" output_half.mp4 Scale to half size Video
ffmpeg -i input.mp4 -vf "rotate=45*PI/180" output.mp4 Rotate video by 45 degrees Filters
ffmpeg -i input.mp4 -vf "crop=640:480:0:0" output.mp4 Crop video to 640x480 from top left Filters
ffmpeg -i input.mp4 -vf "hflip" output.mp4 Flip video horizontally Filters
ffmpeg -i input.mp4 -vf "unsharp=5:5:1.0:5:5:0.0" output.mp4 Apply unsharp mask (sharpen) Filters
ffmpeg -i input.mp4 -vf "colorbalance=rs=0.1:gs=0.1:bs=0.1" output.mp4 Adjust color balance Filters
ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex "[0:v][1:v]concat=n=2:v=1:a=0[outv]" -map "[outv]" -c:v libx264 out.mp4 Concatenate two videos Advanced
ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4 Concatenate using a file list (list.txt contains: file 'input1.mp4', file 'input2.mp4') Advanced
ffmpeg -i input.mp4 -vf "fps=10,scale=320:-1" -t 5 output.gif Generate a 5s GIF at 10 fps, width 320 Conversion
ffmpeg -i input.mp4 -vf "fps=10,scale=320:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" output.gif Generate a high-quality GIF with better colors Conversion
ffmpeg -f x11grab -r 25 -s 1366x768 -i :0.0 screen.mkv Record screen on Linux Capture
ffmpeg -f gdigrab -framerate 30 -i desktop output.mp4 Record screen on Windows Capture
ffmpeg -f avfoundation -i "1" -r 30 output.mp4 Record screen on macOS Capture
ffmpeg -re -i input.mp4 -c:v libx264 -preset fast -crf 22 -f flv rtmp://server/app/stream Stream to RTMP server Streaming
ffmpeg -i input.mp4 -c:v libx264 -preset fast -c:a aac -f dash output.mpd Create DASH stream Streaming
ffmpeg -i input.mp4 -c:v libx264 -preset fast -c:a aac -f hls -hls_time 4 -hls_playlist_type vod playlist.m3u8 Create HLS stream Streaming
ffmpeg -i input.mp4 -vf subtitles=subs.srt out.mkv Burn in subtitles Subtitles
ffmpeg -i input.mp4 -i subtitles.srt -c copy -c:s mov_text output.mp4 Add subtitles without re-encoding Subtitles
ffmpeg -i input.mp4 -map 0 -c copy -c:s srt output.mkv Extract subtitles to SRT Subtitles
ffmpeg -hwaccel cuda -i input.mp4 -c:v h264_nvenc -preset slow output.mp4 Hardware accelerated encode (NVIDIA) Advanced
ffmpeg -hwaccel qsv -i input.mp4 -c:v h264_qsv output.mp4 Hardware accelerated encode (Intel QuickSync) Advanced
ffmpeg -hwaccel videotoolbox -i input.mp4 -c:v h264_videotoolbox output.mp4 Hardware accelerated encode (macOS VideoToolbox) Advanced
ffmpeg -i input.mp4 -filter_complex "drawtext=text='Copyright':fontcolor=white:fontsize=24: box=1:boxcolor=black@0.5:boxborderw=5:x=(w-text_w)/2:y=(h-text_h)/2" output.mp4 Add text watermark Advanced
ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=10:10" output.mp4 Add image overlay (logo in top left) Advanced
ffmpeg -i input.mp4 -filter_complex "split [a][b]; [a] palettegen [p]; [b][p] paletteuse" output.gif Create optimized GIF using palette Advanced
ffmpeg -i input.mp4 -filter_complex "showwavespic=s=640x120" -frames:v 1 waveform.png Generate audio waveform image Audio
ffmpeg -i input.mp4 -i audio.mp3 -c:v copy -map 0:v:0 -map 1:a:0 output.mp4 Replace audio track Audio
ffmpeg -i input.mp4 -filter_complex "boxblur=5:1" output.mp4 Apply blur filter Filters
ffmpeg -i video.mp4 -vf "eq=brightness=0.1:contrast=1.5:saturation=1.5" output.mp4 Adjust brightness, contrast and saturation Filters

Common FFmpeg Options Explained

  • -i - Input file
  • -c - Codec to use (same as -codec)
  • -c copy - Copy streams without re-encoding
  • -c:v - Video codec (same as -vcodec)
  • -c:a - Audio codec (same as -acodec)
  • -an - Disable audio
  • -vn - Disable video
  • -preset - Encoding speed/compression ratio preset (ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow)
  • -crf - Quality for constant quality mode (lower = higher quality, 18-28 is typical range)
  • -f - Force format
  • -r - Frame rate
  • -s - Frame size (WxH)
  • -aspect - Set aspect ratio
  • -ss - Seek to position
  • -t - Duration to process
  • -to - Stop at position
  • -b:v - Video bitrate
  • -b:a - Audio bitrate
  • -ab - Audio bitrate (legacy)
  • -ac - Audio channels
  • -ar - Audio sample rate
  • -vf - Video filter(s)
  • -af - Audio filter(s)
  • -map - Manual stream selection

Common FFmpeg Workflows

Creating a Web-Ready Video

Optimize a video for web hosting with H.264 encoding and AAC audio:

ffmpeg -i input.mp4 -c:v libx264 -preset medium -crf 22 -c:a aac -b:a 128k -movflags +faststart output.mp4

The -movflags +faststart option moves metadata to the beginning of the file allowing playback to start before the whole file is downloaded.

Creating a Timelapse from Images

Convert a sequence of images into a timelapse video:

ffmpeg -framerate 24 -pattern_type glob -i "*.jpg" -c:v libx264 -pix_fmt yuv420p output.mp4

Merging Video and Audio Files

Combine separately recorded video and audio:

ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac -map 0:v:0 -map 1:a:0 output.mp4

Compressing Video for Sharing

Reduce file size while maintaining reasonable quality:

ffmpeg -i input.mp4 -vf "scale=1280:-1" -c:v libx264 -preset slow -crf 24 -c:a aac -b:a 128k compressed.mp4

Creating a Video Slideshow

Make a slideshow with 3-second transitions between images:

ffmpeg -framerate 1/3 -pattern_type glob -i "*.jpg" -c:v libx264 -r 30 -pix_fmt yuv420p slideshow.mp4

This FFmpeg cheatsheet covers common commands for video and audio manipulation. For complete documentation, visit ffmpeg.org.