GithubHelp home page GithubHelp logo

experimentalhypothesis / ices0 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from moonbase59/ices0

0.0 1.0 0.0 836 KB

Enhanced source client for broadcasting to an Icecast/Shoutcast server in MP3 format.

License: GNU General Public License v2.0

Makefile 0.71% Shell 0.08% M4 6.75% C 89.67% C++ 2.79%

ices0's Introduction

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 isn’t enabled. (Enabling reencoding is generally a good idea.)
  • Use https for streaming to an Icecast/Shoutcast server. Most stream providers don’t offer this anyway, and it doesn’t mean the server’s web pages can’t 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 with Homebrew (MacOS X)

Open a terminal and simply enter:

brew install Moonbase59/tap/ices0

If you don’t have current versions of Python2 and/or Perl on your system and wish to use ices0’s scripting features, you can pull the latest versions in using a command like:

brew install --with-python2 --with-perl Moonbase59/tap/ices0

Building manually

You need git and a working automake build environment.

git clone https://github.com/Moonbase59/ices0.git
cd ices0
aclocal
autoreconf -fi
automake --add-missing
./configure

Check configure's ouput. Ideally, it should end like this:

Features:
  XML     : yes
  Python  : yes
  Perl    : yes
  LAME    : yes
  Vorbis  : yes
  MP4     : yes
  FLAC    : yes

(This is a full build with all features.)

make
sudo make install

You can also create a distribution .tar.gz file:

make dist

Before making a pull request, please clean up using

make maintainer-clean

so you won't be pushing unneccessary temp files to GitHub.

ices0's People

Contributors

moonbase59 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.