# CUT (fast, keyframe-aligned, no re-encode)
ffmpeg -ss 00:01:30 -to 00:02:10 -i input.mp4 -c copy cut.mp4
# CUT (accurate, re-encode)
ffmpeg -i input.mp4 -ss 00:01:30 -to 00:02:10 -c:v libx264 -c:a aac cut.mp4
# MERGE / CONCATENATE (same codecs, no re-encode)
printf "file 'a.mp4'\nfile 'b.mp4'\n" > list.txt
ffmpeg -f concat -safe 0 -i list.txt -c copy merged.mp4
# MERGE (different formats, re-encode)
ffmpeg -i a.mp4 -i b.mp4 -filter_complex \
"[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[v][a]" \
-map "[v]" -map "[a]" merged.mp4
# TRANSITION (video crossfade, keep audio from first clip)
ffmpeg -i a.mp4 -i b.mp4 -filter_complex \
"[0:v][1:v]xfade=transition=fade:duration=1:offset=4[v]" \
-map "[v]" -map 0:a transition.mp4
# ADD TEXT (overlay)
ffmpeg -i input.mp4 -vf \
"drawtext=text='Hello world':x=20:y=20:fontsize=32:fontcolor=white" \
-c:a copy text.mp4
# ADD AUDIO TRACK (replace existing audio)
ffmpeg -i input.mp4 -i music.mp3 \
-map 0:v -map 1:a -c:v copy -shortest out.mp4
# ADD AUDIO TRACK (mix with existing audio)
ffmpeg -i input.mp4 -i music.mp3 -filter_complex \
"[0:a][1:a]amix=inputs=2:duration=shortest[a]" \
-map 0:v -map "[a]" out.mp4
# CHANGE SPEED (2x video, drop audio)
ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" -an fast.mp4
# SCALE / RESIZE
ffmpeg -i input.mp4 -vf scale=1280:720 resized.mp4
# SUBTITLES (burn in)
ffmpeg -i input.mp4 -vf subtitles=subs.srt out.mp4
Check out the docs for more https://ffmpeg.org/ffmpeg-doc.html