Skip to content

Spin your podcast .wav into a groovy MP4 visualiser with Cava-inspired real-time audio frequencies 🔥

License

Notifications You must be signed in to change notification settings

linuxmatters/jivefire

Repository files navigation

Jivefire 🔥

Spin your podcast .wav into a groovy MP4 visualiser with Cava-inspired real-time audio frequencies.

The Groove

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.

Jivefire Demo

What's Cooking

  • 🖼️ Thumbnail generator YouTube-style PNG with your title, saved alongside the video
  • 🎬 1280×720 @ 30fps H.264/AAC YouTube-ready MP4, no questions asked
    • 🎚️ 64 frequency bars that actually look discrete (not that smeared spectrum nonsense)
    • 🪞 Symmetric mirroring above and below centre, doubles 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 conversion
    • GPU acceleration auto-detected: NVENC, Vulkan, VA-API, QuickSync, VideoToolbox
  • 📦 Single binary No Python. No FFmpeg install required. Just drop and render
    • 🐧 Linux (amd64 and aarch64)
    • 🍏 macOS (x86 and Apple Silicon)

Usage

Generate Video

./jivefire input.wav output.mp4

With Episode Number and Title

./jivefire --episode=42 --title="Linux Matters" input.wav output.mp4

Example

Build

Jivefire uses ffmpeg-statigo for FFmpeg static bindings.

# Setup or update ffmpeg-statigo submodule and library
just setup

# Build and test
just build        # Build binary
just test         # Run tests
just test-encoder # Test encoder

Why Jivefire?

FFmpeg'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.

About

Spin your podcast .wav into a groovy MP4 visualiser with Cava-inspired real-time audio frequencies 🔥

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Contributors 2

  •  
  •