Claude
Skills
Sign in
Back

ffmpeg-glitch-distortion-effects

Included with Lifetime
$97 forever

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) Chromatic aberration, (8) Scan line effects, (9) Time-based distortions (echo, trails), (10) Lens distortion and barrel effects. Provides: minterpolate for datamosh, displacement filter, geq pixel manipulation, noise and artifacts, rgbashift/chromashift for color separation, lagfun for trails, tmix for frame blending, tblend for frame difference effects.

Image & Video

What this skill does

## CRITICAL GUIDELINES

### Windows File Path Requirements

**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 (`/`).

---

## Quick Reference

| 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]"` |

## When to Use This Skill

Use for **creative distortion effects**:
- Music video glitch aesthetics
- Datamosh/pixel bleeding art
- VHS/analog video simulation
- Digital corruption and artifacts
- Psychedelic and experimental video
- Horror/unsettling visual effects

---

# FFmpeg Glitch & Distortion Effects (2025)

Complete guide to datamosh, glitch art, VHS effects, displacement, and creative video distortion with FFmpeg.

## Datamosh Effects

Datamosh creates the "pixel bleeding" effect by manipulating motion compensation.

### Basic Datamosh with minterpolate

```bash
# 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
```

### Intense Datamosh

```bash
# 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 with Frame Manipulation

```bash
# 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
```

### Controlled Datamosh (Specific Sections)

```bash
# Datamosh only certain section
ffmpeg -i input.mp4 \
  -vf "minterpolate='mi_mode=mci:mc_mode=aobmc':enable='between(t,5,10)'" \
  controlled_datamosh.mp4
```

## Chromatic Aberration

Color channel separation for that "broken lens" look.

### rgbashift Filter

```bash
# 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
```

### Animated Chromatic Aberration

```bash
# 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
```

### chromashift Filter (Chroma Only)

```bash
# 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
```

## VHS/Analog Effects

### Complete VHS Simulation

```bash
# 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
```

### VHS Components Breakdown

```bash
# 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
```

### VHS Static/Snow

```bash
# 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
```

## Pixelation & Mosaic

### Basic Pixelation

```bash
# 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
```

### Animated Pixelation

```bash
# 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/Censoring Effect

```bash
# 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
```

## Wave & Ripple Distortion

### Displacement Map

```bash
# 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
```

### Animated Wave with geq

```bash
# 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
```

### lenscorrection (Barrel/Pincushion)

```bash
# 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)
```

## Echo & Trails (lagfun)

### 

Related in Image & Video