The problem
You need to convert media formats, extract audio, resize videos, or create GIFs.
The solution
# Basic conversion
ffmpeg -i input.mp4 output.avi
ffmpeg -i input.mkv output.mp4
# Extract audio from video
ffmpeg -i video.mp4 -vn -acodec copy audio.aac
ffmpeg -i video.mp4 -q:a 0 -map a audio.mp3
# Convert video to audio
ffmpeg -i video.mp4 audio.mp3
# Extract video (no audio)
ffmpeg -i input.mp4 -an -vcodec copy video_only.mp4
# Resize video
ffmpeg -i input.mp4 -vf scale=1280:720 output.mp4
ffmpeg -i input.mp4 -vf scale=-1:720 output.mp4 # Keep aspect ratio
# Change bitrate
ffmpeg -i input.mp4 -b:v 1M -b:a 128k output.mp4
# Extract portion of video
ffmpeg -i input.mp4 -ss 00:01:30 -t 00:00:30 output.mp4
ffmpeg -i input.mp4 -ss 00:05:00 -to 00:07:30 output.mp4
# Convert to GIF
ffmpeg -i input.mp4 -vf "fps=10,scale=320:-1" output.gif
ffmpeg -i input.mp4 -ss 00:00:05 -t 3 output.gif
# Combine audio and video
ffmpeg -i video.mp4 -i audio.mp3 -c copy output.mp4
# Concatenate videos
echo "file 'clip1.mp4'" > list.txt
echo "file 'clip2.mp4'" >> list.txt
ffmpeg -f concat -i list.txt -c copy output.mp4
# Add watermark
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4
# Speed up/slow down video
ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" -af "atempo=2.0" fast.mp4
ffmpeg -i input.mp4 -vf "setpts=2.0*PTS" -af "atempo=0.5" slow.mp4
# Extract frames
ffmpeg -i input.mp4 -r 1 frames/frame_%04d.jpg
ffmpeg -i input.mp4 -ss 00:00:05 -vframes 1 thumbnail.jpg
# Create video from images
ffmpeg -framerate 24 -i image_%04d.jpg -c:v libx264 output.mp4
# Convert to web-friendly format
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset medium -c:a aac output.mp4
# Stream copy (repackage without re-encoding)
ffmpeg -i input.mkv -c copy output.mp4
# Show media info
ffprobe input.mp4
ffmpeg -i input.mp4 2>&1 | grep Duration
# Adjust volume
ffmpeg -i input.mp3 -af "volume=2.0" loud.mp3
ffmpeg -i input.mp3 -af "volume=-10dB" quiet.mp3
# Crop video
ffmpeg -i input.mp4 -vf "crop=w=640:h=480:x=100:y=50" output.mp4
# Rotate video
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4 # 90° clockwise
ffmpeg -i input.mp4 -vf "transpose=2" output.mp4 # 90° counter-clockwise
# Add subtitles
ffmpeg -i video.mp4 -i subtitles.srt -c copy -c:s mov_text output.mp4
# Screen recording (Linux)
ffmpeg -f x11grab -s 1920x1080 -i :0.0 output.mp4
ffmpeg -f avfoundation -i "1:0" screen.mp4 # macOSPut it to work
# Convert MOV to MP4 (iPhone video)
ffmpeg -i video.mov -c:v libx264 -crf 23 -c:a aac output.mp4
# Extract 30-second clip
ffmpeg -i lecture.mp4 -ss 00:10:00 -t 30 clip.mp4
# Create thumbnail from video
ffmpeg -i movie.mp4 -ss 00:01:00 -vframes 1 -q:v 2 thumbnail.jpg
# Reduce video size for web
ffmpeg -i input.mp4 -vf scale=1280:-2 -c:v libx264 -crf 28 -preset fast output.mp4
# Combine multiple audio files
ffmpeg -i "concat:track1.mp3|track2.mp3|track3.mp3" -c copy album.mp3
# Convert video for PowerPoint
ffmpeg -i presentation.mov -c:v wmv2 -b:v 2000k -c:a wmav2 -b:a 128k presentation.wmv
# Make GIF from video segment
ffmpeg -i demo.mp4 -ss 00:00:10 -t 5 -vf "fps=15,scale=480:-1:flags=lanczos" demo.gifWorth knowing
Use -c copy to avoid re-encoding when possible. -crf: lower=better quality (18-28 typical). Presets: ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow. Check formats with ffmpeg -formats.