Skip to content

Additional examples if you find any helpful #1

@ventz

Description

@ventz

Add background music to a silent video

ffmpeg -filter_complex 'color=color=blue:duration=5s,format=yuv420p' -f lavfi -i 'sine=frequency=440:duration=5' -shortest -map 0:v:0 -map 1:a:0 with-audio.mp4

Extract audio from a video

ffmpeg -i with-audio.mp4 -q:a 0 -map a extracted.mp3

Overlay one video on another (picture-in-picture)

ffmpeg -filter_complex "color=blue:duration=5:size=640x480 [base]; color=red:duration=5:size=160x120 [overlay]; [base][overlay] overlay=W-w-10:H-h-10" pip.mp4

Apply a fade-in effect to audio

ffmpeg -f lavfi -i "sine=frequency=440:duration=10" -af "afade=t=in:st=0:d=3" fadein.wav

Reverse a video clip

ffmpeg -filter_complex "color=yellow:duration=5,drawtext=text=reverse:fontsize=24:x=10:y=H-th-10,reverse" reversed.mp4

Add a watermark image to video

ffmpeg -f lavfi -i "color=white:duration=5:size=640x480" -i logo.png -filter_complex "[0][1]overlay=W-w-10:H-h-10" watermarked.mp4

Speed up a video 2x

ffmpeg -filter_complex "color=gray:duration=5,drawtext=text=fast:fontsize=24:x=10:y=10,setpts=0.5*PTS" fast.mp4

Change audio pitch (chipmunk effect)

ffmpeg -f lavfi -i "sine=frequency=440:duration=5" -af "asetrate=88200,atempo=0.5" chipmunk.wav

Loop an image into a 10-second video

ffmpeg -loop 1 -i static.png -t 10 -vf "format=yuv420p" looped.mp4

Extract every frame from a video as images

ffmpeg -i with-audio.mp4 frame_%03d.png

Apply a fade-out effect to audio

ffmpeg -f lavfi -i "sine=frequency=440:duration=10" -af "afade=t=out:st=7:d=3" fadeout.wav

Create a bouncing ball animation using drawbox

ffmpeg -f lavfi -i "color=black:duration=5:size=320x240" -vf "drawbox=x=mod(t*60\,w-20):y=100:w=20:h=20:[email protected]:t=fill" bouncing.mp4

Generate a spectrogram of an audio file

ffmpeg -i fadein.wav -lavfi showspectrumpic=s=1024x512 spectrogram.png

Blur a video (box blur)

ffmpeg -f lavfi -i "color=purple:duration=5:size=640x480" -vf "boxblur=10:1" blur.mp4

Rotate a video 90 degrees clockwise

ffmpeg -f lavfi -i "color=orange:duration=5:size=640x480" -vf "transpose=1" rotated.mp4

Overlay timestamp on video

ffmpeg -f lavfi -i "color=black:duration=10:size=640x480" -vf "drawtext=fontfile=/path/to/font.ttf:text='%{pts\:hms}':fontsize=24:fontcolor=white:x=10:y=10" timestamp.mp4

Note: Replace /path/to/font.ttf with the path to a valid font file on your system.

Create scrolling text video

ffmpeg -f lavfi -i "color=white:duration=10:size=640x100" -vf "drawtext=fontfile=/path/to/font.ttf:text='This is scrolling text':fontsize=24:x='w-mod(t*100\,w+text_w)':y=30:fontcolor=black" scrolling.mp4

Convert a video to grayscale

ffmpeg -f lavfi -i "testsrc=duration=5:size=640x480:rate=30" -vf "hue=s=0" grayscale.mp4

Create a side-by-side video from two inputs

ffmpeg -f lavfi -i "color=red:duration=5:size=320x240" -f lavfi -i "color=blue:duration=5:size=320x240" -filter_complex "[0:v][1:v]hstack=inputs=2" sidebyside.mp4

Zoom into the center of a video over time

ffmpeg -f lavfi -i "testsrc=duration=5:size=640x480:rate=30" -vf "zoompan=z='min(zoom+0.0015,1.5)':d=125" zoom.mp4

Convert a video segment to GIF

ffmpeg -f lavfi -i "testsrc=duration=3:size=320x240:rate=10" output.gif

Convert a real video to an optimized GIF (2-pass)

ffmpeg -i input.mp4 -vf "fps=15,scale=320:-1:flags=lanczos" -t 3 -y temp.gif
ffmpeg -i temp.gif -filter_complex "[0:v]palettegen" palette.png
ffmpeg -i input.mp4 -i palette.png -filter_complex "fps=15,scale=320:-1:flags=lanczos[x];[x][1:v]paletteuse" output.gif

Apply echo to audio

ffmpeg -f lavfi -i "sine=frequency=440:duration=5" -af "aecho=0.8:0.88:60:0.4" echo.wav

Apply reverb to audio

ffmpeg -f lavfi -i "sine=frequency=440:duration=5" -af "aecho=0.6:0.4:1000:0.5" reverb.wav

Combine video with silent audio

