Generic music player backend library.
For documentation, see include/groove.h and the examples. Live chat is available in the #libgroove channel of irc.freenode.org.
- Uses libav for robust decoding and encoding.
- Add and remove entries on a playlist for gapless playback.
- Supports idempotent pause, play, and seek.
- Per-playlist-item gain adjustment so you can implement loudness compensation without audio glitches.
- Read and write metadata tags.
- Extensible sink-based interface. A sink provides resampling
and keeps its buffer full. Types of sinks:
- raw sink - provides reference-counted raw audio buffers you can do whatever you like with. For example a real-time audio visualization. All other sink types are built on top of this one.
- player sink - sends frames to a sound device.
- encoder sink - provides encoded audio buffers. For example you could use this to create an HTTP audio stream.
- loudness scanner sink - uses the EBU R 128 standard to detect loudness. The values it produces are compatible with ReplayGain.
- (on the roadmap) accoustid fingerprint
- Thread-safe.
- Example programs included:
playlist- play a series of songs with gapless playbackmetadata- read or update song metadatareplaygain- report the suggested replaygain for a set of filestranscode- transcode one or more files into one output file
- Cross-platform.
You will need these to compile libgroove. All of these are almost certainly in your local package manager.
- libav
- Once libav makes an upstream release, libgroove will try to build against the system libav and fall back on the bundled version.
- libebur128
- libgroove tries to build against system libebur128 library and falls back on the bundled version.
- libsdl2-dev
- libgroove tries to build against system SDL2 library and falls back on the bundled version.
-
Ubuntu 13.10 Saucy - https://launchpad.net/~andrewrk/+archive/libgroove
sudo apt-add-repository ppa:andrewrk/libgroove sudo apt-get update sudo apt-get install libgroove-dev
mkdir build && cd build && cmake ../- Verify that all dependencies say "OK".
makesudo make install
Feel free to make a pull request adding yours to this list.
- TrenchBowl - a simple Qt GUI on top of libgroove.
- node-groove -
Node.js bindings to libgroove.
- Groove Basin - lazy multi-core replaygain scanning, web interface inspired by Amarok 1.4, http streaming, upload, download, dynamic playlist mode