
Groovebox π¦ Badass CLI app for streaming to Twitch, Youtube,
any RTMP servers and π§ Icecast-compatible servers
Fast β’ Lightweight β’ Compiled β’ π Written in Nim language
nimble install groovebox
Note
Groovebox is still in active development. Expect bugs and incomplete features!
Groovebox is a lightweight CLI application for live streaming pre-recorded playlists of media to YouTube, Twitch and other RTMP (Real-Time Messaging Protocol) servers. Comes with a built-in RTMP server implementation that can be used to receive and redistribute streams to other clients.
Also, with Groovebox you can stream music to Icecast-compatible servers! It is designed to be fast, memory-efficient, and easy to use, making it ideal for streaming sessions and internet radio stations.
- π₯ Compiled, extremely lightweight, and super fast
- π΅ Supports MP3, OGG Vorbis, OGG Opus, AAC, and more via external encoders
- πΈ RTMP (Real-Time Messaging Protocol) support for future expansion
- π Icecast Client compatible with Icecast2 servers
- π Zero-copy Media Streaming for maximum performance and minimal memory usage
- π Shuffle tracks in playlist
- Works on Linux and macOS
- π© Open Source | AGPLv3 License
- π Written in Nim language | Made by Humans from OpenPeeps
Note
Groovebox does not provide an encoder/decoder (codec) implementation. It is intended to be used for streaming pre-encoded audio/video via tools such as ffmpeg.
Using Nimble, the package manager for Nim:
nimble install groovebox
# or install from GitHub
nimble install https://github.com/openpeeps/grooveboxOtherwise, get the latest release from the Releases page (soon).
After installing Groovebox, you can run the groovebox -h command in your terminal to see the available options and commands.
$ groovebox -h
________ ___________
/ _____/______ ____ _______ __ ____\______ \ _______ ___
/ \ __\_ __ \/ _ \ / _ \ \/ // __ \| | _// _ \ \/ /
\ \_\ \ | \( <_> | <_> ) /\ ___/| | ( <_> > <
\______ /__| \____/ \____/ \_/ \___ >______ /\____/__/\_ \
\/ \/ \/ \/
Live stream pre-recorded music to Twitch, Yotube and Icecast servers
(c) George Lemon | AGPL-3.0-or-later License
Build Version: 0.1.0
init <config:path> Initialize a new Groovebox Configuration file
Streaming
icecast <config:path> Stream media to a Icecast server
rtmp β²
server <config:path> Start a local RTMP server to receive streams
stream <config:path> Stream media to a RTMP server
Media Tools
flv <in:path> <out:filepath> Convert media to FLV format for RTMP streaming
aac <in:path> <out:filepath> Convert audio to AAC format for RTMP streaming
--kbs
ogg <in:path> <out:filepath> Convert audio to OGG format for Icecast streaming
--kbs
Groovebox streams directly to any Icecast server using minimal memory and CPU, as it does not re-encode media files. Instead, it streams pre-encoded OGG files, allowing for high-quality audio streaming with excellent performance.
Note: You must pre-encode your media files to OGG format before streaming with Groovebox. Live effects and controls (like those in Liquidsoap or other live re-encoding software) are not available.
Groovebox is ideal for:
- Backyard radio stations
- Parties
- Coffee shops
- Small venues
Groovebox provides built-in commands to prepare your media:
- For RTMP streaming:
flvβ Convert video files to FLV formataacβ Convert audio files to AAC format
- For Icecast streaming:
oggβ Convert audio files to OGG format
Groovebox uses
ffmpegunder the hood. Make sureffmpegis installed and available in your systemPATH.
Groovebox uses a YAML configuration file (groovebox.config.yaml) to specify streaming settings, such as server URLs, stream keys, and playlist paths.
You can create this file with groovebox init or manually.
Recently added support for a built-in Icecast-compatible server implementation so you don't need to install any third-party software to for streaming. Starting the server is simple:
groovebox icecast.server groovebox.config.yamltodo showcase the config file for the server
To stream to an Icecast server using the groovebox icecast.stream command, configure your groovebox.config.yaml as follows:
type: icecast
icecast:
connection:
address: localhost
port: 8000
mountPoint: "/stream"
playlists:
- "playlist.txt"Groovebox can stream to any RTMP server, including YouTube and Twitch. Youβll need the RTMP URL and Stream Key from your platform.
Start the built-in RTMP server to receive and redistribute streams:
groovebox rtmp.server .- The server listens on
rtmp://127.0.0.1:1935by default. - No specific config is required; use
.to skip CLI validation.
Use the rtmp.stream command to stream media to an RTMP server.
Configure your groovebox.config.yaml as follows:
type: rtmp
stream:
url: "rtmp://live.twitch.tv/app/your_stream_key"
video:
- "./videoplaylist.txt"
audio:
- "./audioplaylist.txt"| Feature | Groovebox | ffmpeg | AzuraCast | OBS Studio / Others |
|---|---|---|---|---|
| Simplicity | β Simple CLI, no complex commands | β Complex CLI, scripting required | β Web UI, but more setup | β Complex UI, many options |
| Playlist Management | β Built-in, shuffle support | β Manual, external scripts needed | β Advanced, web-based | β Manual, scene-based |
| Zero-Copy Streaming | β Yes, direct file-to-network | β Loads into memory/buffers | β Not zero-copy | β Not zero-copy |
| Lightweight | β Very lightweight | β Lightweight, but less focused | β Heavy, Docker-based | β Heavy, needs GPU/CPU |
| No GPU Required | β Never required | β Not required for audio | β Not required | β Often required for video |
| Ideal for VPS | β Yes, low resource usage | β Yes, but needs scripting | β Needs more resources | β Not ideal, high resource |
| Live Effects/Processing | β Not supported | β Supported via filters | β Supported | β Supported |
| Web Interface | β CLI only | β None | β Yes | β Yes |
| Built-in Server | β RTMP & Icecast compatible | β No | β Yes | β No |
| Open Source | β Yes (AGPLv3) | β Yes (LGPL/GPL) | β Yes (AGPLv3) | β Yes |
Note: Groovebox is designed for streaming pre-encoded playlists with maximum efficiency and minimal setup, making it ideal for simple, automated streaming scenarios.
Source Client
- Handle multiple playlists
- Zero-copy live streaming pre-recorded media to RTMP servers
- Support for streaming to Icecast-compatible servers
- Support for streaming to YouTube/Twitch RTMP servers
- Shuffle playlists
- Improve the shuffle algorithm (ensure no repeats until all tracks played)
- Add support for more audio formats
- Add support for video streaming
- Add web interface for monitoring and control
- Support ads insertion
- Live streaming from non non-seekable sources (e.g. stdin) via ffmpeg
Server
- Implement a Icecast-compatible based on Libevent
- Middleware Authentication using JWT
- Subscriber management
- Rate Limiting and Anti-abuse
- Analytics and Reporting Dashboard
- π Found a bug? Create a new Issue
- π Wanna help? Fork it!
- π Get β¬20 in cloud credits from Hetzner
AGPLv3 license. Made by Humans from OpenPeeps.
Copyright OpenPeeps & Contributors β All rights reserved.