ffmpeg -f lavfi -i "color=gray:duration=5:size=640x480" -f lavfi -i "anullsrc=channel_layout=mono:sample_rate=44100" -shortest -c:v libx264 -c:a aac silent-video.mp4

Crossfade between two audio files

ffmpeg -i sine1.wav -i sine2.wav -filter_complex "[0][1]acrossfade=d=2:c1=tri:c2=tri" crossfade.wav

Note: Requires sine1.wav and sine2.wav to exist and be the same sample rate/channels.

Stack videos vertically

ffmpeg -f lavfi -i "color=red:duration=5:size=320x240" -f lavfi -i "color=blue:duration=5:size=320x240" -filter_complex "[0:v][1:v]vstack=inputs=2" stacked.mp4

Overlay a transparent PNG on a video

ffmpeg -f lavfi -i "testsrc=duration=5:size=640x480" -i overlay.png -filter_complex "[0:v][1:v]overlay=10:10" with-overlay.mp4

Add background noise to an audio signal

ffmpeg -f lavfi -i "sine=frequency=440:duration=5" -f lavfi -i "anoisesrc=color=pink:duration=5" -filter_complex "[0][1]amix=inputs=2:duration=first:dropout_transition=2" noisy.wav

Apply a waveform visualization of an audio file to video

ffmpeg -i fadein.wav -filter_complex "showwaves=s=640x240:mode=cline" waveform.mp4

Apply audio ducking (reduce music volume when voice is active)

ffmpeg -i music.wav -i voice.wav -filter_complex "[0:a][1:a]sidechaincompress=threshold=0.05" ducked.wav

Note: music.wav is background music, voice.wav is voiceover.

Replace green screen with background

ffmpeg -i greenscreen.mp4 -i background.jpg -filter_complex "[0:v]colorkey=0x00FF00:0.3:0.1[fg];[1:v][fg]overlay" chroma-key.mp4

Note: Requires greenscreen.mp4 with green background and background.jpg.

Slide transition between two videos

ffmpeg -i red.mp4 -i blue.mp4 -filter_complex "[0:v][1:v]xfade=transition=slideleft:duration=1:offset=4" slidetrans.mp4

Note: Ensure both input videos have same size/codec/duration (~5s).

Create a kaleidoscope effect

ffmpeg -f lavfi -i "testsrc=duration=5:size=640x480:rate=30" -vf "geq='lum(X,Y)':128:128,rotate=PI/3,split [a][b]; [a]hflip[a1]; [b]vflip[b1]; [a1][b1]overlay" kaleidoscope.mp4

Capture from webcam (macOS example, AVFoundation)

ffmpeg -f avfoundation -framerate 30 -i "0" -t 5 webcam.mov

Capture from webcam and microphone simultaneously (macOS)

ffmpeg -f avfoundation -video_size 640x480 -framerate 30 -i "0:0" -t 5 capture.mov

Add white noise to a silent video

ffmpeg -f lavfi -i "color=black:duration=5:size=640x480" -f lavfi -i "anoisesrc=color=white:duration=5" -shortest -map 0:v:0 -map 1:a:0 noise-video.mp4

Create looping waveform video of a short audio clip

ffmpeg -i fadein.wav -filter_complex "[0:a]showwaves=s=640x360:mode=line:colors=white,format=yuv420p" -t 5 waveform-loop.mp4

Simulate VHS-style distortion

ffmpeg -f lavfi -i testsrc=duration=5:size=640x480 -vf "hue=s=0,noise=alls=20:allf=t+u" vhs.mp4

Create pulsing zoom effect

ffmpeg -f lavfi -i "testsrc=duration=5:size=640x480" -vf "zoompan=z='1+0.5*sin(2*PI*t/1)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'" pulsing-zoom.mp4

Apply basic color grading (increase contrast and saturation)

ffmpeg -f lavfi -i "testsrc=duration=5:size=640x480" -vf "eq=contrast=1.5:saturation=1.8" graded.mp4

Apply a sepia filter

ffmpeg -f lavfi -i "testsrc=duration=5:size=640x480" -vf "colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131" sepia.mp4

Burn hardcoded subtitles into video

ffmpeg -i input.mp4 -vf "subtitles=subs.srt" subtitled.mp4

Note: subs.srt is a UTF-8 encoded subtitle file.

Create subtitles from text manually (no .srt needed)

ffmpeg -f lavfi -i "color=black:duration=5:size=640x480" -vf "drawtext=fontfile=/path/to/font.ttf:text='Hello World':fontsize=32:fontcolor=white:x=(w-text_w)/2:y=h-50" simple-sub.mp4

Live timestamp overlay on webcam (macOS example)

ffmpeg -f avfoundation -i "0" -vf "drawtext=fontfile=/path/to/font.ttf:text='%{localtime}':fontsize=24:fontcolor=white:x=10:y=10" -t 10 timestamped.mov

Animated typewriter text effect

