Ices0 (deze ondersteund mp3) moet je zelf bouwen. Gedaan op Pi en OpenSUSE
Bouwen op Raspberry Pi
Download libshout vanaf: https://icecast.org/download/
Download ices-04 vanaf: https://icecast.org/ices/
Install additonle packages:
sudo apt install libvorbis-dev libogg-dev libogg0 libflac-dev # MP4 en FLAC krijg ik nog niet aan de praat :)
Eerst libshout bouwen
cd $HOME/libshout-2.4.6 ./configure make sudo make install
Daarna Ices0
cd $HOME/ices-0.4 ./configure # Let op: je zou nu support moeten hebben voor: # ... # Features: # XML : yes # Python : no # Perl : no # LAME : yes # Vorbis : yes # MP4 : no # FLAC : no # # Wil je FLAC ook hebben dan moet je FLAC 1.1.2 gebruiken .. die is oudddddd...... # # en natuurlijk mp3 :) make sudo make install
Executable staat in /usr/local/bin/ices. Deze ices geeft bij sucesvol opstarten de return code 1 ipv 0. Daarom maak je in /usr/bin een bestand ices0 aan met de volgende inhoud:
#!/bin/bash # fake exit 0 since exit 1 of ices means succes # echo /usr/local/bin/ices $1 $2 $3 $4 $5 $6 $7 $8 $9 /usr/local/bin/ices $1 $2 $3 $4 $5 $6 $7 $8 $9 RC=$? if [ ${RC} -eq 1 ] ; then exit 0 else exit 1 fi
Om ices (voor mp3) te gebruiken gebruik je het commando /usr/bin/ices0
Een voorbeeld configuratie file staat hier: /usr/local/etc/ices.conf.dist
Bouwen op OpenSuse
Zoek op het internet naar ices0.4 deze support mp3, mogelijk een goede plek: http://icecast.org/ices/
Deze compileren, zorg van te voren dat je het volgende via de package manager geïnstalleerd hebt:
-
libshout-devel
-
libxml2 (?)
-
libxml2-develop
-
lame (?)
-
libmp3lame-devel
-
libvorbis-devel
-
flac-devel
-
python-devel (http://download.opensuse.org/repositories/devel:/languages:/python/openSUSE_13.2/)
De volgende gaven bij mij een error, maar een iets begaafdere developer kan daar vast wel omheen komen 🙂
-
libfaad-devel <<<< — error during compile better not install
-
libmp4v2-devel <<<<— error during compile better not install
Ices heeft een vervelende eigenschap. Het geeft return code 1. systemd denkt derhalve dat er wat fout is gegaan. Dit moeten we aanpassen!!!!!!!
Ga op zoek naar “/* Down and down we go… */” in setup.c (ongeveer bij regel 135). Verander de daarop volgende regel “exit (1);” in “exit (0);”. Save setup.c
Compileren:
./configure make all
De executable (ices) staan in ./src en deze copieren naar /tenhoopen/bin
Configureren
Zorg dat je de m3u playlist met mp3 bestanden ergens hebt staan.
Maak vervolgens in /etrc/icecast2/icecast.xml een mountpunt aan:
<mount> <!-- TesttPlaylist mountpoint --> <mount-name>/TestStreamMP3.mp3</mount-name> <password>hackme</password> <!-- <type>application/ogg</type> --> </mount>
Maak vervolgens een configuratie bestand aan voor deze ices instantie
<?xml version="1.0"?> <ices:Configuration xmlns:ices="http://www.icecast.org/projects/ices"> <Playlist> <!-- This is the filename used as a playlist when using the builtin playlist handler. --> <File>/Media/audio/Playlists/arjan/TestStreamMP3.m3u</File> <!-- Set this to 0 if you don't want to randomize your playlist, and to 1 if you do. --> <Randomize>1</Randomize> <!-- One of builtin, perl, or python. --> <Type>builtin</Type> <!-- Module name to pass to the playlist handler if using perl or python. If you use the builtin playlist handler then this is ignored --> <Module>ices</Module> <!-- Set this to the number of seconds to crossfade between tracks. Leave out or set to zero to disable crossfading (the default). <Crossfade>5</Crossfade> --> </Playlist> <Execution> <!-- Set this to 1 if you want ices to launch in the background as a daemon --> <Background>0</Background> <!-- Set this to 1 if you want to see more verbose output from ices --> <Verbose>0</Verbose> <!-- This directory specifies where ices should put the logfile, cue file and pid file (if daemonizing). Don't use /tmp if you have l33t h4x0rz on your server. --> <BaseDirectory>/var/log/ices</BaseDirectory> </Execution> <Stream> <Server> <!-- Hostname or ip of the icecast server you want to connect to --> <Hostname>localhost</Hostname> <!-- Port of the same --> <Port>8000</Port> <!-- Encoder password on the icecast server --> <Password>hackme</Password> <!-- Header protocol to use when communicating with the server. Shoutcast servers need "icy", icecast 1.x needs "xaudiocast", and icecast 2.x needs "http". --> <Protocol>http</Protocol> </Server> <!-- The name of the mountpoint on the icecast server --> <Mountpoint>/TestStreamMP3.mp3</Mountpoint> <!-- The name of the dumpfile on the server for your stream. DO NOT set this unless you know what you're doing. <Dumpfile>ices.dump</Dumpfile> --> <!-- The name of you stream, not the name of the song! --> <Name>MP3 Test stream</Name> <!-- Genre of your stream, be it rock or pop or whatever --> <Genre>Diversen</Genre> <!-- Longer description of your stream --> <Description>Van alles wat mp3 stream</Description> <!-- URL to a page describing your stream --> <URL>http://localhost/</URL> <!-- 0 if you don't want the icecast server to publish your stream on the yp server, 1 if you do --> <Public>0</Public> <!-- Stream bitrate, used to specify bitrate if reencoding, otherwise just used for display on YP and on the server. Try to keep it accurate --> <Bitrate>128</Bitrate> <!-- If this is set to 1, and ices is compiled with liblame support, ices will reencode the stream on the fly to the stream bitrate. --> <Reencode>0</Reencode> <!-- Number of channels to reencode to, 1 for mono or 2 for stereo --> <!-- Sampe rate to reencode to in Hz. Leave out for LAME's best choice <Samplerate>44100</Samplerate> --> <Channels>2</Channels> </Stream> </ices:Configuration>
Maak een service file aan in /etc/systemd/system zodat de ices instantie automatisch opgestart kan worden:
# # Copyright (c) 2013 Pascal Bleser <pascal.bleser@opensuse.org> # Authors: # * Pascal Bleser # * http://pyn00b.blogspot.be/2012/11/life-with-systemd-part-2.html # * Werner Fink for the postfix.service file # * Arjan ten Hoopen for modifications for ices # # Description: # # Sart the Ices source for IceCast. # [Unit] Description=Ices source for Playsist TestStreamMP3 Requires=icecast2.service After=icecast2.service [Service] ExecStart=/usr/bin/ices0 /etc/ices2/TestStreamMP3.xml Type=forking User=icecast2 [Install] WantedBy=multi-user.target
Sla deze file op als /usr/lib/systemd/system/ices-betonuur.service
De logfiles komen in de directory /var/log/ices/betonuur, zorg dat deze bestaat!
Doe een deamon reload van systemd zodat systemd ook kennis heeft van deze nieuwe service file van ices-betonuur:
systemctl deamon-reload
Om te zorgen dat ices-betonuur altijd start bij het booten van het systeem:
systemctl enable ices-betonuur
Nu even met de hand starten:
systemctl start ices-betonuur
Controleer of alles geactiveerd is:
systemctl status ices-betonuur
Via de browser naar de IceCast server http://10.0.0.150:8000
De stream is nu te vinden via http://10.0.0.150:800/betonuur