I kept wanting demoscene-style output β hard pixels, tiny palettes β without hand-tweaking every frame, so I built a small Node.js processor around Sharp and FFmpeg.
Effects
sparse - Gapped colored pixels with edge preservation
dither - Ordered Bayer dithering
halftone - Circular dots by luminance
crt - RGB subpixels with scanline gaps
crosshatch - Diagonal line hatching
scanline - Horizontal run-length blocks
edge - Edge detection only
sparse-dither - Combined dither + sparse
Download
Extract and run: npm install && node process.mjs input.mp4 output.gif -e sparse