Spin your podcast .wav into a groovy MP4 visualiser with Cava-inspired real-time audio frequencies.
Your podcast audio deserves more than a static image on YouTube. Jivefire transforms WAV/MP3/FLAC into delightful 720p visuals—bars that breathe with your dialogue, rise with your laughter, and groove through every frequency.
- 🖼️ Thumbnail generator—YouTube-style PNG with your title, saved alongside the video
- 🎬 1280×720 @ 30fps H.264/AAC MP4—YouTube-ready, no questions asked
- 🎚️ 64 frequency bars that actually look discrete (not that smeared spectrum nonsense)
- 🪞 Symmetric mirroring above and below centre—double the visual impact
- 🔬 FFT-based analysis (2048-point Hanning window, log scale frequency binning)
- ✨ Smooth decay animation à la CAVA—bars rise fast, fall gracefully
- 🚀 Stupidly fast—streaming pipeline, parallel RGB→YUV, zero bloat
- 📦 Single binary No Python. No FFmpeg install required. Just drop and render
- 🐧 Linux (amd64 and aarch64)
- 🍏 macOS (x86 and Apple Silicon)
./jivefire input.wav output.mp4./jivefire --episode=42 --title="Linux Matters" input.wav output.mp4Jivefire uses ffmpeg-statigo for FFmpeg 8.0 static bindings.
# First time setup (download FFmpeg libraries)
git submodule update --init --recursive
just setup
# Build and test
just build # Build binary
just test # Run tests
just test-mp3 # Render test audioFFmpeg's audio visualisation filters (showfreqs, showspectrum) render continuous frequency spectra, not discrete bars. No amount of FFmpeg filter chain kung-fu can achieve the discrete 64-bar aesthetic required for Linux Matters branding. Solution: Do the FFT analysis and bar rendering in Go, pipe frames to FFmpeg for encoding.
Why Go over Python? The original djfun/audio-visualizer-python tool is a moribund Qt5 GUI with significant tech debt. For our podcast production needs we wanted multi-archtitecture tools that's that can integrate into automation pipelines.
The Jivefire architecture, such as it is, is available in the ARCHITECTURE.md document.
