Audio dispatching library. Generic sink-based interface. Provides decoding, encoding, resampling, and gain adjustment. Perfect for the backend of a music player.
- 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. Some dependencies are bundled so that you can still compile if they cannot be found on your system.
- cmake
- libav. (bundled) if using bundled version, needs these:
- libebur128 (bundled)
- libsdl2-dev (bundled)
-
sudo apt-add-repository ppa:andrewrk/libgroove sudo apt-get update sudo apt-get install libgroove-dev libgrooveplayer-dev libgrooveloudness-dev
mkdir build && cd build && cmake ../- Verify that the configure output is to your liking.
makesudo make install
- Check out the example programs in the example folder.
- Read some header files for the relevant APIs:
- groove/groove.h
- global stuff
- GrooveFile
- GroovePlaylist
- GrooveBuffer
- GrooveSink
- groove/encoder.h
- GrooveEncoder
- grooveplayer/player.h
- GroovePlayer
- grooveloudness/loudness.h
- GrooveLoudnessDetector
- groove/groove.h
- Join #libgroove on irc.freenode.org and ask questions.
Feel free to make a pull request adding yours to this list.
- waveform - generate a waveform visualization in PNG format.
- 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