Home
Softono

Jivefire

Open source Go
11
Stars
2
Forks
0
Issues
0
Watchers
3 months
Last Commit

 About Jivefire

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

Platforms

Web Self-hosted Linux

Languages

Go

Need Help Installing Jivefire?

We provide expert installation service for this software. Our team will install, configure, and secure Jivefire on your server. plans start at just $30.

Jivefire 🔥

Spin your podcast .wav into a groovy MP4 visualiser with spring-driven 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
    • Spring-driven bar dynamics bars snap up instantly, spring back down via harmonica peak-hold
  • 🚀 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

Without Episode Number (unnumbered audio)

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

--episode is optional. Omitting it suppresses the episode number overlay entirely — useful for archive or bonus audio that has no episode number. Passing --episode=0 still renders 00 on-screen (single-digit values are zero-padded, so 5 renders as 05); absence is what controls the overlay, not the value.

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.