ffmpeg -f lavfi -i "color=black:duration=5:size=640x120" -vf "drawtext=fontfile=/path/to/font.ttf:text='Typewriter effect':fontsize=32:fontcolor=white:x=10:y=50:enable='lt(t,0.5)+lt(t,1.0)+lt(t,1.5)+lt(t,2.0)'" typewriter.mp4

(For full animation, use separate drawtext lines per character or script generation.)

Add soft vignette effect

ffmpeg -f lavfi -i "testsrc=duration=5:size=640x480" -vf "vignette" vignette.mp4

Add subtitles with background box

ffmpeg -f lavfi -i "color=black:duration=5:size=640x360" -vf "drawtext=fontfile=/path/to/font.ttf:text='With Background':fontsize=28:fontcolor=white:box=1:[email protected]:x=(w-text_w)/2:y=h-60" boxed-subtitle.mp4

Add scrolling subtitles (ticker style)

ffmpeg -f lavfi -i "color=black:duration=10:size=640x100" -vf "drawtext=fontfile=/path/to/font.ttf:text='This is a scrolling subtitle across the bottom of the screen':fontsize=24:fontcolor=white:x='w-mod(t*100\,w+text_w)':y=h-40" scrolling-sub.mp4

Overlay live input onto a background video (picture-in-picture from webcam)

ffmpeg -f lavfi -i "color=blue:duration=10:size=640x480" -f avfoundation -framerate 30 -video_size 160x120 -i "0" -filter_complex "[0][1]overlay=10:10" live-overlay.mp4

Note: Adjust device index and source name depending on OS — avfoundation is macOS-specific.

Create a meme-style image with top and bottom text

ffmpeg -i input.jpg -vf "drawtext=fontfile=/path/to/font.ttf:text='TOP TEXT':fontsize=48:fontcolor=white:x=(w-text_w)/2:y=20:box=1:[email protected], drawtext=fontfile=/path/to/font.ttf:text='BOTTOM TEXT':fontsize=48:fontcolor=white:x=(w-text_w)/2:y=h-text_h-20:box=1:[email protected]" meme.jpg

Meme-style video with top text

ffmpeg -i input.mp4 -vf "drawtext=fontfile=/path/to/font.ttf:text='When FFmpeg just works':fontsize=48:fontcolor=white:x=(w-text_w)/2:y=20:box=1:[email protected]" meme-top.mp4

Add thick black stroke (outline) around meme text

ffmpeg -i input.jpg -vf "drawtext=fontfile=/path/to/font.ttf:text='OUTLINED TEXT':fontsize=48:fontcolor=white:borderw=3:bordercolor=black:x=(w-text_w)/2:y=(h-text_h)/2" outlined.jpg

Add emoji or special characters as text

ffmpeg -i input.jpg -vf "drawtext=fontfile=/path/to/font.ttf:text='That’s hot ':fontsize=48:fontcolor=white:x=(w-text_w)/2:y=20" emoji.jpg

Note: Use a font that supports emojis, like Apple Color Emoji or Noto Color Emoji.

Dynamically update text based on timestamp

ffmpeg -i input.mp4 -vf "drawtext=fontfile=/path/to/font.ttf:text='Seconds: %{eif\:t\:d}':fontsize=36:fontcolor=white:x=20:y=20:box=1:[email protected]" dynamic-time.mp4

Meme with uppercase impact-style font

ffmpeg -i input.jpg -vf "drawtext=fontfile=/path/to/Impact.ttf:text='TOO MANY FILTERS':fontsize=64:fontcolor=white:borderw=4:bordercolor=black:x=(w-text_w)/2:y=30" impact.jpg

Overlay a meme caption image (e.g. rage face)

ffmpeg -i input.jpg -i face.png -filter_complex "[0][1]overlay=W-w-20:H-h-20" rageface.jpg

Create video meme with top and bottom captions and aspect padding

ffmpeg -i input.mp4 -vf "pad=w=iw:h=ih+160:y=80:color=black, drawtext=fontfile=/path/to/font.ttf:text='TOP TEXT':fontsize=48:fontcolor=white:x=(w-text_w)/2:y=20, drawtext=fontfile=/path/to/font.ttf:text='BOTTOM TEXT':fontsize=48:fontcolor=white:x=(w-text_w)/2:y=h-text_h-20" meme-video.mp4

Animated meme: flashing text effect

ffmpeg -i input.mp4 -vf "drawtext=fontfile=/path/to/font.ttf:text='FLASH!':fontsize=64:fontcolor_expr='if(mod(t,0.5)<0.25,white,red)':x=(w-text_w)/2:y=50" flashing.mp4

Meme with vertical split text: two-part reaction

ffmpeg -i input.jpg -vf "drawtext=fontfile=/path/to/font.ttf:text='Before FFmpeg':fontsize=36:fontcolor=white:x=(w-text_w)/2:y=h/4:borderw=2:bordercolor=black, drawtext=fontfile=/path/to/font.ttf:text='After FFmpeg':fontsize=36:fontcolor=white:x=(w-text_w)/2:y=3*h/4:borderw=2:bordercolor=black" before-after.jpg

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions