Enhanced source client for broadcasting to an Icecast/Shoutcast server in MP3 format.
  • C 94.5%
  • CMake 5.1%
  • Dockerfile 0.3%
Find a file
2026-03-16 14:59:52 +01:00
.idea Docker (unfinished) 2026-03-16 14:59:52 +01:00
.junie add firebird sql 2026-03-06 10:42:53 +01:00
.vscode Restructure logging (#1) 2025-11-26 17:43:50 -05:00
conf examples 2026-03-09 12:00:20 +01:00
doc convert to Cmake 2026-03-02 12:43:34 +01:00
examples examples 2026-03-09 14:15:36 +01:00
src icecast container for testing 2026-03-04 15:49:17 +01:00
.gitignore examples 2026-03-09 14:14:39 +01:00
.gitmodules submodule icecast-kh-docker removed 2026-03-16 12:19:38 +01:00
AUTHORS Initial commit v0.4.6 2019-07-31 00:01:47 +02:00
BUGS Initial commit v0.4.6 2019-07-31 00:01:47 +02:00
CMakeLists.txt examples 2026-03-09 12:00:20 +01:00
config.h.cmake.in build instructions 2026-03-02 15:22:31 +01:00
COPYING Initial commit v0.4.6 2019-07-31 00:01:47 +02:00
docker_compose.yaml Docker (unfinished) 2026-03-16 14:59:52 +01:00
Dockerfile Docker (unfinished) 2026-03-16 14:59:52 +01:00
INSTALL build instructions 2026-03-02 15:22:31 +01:00
NEWS docs 2026-03-02 15:43:10 +01:00
README Initial commit v0.4.6 2019-07-31 00:01:47 +02:00
README.md docs 2026-03-02 15:43:10 +01:00
README.playlist Initial commit v0.4.6 2019-07-31 00:01:47 +02:00
TODO Initial commit v0.4.6 2019-07-31 00:01:47 +02:00

ices0

Ices0 is a source client for broadcasting in MP3 format to an Icecast/Shoutcast server.

This is a fork of the Icecast ices0 utility, and has been carefully enhanced to be compatible with CentovaCast, Airtime, AzuraCast, kPlaylist and others, as well as standalone.

New features (over v0.4)

This version 0.4.11 features the following enhancements:

  • Script module for easy shell scripting (i.e., for kPlaylist).
  • Support for MP3 Unicode id3v2 tags (aka the infamous "garbage in song titles" bug). MP3 stream metadata will always be UTF-8-encoded.
    Note: Newer Icecast servers assume ISO-8859-1 for MP3 mounts, so you might need <charset>UTF8</charset> as a mount param in your icecast.xml file!
  • FLAC/OGG/MP4/MP3 transcoding support, including correct metadata from tags.
  • CrossMix option to crossmix tracks at 100% volume (instead of fading) by Daniel Pettersson and Rolf Johansson.
  • MinCrossfade setting to specify a minimum track length for which to enable the crossfader (for jingles etc.).
  • Works with new and old FLAC APIs (now works with libflac 1.3.2/1.3.0 instead of requiring the older 1.1.2 to compile).
  • Support for M3U/M3U8 playlist files (ignore lines starting with #).
    Note: M3U/M3U8 files should be saved WITHOUT a BOM.
  • ReplayGain support throughout:
    • MP3: reads RVA2 and TXXX:replaygain_track_gain frames, case-insensitive.
      Note: TXXX frames "win" over RVA2, this is intended.
    • FLAC: reads REPLAYGAIN_TRACK_GAIN VorbisComment, case-insensitive.
    • Ogg Vorbis: reads REPLAYGAIN_TRACK_GAIN VorbisComment, case-insensitive.
    • MP4: reads ----:com.apple.iTunes;replaygain_track_gain, case-insensitive.
  • Fixed MP4/AAC support to work with libmp4v2.
  • Check for playing regular files (in case a device or directory was accidentally specified).
  • Cue file writing is disabled per default but can be enabled using -Q on the commandline or using <CueFile>1</CueFile> in ices.conf, Execution section. Note: This can wear out discs and especially SD cards real quick, use with care (or in a RAM disc).
  • Allow username different from "source" for stream connections: -U user on the commandline or <Username>user</Username> in ices.conf, Stream/Server section.
  • Can be installed using Homebrew, for instance on a MacOS X system.

What ices0 cannot do (and probably never will)

  • Accept anything other than MP3, Ogg Vorbis, FLAC and MP4/M4A AAC files for input.
  • Stream anything else than MP3 streams to a server. Ogg, FLAC and AAC are transcoded to MP3; this is why enabling Reencode is a good idea. Ices needs liblame for that.
  • Play broken MP3 files correctly (there are more than you would believe). You might try MP3 Diags to repair.
  • Apply ReplayGain if reencoding isnt enabled. (Enabling reencoding is generally a good idea.)
  • Use https for streaming to an Icecast/Shoutcast server. Most stream providers dont offer this anyway, and it doesnt mean the servers web pages cant use https.

That said, ices0 is still a rock-solid tool and often used as an "Auto DJ", even in large systems like Airtime, CentovaCast, AzuraCast and many others. I have seen it running on servers over months without a single glitch.

Dependencies

  • libxml2
  • libogg
  • libvorbis
  • libshout
  • liblame
  • libflac
  • libfaad
  • libmp4v2

On Ubuntu 18.04/Linux Mint 19.1, these can usually be installed with:

sudo apt-get install libxml2-dev libogg-dev libvorbis-dev libshout3-dev
sudo apt-get install libmp3lame-dev libflac-dev
sudo apt-get install libfaad-dev libmp4v2-dev

For the Python and Perl scripting engines, additional libraries are needed:

sudo apt-get install libpython-dev libperl-dev

Building

Building manually

You need git and a working cmake build environment.

git clone https://github.com/franksgg/ices0
cd ices0
mkdir build

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release \
  -DWITH_XML=ON -DWITH_PYTHON=ON -DWITH_PERL=ON -DWITH_LAME=ON \
  -DWITH_VORBIS=ON -DWITH_FAAD=ON -DWITH_FLAC=ON


cmake --build build -j

The result may be installed with:

sudo cmake --install build 
or
su  -c "cmake --install build"