gpt-taste
gpt taste
ffmpeg-glitch-distortion-effects
Complete glitch art, datamosh, and video distortion effects system. PROACTIVELY activate for: (1) Datamosh/pixel bleeding effects, (2) VHS/analog glitch simulation, (3) Digital corruption effects, (4) Displacement mapping, (5) Wave/ripple distortions, (6) Pixelation and mosaic effects, (7) Chroma...
Full skill instructions
MANDATORY: Always Use Backslashes on Windows for File Paths
When using Edit or Write tools on Windows, you MUST use backslashes (\) in file paths, NOT forward slashes (/).
| Effect | Command |
|---|---|
| Datamosh | -vf "minterpolate='mi_mode=mci:mc_mode=aobmc:me_mode=bidir'" |
| Chromatic aberration | -vf "rgbashift=rh=-5:bh=5" |
| VHS noise | -vf "noise=c0s=20:c0f=t,eq=saturation=1.2" |
| Pixelate | -vf "scale=iw/10:ih/10,scale=iw*10:ih*10:flags=neighbor" |
| Wave distortion | -vf "displace=..." with displacement map |
| Echo/trails | -vf "lagfun=decay=0.95" |
| Scan lines | -vf "drawgrid=w=iw:h=2:t=1:[email protected]" |
Use for creative distortion effects:
Complete guide to datamosh, glitch art, VHS effects, displacement, and creative video distortion with FFmpeg.
Datamosh creates the "pixel bleeding" effect by manipulating motion compensation.
# Basic datamosh effect
ffmpeg -i input.mp4 \
-vf "minterpolate='mi_mode=mci:mc_mode=aobmc:me_mode=bidir:vsbmc=1'" \
-c:v libx264 -crf 18 datamosh.mp4
# Parameters explained:
# mi_mode=mci: Motion compensated interpolation
# mc_mode=aobmc: Adaptive overlapped block motion compensation
# me_mode=bidir: Bidirectional motion estimation
# vsbmc=1: Variable size block motion compensation
# Heavy datamosh (more chaos)
ffmpeg -i input.mp4 \
-vf "minterpolate='fps=60:mi_mode=mci:mc_mode=aobmc:me_mode=bidir:me=epzs:vsbmc=1:scd=none'" \
-c:v libx264 -crf 18 heavy_datamosh.mp4
# scd=none: Disable scene change detection (more bleeding across cuts)
# me=epzs: Enhanced predictive zonal search (faster, rougher)
# Datamosh by removing I-frames (requires re-encoding)
ffmpeg -i input.mp4 \
-vf "minterpolate='mi_mode=mci:mc_mode=aobmc',\
tblend=all_mode=difference:all_opacity=0.5" \
datamosh_blend.mp4
# Combine with echo for trails
ffmpeg -i input.mp4 \
-vf "minterpolate='mi_mode=mci:mc_mode=aobmc',lagfun=decay=0.9" \
datamosh_trails.mp4
# Datamosh only certain section
ffmpeg -i input.mp4 \
-vf "minterpolate='mi_mode=mci:mc_mode=aobmc':enable='between(t,5,10)'" \
controlled_datamosh.mp4
Color channel separation for that "broken lens" look.
# Horizontal chromatic aberration
ffmpeg -i input.mp4 \
-vf "rgbashift=rh=-5:bh=5" \
chromatic.mp4
# Parameters:
# rh/rv: Red horizontal/vertical shift
# gh/gv: Green horizontal/vertical shift
# bh/bv: Blue horizontal/vertical shift
# ah/av: Alpha horizontal/vertical shift
# Vertical chromatic aberration
ffmpeg -i input.mp4 \
-vf "rgbashift=rv=-3:bv=3" \
chromatic_v.mp4
# Both directions
ffmpeg -i input.mp4 \
-vf "rgbashift=rh=-4:rv=-2:bh=4:bv=2" \
chromatic_both.mp4
# Pulsing chromatic aberration
ffmpeg -i input.mp4 \
-vf "rgbashift=rh='5*sin(t*3)':bh='-5*sin(t*3)'" \
pulsing_chromatic.mp4
# Increasing aberration over time
ffmpeg -i input.mp4 \
-vf "rgbashift=rh='-t*2':bh='t*2'" \
increasing_chromatic.mp4
# Shift chroma channels (U/V in YUV)
ffmpeg -i input.mp4 \
-vf "chromashift=cbh=5:crh=-5" \
chroma_shift.mp4
# cbh/cbv: Cb (blue-difference) horizontal/vertical
# crh/crv: Cr (red-difference) horizontal/vertical
# Full VHS effect
ffmpeg -i input.mp4 \
-vf "\
noise=c0s=15:c0f=t:c1s=10:c1f=t,\
eq=saturation=1.4:contrast=1.1:brightness=-0.02,\
chromashift=cbh=3:crh=-3,\
rgbashift=rh=2:bh=-2,\
unsharp=3:3:-0.5,\
drawgrid=w=iw:h=2:t=1:[email protected],\
curves=preset=vintage" \
-c:v libx264 -crf 20 vhs_effect.mp4
# 1. VHS Noise (temporal noise)
ffmpeg -i input.mp4 \
-vf "noise=c0s=20:c0f=t:c1s=15:c1f=t" \
vhs_noise.mp4
# 2. VHS Color bleeding
ffmpeg -i input.mp4 \
-vf "chromashift=cbh=4:cbv=2:crh=-3:crv=1" \
vhs_color_bleed.mp4
# 3. VHS Scan lines
ffmpeg -i input.mp4 \
-vf "drawgrid=w=iw:h=2:t=1:[email protected]" \
vhs_scanlines.mp4
# 4. VHS Tracking issues (simulated)
ffmpeg -i input.mp4 \
-vf "crop=iw:ih-20:0:'20*random(1)',pad=iw:ih+20:0:10" \
vhs_tracking.mp4
# 5. VHS Oversaturated colors
ffmpeg -i input.mp4 \
-vf "eq=saturation=1.5:contrast=1.1,curves=preset=vintage" \
vhs_colors.mp4
# Static overlay blend
ffmpeg -f lavfi -i "nullsrc=s=1920x1080:d=10" \
-vf "noise=c0s=100:c0f=a+t,format=gray" \
-c:v libx264 -t 10 static.mp4
# Blend static with video
ffmpeg -i input.mp4 -i static.mp4 \
-filter_complex "[0:v][1:v]blend=all_mode=screen:all_opacity=0.1" \
vhs_static.mp4
# Pixelate entire video
ffmpeg -i input.mp4 \
-vf "scale=iw/10:ih/10,scale=iw*10:ih*10:flags=neighbor" \
pixelated.mp4
# Parameters:
# First scale: Reduce resolution (divide by pixelation level)
# Second scale: Scale back up with nearest neighbor (no interpolation)
# Variable pixelation level
ffmpeg -i input.mp4 \
-vf "scale=iw/20:ih/20,scale=iw*20:ih*20:flags=neighbor" \
heavy_pixel.mp4
# Pixelation that increases over time
ffmpeg -i input.mp4 \
-vf "scale='iw/max(1,t*2)':'ih/max(1,t*2)',scale=iw:ih:flags=neighbor" \
animated_pixel.mp4
# Note: This is approximate; true animated requires geq or external scripts
# Mosaic specific region (face blur style)
ffmpeg -i input.mp4 \
-filter_complex "\
[0:v]crop=200:200:300:200[face];\
[face]scale=iw/10:ih/10,scale=iw*10:ih*10:flags=neighbor[blurred];\
[0:v][blurred]overlay=300:200" \
mosaic_region.mp4
# Create displacement map (gradient)
ffmpeg -f lavfi -i "gradients=s=1920x1080:c0=black:c1=white:x0=0:y0=540:x1=1920:y1=540" \
-vframes 1 displacement_h.png
# Apply horizontal wave displacement
ffmpeg -i input.mp4 -i displacement_h.png \
-filter_complex "[0:v][1:v]displace=edge=wrap" \
wave_h.mp4
# Horizontal wave using geq
ffmpeg -i input.mp4 \
-vf "geq=lum='lum(X+10*sin(Y/20+T*5),Y)':cb='cb(X+10*sin(Y/20+T*5),Y)':cr='cr(X+10*sin(Y/20+T*5),Y)'" \
wave_animated.mp4
# Vertical wave
ffmpeg -i input.mp4 \
-vf "geq=lum='lum(X,Y+10*sin(X/20+T*5))':cb='cb(X,Y+10*sin(X/20+T*5))':cr='cr(X,Y+10*sin(X/20+T*5))'" \
wave_v.mp4
# Ripple from center
ffmpeg -i input.mp4 \
-vf "geq=lum='lum(X+5*sin(sqrt(pow(X-W/2,2)+pow(Y-H/2,2))/10-T*5),Y+5*cos(sqrt(pow(X-W/2,2)+pow(Y-H/2,2))/10-T*5))':cb='cb(X,Y)':cr='cr(X,Y)'" \
ripple.mp4
# Barrel distortion (fisheye-like)
ffmpeg -i input.mp4 \
-vf "lenscorrection=cx=0.5:cy=0.5:k1=0.5:k2=0.5" \
barrel.mp4
# Pincushion distortion (opposite of barrel)
ffmpeg -i input.mp4 \
-vf "lenscorrection=cx=0.5:cy=0.5:k1=-0.3:k2=-0.3" \
pincushion.mp4
# Parameters:
# cx, cy: Lens center (0-1, 0.5 = center)
# k1, k2: Distortion coefficients (positive = barrel, negative = pincushion)
# Motion trails
ffmpeg -i input.mp4 \
-vf "lagfun=decay=0.95" \
trails.mp4
# Parameters:
# decay: How fast trails fade (0-1, higher = longer trails)
# Heavy trails
ffmpeg -i input.mp4 \
-vf "lagfun=decay=0.98" \
heavy_trails.mp4
# Light trails
ffmpeg -i input.mp4 \
-vf "lagfun=decay=0.85" \
light_trails.mp4
# Trails with color shift
ffmpeg -i input.mp4 \
-vf "lagfun=decay=0.95,hue=h=t*10" \
color_trails.mp4
# Inverted trails (bright areas leave dark trails)
ffmpeg -i input.mp4 \
-vf "negate,lagfun=decay=0.95,negate" \
inverted_trails.mp4
# Average 5 frames (motion blur effect)
ffmpeg -i input.mp4 \
-vf "tmix=frames=5:weights='1 1 1 1 1'" \
motion_blur.mp4
# Echo effect (repeat previous frames)
ffmpeg -i input.mp4 \
-vf "tmix=frames=10:weights='1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1'" \
echo.mp4
# Ghosting
ffmpeg -i input.mp4 \
-vf "tmix=frames=3:weights='1 0.5 0.25'" \
ghosting.mp4
# Frame difference (motion highlight)
ffmpeg -i input.mp4 \
-vf "tblend=all_mode=difference" \
frame_diff.mp4
# Available modes:
# addition, addition128, multiply, multiply128
# average, difference, difference128
# divide, exclusion, extremity, freeze
# glow, hardlight, hardmix, heat
# lighten, darken, linearlight, negation
# normal, overlay, phoenix, pinlight
# reflect, screen, softdifference
# softlight, stain, subtract, vividlight, xor
# Neon edges
ffmpeg -i input.mp4 \
-vf "tblend=all_mode=difference128,eq=brightness=0.1:contrast=2" \
neon_edges.mp4
# Psychedelic blend
ffmpeg -i input.mp4 \
-vf "tblend=all_mode=phoenix" \
psychedelic.mp4
# Burn effect
ffmpeg -i input.mp4 \
-vf "tblend=all_mode=heat" \
burn_effect.mp4
# Digital glitch noise
ffmpeg -i input.mp4 \
-vf "\
noise=c0s=30:c0f=a+t:c1s=20:c1f=a+t,\
rgbashift=rh='5*random(1)':bh='-5*random(1)'" \
digital_glitch.mp4
# Note: random() generates noise, but isn't truly random between frames
# Heavy compression artifacts
ffmpeg -i input.mp4 \
-c:v libx264 -crf 51 -preset ultrafast \
temp_compressed.mp4
ffmpeg -i temp_compressed.mp4 \
-c:v libx264 -crf 18 \
artifacts.mp4
# Blocky artifacts with multiple re-encodes
for i in {1..5}; do
ffmpeg -y -i input.mp4 -c:v libx264 -crf 40 temp.mp4
mv temp.mp4 input.mp4
done
# Bit-depth reduction (posterization)
ffmpeg -i input.mp4 \
-vf "geq=lum='floor(lum(X,Y)/32)*32':cb='floor(cb(X,Y)/32)*32':cr='floor(cr(X,Y)/32)*32'" \
bit_crush.mp4
# XOR pattern
ffmpeg -i input.mp4 \
-vf "geq=lum='bitxor(lum(X,Y),X+Y)':cb='cb(X,Y)':cr='cr(X,Y)'" \
xor_pattern.mp4
# Horizontal scan lines
ffmpeg -i input.mp4 \
-vf "drawgrid=w=iw:h=2:t=1:[email protected]" \
scanlines.mp4
# Heavier scan lines
ffmpeg -i input.mp4 \
-vf "drawgrid=w=iw:h=4:t=2:[email protected]" \
heavy_scanlines.mp4
# RGB scan lines (trinitron style)
ffmpeg -i input.mp4 \
-vf "drawgrid=w=3:h=ih:t=1:[email protected]" \
rgb_scanlines.mp4
# Full CRT effect
ffmpeg -i input.mp4 \
-vf "\
gblur=sigma=0.5,\
drawgrid=w=iw:h=2:t=1:[email protected],\
vignette=PI/4,\
eq=saturation=1.2:contrast=1.1,\
lenscorrection=k1=0.1:k2=0.1,\
noise=c0s=5:c0f=t" \
crt_effect.mp4
# Add interlacing artifacts
ffmpeg -i input.mp4 \
-vf "interlace=scan=tff,fieldorder=bff" \
interlaced.mp4
# Fake interlacing (comb effect)
ffmpeg -i input.mp4 \
-vf "tinterlace=merge" \
comb_effect.mp4
# Horizontal mirror (left to right)
ffmpeg -i input.mp4 \
-vf "crop=iw/2:ih:0:0,split[a][b];[b]hflip[b];[a][b]hstack" \
mirror_h.mp4
# Vertical mirror (top to bottom)
ffmpeg -i input.mp4 \
-vf "crop=iw:ih/2:0:0,split[a][b];[b]vflip[b];[a][b]vstack" \
mirror_v.mp4
# Quad mirror (kaleidoscope-lite)
ffmpeg -i input.mp4 \
-vf "\
crop=iw/2:ih/2:0:0,split=4[a][b][c][d];\
[b]hflip[b];[c]vflip[c];[d]hflip,vflip[d];\
[a][b]hstack[top];[c][d]hstack[bottom];\
[top][bottom]vstack" \
quad_mirror.mp4
ffmpeg -i input.mp4 \
-vf "\
minterpolate='mi_mode=mci:mc_mode=aobmc':enable='lt(mod(t,2),0.2)',\
rgbashift=rh='3*sin(t*10)':bh='-3*sin(t*10)',\
lagfun=decay=0.9:enable='gt(mod(t,3),2.5)',\
noise=c0s=10:c0f=t:enable='lt(mod(t,5),0.3)'" \
-c:v libx264 -crf 18 music_glitch.mp4
ffmpeg -i input.mp4 \
-vf "\
eq=brightness=-0.1:contrast=1.2:saturation=0.7,\
chromashift=cbh='5*random(1)':crh='-3*random(1)',\
noise=c0s=15:c0f=a+t,\
tblend=all_mode=difference:all_opacity=0.1:enable='lt(mod(t,3),0.1)',\
drawgrid=w=iw:h=2:t=1:[email protected]" \
horror_glitch.mp4
ffmpeg -i input.mp4 \
-vf "\
eq=saturation=1.5:contrast=1.3,\
colorbalance=rs=0.2:bs=0.2,\
rgbashift=rh='-3':bh='3',\
drawgrid=w=iw:h=3:t=1:[email protected],\
unsharp=5:5:1.5" \
cyberpunk.mp4
ffmpeg -i input.mp4 \
-vf "\
noise=c0s=50:c0f=t:enable='lt(mod(t,10),0.5)',\
chromashift=cbh='10*random(1)':enable='lt(mod(t,10),0.5)',\
eq=brightness='-0.3*lt(mod(t,10),0.5)'" \
signal_loss.mp4
# Process effects, then encode with hardware
ffmpeg -i input.mp4 \
-vf "your_glitch_filters" \
-c:v rawvideo -f nut - | \
ffmpeg -i - \
-c:v h264_nvenc -preset p4 -cq 20 \
output.mp4
This guide covers FFmpeg glitch and distortion effects. For color grading see ffmpeg-color-grading-chromakey, for transitions see ffmpeg-transitions-effects.
gpt taste
Premium brand-kit image generation for high-end identity systems, logo concepts, and visual-world presentations.
Premium website design-to-code skill that generates visual references first, then builds faithful frontend implementations.
Premium frontend image direction for landing pages and marketing sites, generating one distinct horizontal image per section.
Premium mobile app screen concepts and flows with clean hierarchy, strong imagery, and distinctive art direction.
Emil Kowalski's philosophy on UI polish, component design, and the invisible details that make software feel good.
Frontend design and iteration for production-grade interfaces, from concept to ship.
Reverse-engineer design tokens from public websites into starter token files for your project.
Builds an animation from scratch by making the decisions in the order that determines whether it feels right.
Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.
Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
Toolkit for styling artifacts with a theme. These artifacts can be slides, docs, reportings, HTML landing pages, etc. There are 10 pre-set themes with colors/fonts that you can apply to any artifact that has been creating, or can generate a new theme on-the-fly.
Chat-to-edit AI studio for product photos, portraits, branding, and video.
Generate your dream room in seconds.
Redesign your interior in seconds using AI
Transform rooms with AI-generated designs.
Transform Your Space with AI-Powered Japanese Interior Designs by Jife
AI-powered wireframes for non-designers.
Revolutionize Property Viewing with AI-Generated Floor Plans and Virtual Tours
Transform sketches into stunning architectural renders with AI.