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

You can find the code of Common FFmpeg Workflows and more in my GitHub repository.

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