Skip to content
/ bitrot Public

An application for creating glitchy video effects 💫

License

Notifications You must be signed in to change notification settings

sixem/bitrot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BitRot

TypeScript Sass Tauri Vite React

A simple interface for creating glitchy video effects.

Features

  • Drag-and-drop video input anywhere in the app
  • Multiple processing modes:
    • Analog: light grit and clarity tweaks
    • Chroma glitch: chroma shifts, decay trails, and noise
    • Datamosh (classic): scene-aware I-frame removal
  • FFmpeg + ffprobe sidecar workflow (works in dev and bundled builds)
  • Export to web-friendly MP4 (H.264 + AAC)

Showcase

pixelsort.mp4
chroma-glitch.mp4
datamosh-classic.mp4

Development

Prereqs (typical Tauri + Vite stack):

  • Node 20.19+ or 22.12+
  • pnpm
  • Rust (stable)
  • Tauri system prereqs for your OS or distro

Install and run:

pnpm install
pnpm run setup:ffmpeg # to load the ffmpeg/ffprobe binaries from PATH
pnpm tauri dev

Tests

Frontend tests (Vitest):

pnpm test

Rust tests:

cd src-tauri
cargo test

See TEST_OUTLINE.md for coverage details.

Build + portable zip (Windows)

To build a portable zip on Windows:

pnpm run setup:ffmpeg
pnpm tauri build
pnpm run make:portable

FFmpeg sidecars

This project expects FFmpeg and ffprobe as sidecar binaries.

Place them in:

  • src-tauri/binaries/

Quick setup (copies from your PATH):

pnpm run setup:ffmpeg

FFmpeg is resolved in this order:

  1. ffmpeg(.exe) / ffprobe(.exe) next to the app executable (packaged builds)
  2. Sidecars in binaries/ (packaged into app resources) or src-tauri/binaries/ (dev)
  3. System PATH as a final fallback

For development and building, use names that match your platform target triple:

  • Windows (x64 MSVC):
    • ffmpeg-x86_64-pc-windows-msvc.exe
    • ffprobe-x86_64-pc-windows-msvc.exe
  • macOS (Intel):
    • ffmpeg-x86_64-apple-darwin
    • ffprobe-x86_64-apple-darwin
  • Linux (x64 GNU):
    • ffmpeg-x86_64-unknown-linux-gnu
    • ffprobe-x86_64-unknown-linux-gnu

Tauri resolves these from the base names binaries/ffmpeg and binaries/ffprobe.

Notes

Some files include multiple video tracks; BitRot always targets the first video stream plus the first audio stream (if present).

H.264 requires even dimensions. If a clip is odd-sized (for example 1921x1081), BitRot trims a single pixel to keep encoders happy.

Datamoshing is intentionally destructive. Not every input will behave perfectly, and some videos may work better than others for certain effects.

License

MIT. See LICENSE.