# Icecast Streaming Howto for Gentoo

## darfsnuzal

Icecast Streaming Howto for Gentoo

1. Introduction

I really didn't understand how icecast worked when I first decided that I wanted a streaming audio server.  After pulling a bunch of information of off the net I learned that there are about 3,000 different ways to stream audio and half of the howto's telling you what to do are either out of date or just plain wrong.  I finally figured out how to get a server set up and decided to document the steps I took.  This howto should provide you with the steps required to set up icecast (the streaming server that clients connect to) and ices (the application that streams audio to icecast).  Please feel free to provide comments and corrections and I'll update this document accordingly.

Your streaming audio server will stream audio to both a local LAN or the Internet. With this fact in mind, this howto will  attempt to guide the user to the most secure installation of icecast and ices reasonably possible. If you decide to undo the security built into this howto and run icecast or ices as root, please consider the consequences should someone compromise your icecast server.

Important: This howto was written for icecast-2 and ices-2.  Previous versions of icecast and ices streamed audio using the  MP3 format. As of version 2 ices now only supports the OGG format while icecast-2 still retains the ability to stream MP3. This may impact which clients can listen to your stream.  If you require a MP3 stream you might want to look at Muse. I have included instructions for connecting Muse to icecast at the end of this howto.  For a nifty MP3 to OGG converter, check out Oggasm.

2. Installing icecast and ices

USE Flags

Icecast can use the curl USE flag but this howto will not use it.

Installation

Both icecast and ices are currently in the Portage tree and should be straight forward to set up.

Code Listing 2.1: Emerging necessary packages

```
# emerge -v icecast ices
```

Configuring icecast

Because icecast listens for client connections over a network we want to be very careful.  If we run icecast as root and someone finds a flaw in it that allows an attacker to gain shell access, they will have a root shell to the system.  To help avoid this situation we will run both icecast and ices as an unprivileged user: icecast.  If someone compromises icecast and  gains a shell to the system they will not automatically gain superuser access.

Code Listing 2.2: Creating the icecast user

```
# groupadd icecast

# useradd icecast -m -g icecast -G users,wheel,audio -s /bin/bash

# passwd icecast

```

Now we will change to the icecast user and complete the configuration of icecast.

Code Listing 2.3: Configuring icecast

```
# su - icecast

$ mkdir log

$ cp /etc/icecast2/icecast.xml .

```

Edit the icecast.xml file and change the following options:

Code Listing 2.4: Changes to icecast.xml

```
<source-password>$passwd</source-password>

<relay-password>$passwd</relay-password>

<admin-password>$passwd</admin-password>

<hostname>$hostname</hostname>

<logdir>/home/icecast/log</logdir>

        <!--                            # Remove

        <changeowner>

            <user>icecast</user>        # Change to icecast

            <group>icecast</group>      # Change to icecast

        </changeowner>

        -->                             # Remove

```

Replace $passwd with the password you want to secure icecast with.  $hostname should match the name of your machine.  Exit the shell and start icecast to verify that the configuration is valid:

Code Listing 2.5: Starting icecast

```
$ exit

# icecast -b -c /home/icecast/icecast.xml

```

Check the file /home/icecast/log/error.log.  You should see something similar to this:

Code Listing 2.6: Verifying icecast startup

```
[2004-07-19  01:06:32] INFO main/main icecast server started

```

Configuring ices

At this point, we've got icecast up and running.  Icecast is now ready to receive the music stream from ices.  Let's  configure ices:

Code Listing 2.7: Configuring ices

```
# su - icecast

$ cp /etc/ices2/ices-playlist.xml.dist ./ices-playlist.xml

```

Edit the ices-playlist.xml and change the following settings:

Code Listing 2.8: Changes to ices-playlist.xml

```
<background>1</background>

<logpath>/home/icecast/log</logpath>

<hostname>$hostname</hostname>

<password>$passwd</password>

<param name="file">/home/icecast/playlist.txt</param>

<mount>/$stream_name.ogg</mount>                            # Must include .ogg

```

Note: Your stream name needs to end with ".ogg" or most media players will not recognize your icecast stream as an OGG  stream.

Starting ices

Now that we have ices and icecast configured you will need to create a playlist for ices to stream to icecast.  In this howto  we've chosen /home/icecast/playlist.txt file to hold our playlist.  The playlist is a text file with one absolute path per OGG file per line.  We can create a playlist from an existing directory of OGG files:

Code Listing 2.9: Quick creation of a playlist

```
$ find $ogg_dir -name *.ogg -print > playlist.txt

```

Ices will stream each song in the order it is listed in the playlist unless you set the <random> parameter to "1" in the ices-playlist.xml.  If the <restart-after-reread> parameter is set to "1", ices will restart the playlist at the first file  listed if the playlist is updated while ices is running.

Now let's start ices as the icecast user:

Code Listing 2.10: Starting ices

```
$ ices ./ices-playlist.xml
```

If no error messages are displayed, you should be able to verify the ices to icecast connection by using your browser to view http://$hostname:8000/admin/stats.xsl. You should see the mount point /$stream_name.ogg in the list of mount points.  If your stream appears you should be able to connect to the stream by using the URL http://$hostname:8000/$stream_name.ogg.m3u.

If you hear your stream, congratulations!  You now have a streaming audio server.  After you're done strutting your stuff to your new music stream, close down ices and icecast and proceed to the next section where we will create startup and shutdown scripts for ices and icecast.

Code Listing 2.11: Hard shutdown of ices and icecast

```
$ exit

# killall ices

# killall icecast
```

3. Icecast and ices startup/shutdown

When you emerge ices and icecast Portage does not create startup or shutdown scripts for you.  You can use the following scripts to start and stop ices and icecast:

Code Listing 3.1: /etc/init.d/ices

```
#!/sbin/runscript

# Copyright 1999-2004 Gentoo Technologies, Inc.

# Distributed under the terms of the GNU General Public License v2

depend() {

        need icecast net

        use dns

}

start() {

        ebegin "Starting ices"

        start-stop-daemon --start --chuid icecast --quiet --exec /usr/bin/ices \

                -- /home/icecast/ices-playlist.xml >/dev/null 2>&1

        eend $?

}

stop () {

        ebegin "Stopping ices"

        start-stop-daemon --stop --retry 5 --quiet --exec /usr/bin/ices

        eend $?

}

```

Code Listing 3.2: /etc/init.d/icecast

```
#!/sbin/runscript

# Copyright 1999-2004 Gentoo Technologies, Inc.

# Distributed under the terms of the GNU General Public License v2

depend() {

        need net

        use dns

}

start() {

        ebegin "Starting icecast"

        start-stop-daemon --start --quiet --exec /usr/bin/icecast \

                --background -- -b -c /home/icecast/icecast.xml >/dev/null 2>&1

        eend $?

}

stop () {

        ebegin "Stopping icecast"

        start-stop-daemon --stop --retry 5 --quiet --exec /usr/bin/icecast

        eend $?

}

```

If you want ices and icecast to start on system boot, use rc-update:

Code Listing 3.3: Starting icecast and ices at boot

```
# rc-update add ices default

```

Note: the ices startup script will automatically start icecast if it is not already started.

4. Installing and configuring muse

So the OGG format just won't work for you?  Well there is a way to stream MP3 formatted streams using muse and this section will demonstrate how to hook up muse to icecast.  I strongly recommend that you follow the previous sections and get icecast and ices working even if you do not want to stream music using the OGG format.

Note: Muse is limited in its abilities to play user created playlists.  As far as I can tell there is no way to randomize a playlist at the time it is being streamed.  This means that muse will play songs in the order they are listed in your playlist.  Also, muse does not send information regarding the current song to icecast.

Important: Muse is a gruff little bear to deal with.  It doesn't like being detached from a TTY and has no built-in ability to migrate itself to the background.  It also does not have an option to write its logs to a file; it wants to write to standard error.  This means that while this howto is designed with logging in mind, it just doesn't work so you will not get logs from muse when started with this howto's startup script.  Feedback and suggestions are welcome.

USE Flags

Muse can use the following USE flags: debug gtk ncurses.  This howto does not use any of these flags.

Installation

Muse is in Portage and installation should be straight forward to install:

Code Listing 4.1: Installing muse

```
# emerge -v muse

```

Now that we've installed muse, we need to create a playlist for it like we do for ices.  Muse is picky, however, about the extension of the playlist file so we will use '.pls' as an extension.  The file format consists of one path to an MP3 file per line.  Let's create a playlist for muse:

Code Listing 4.2: Quick creation of a playlist for muse

```
# su - icecast

$ find $mp3_dir -name *.mp3 -print > playlist.pls

```

Portage will not create startup and shutdown scripts for muse because muse was built to run from console.  We can create effective startup and shutdown scripts for muse:

Code Listing 4.3: /etc/init.d/muse

```
#!/sbin/runscript

# Copyright 1999-2004 Gentoo Technologies, Inc.

# Distributed under the terms of the GNU General Public License v2

depend() {

        need icecast net

        use dns

}

start() {

        ebegin "Starting muse"

        if [ -n "${MUSE_LOG}" -a ! -f "${MUSE_LOG}" ]; then

                touch "${MUSE_LOG}"

                chown icecast:icecast "${MUSE_LOG}"

        fi

        MUSE_OPTS="-C $MUSE_PLAYLIST -o -e mp3 -b ${MUSE_BITRATE} -q ${MUSE_QUALITY} -r ${MUSE_RATE} -c 2 -s ${MUSE_ICECAST_SERVER} -m ${MUSE_MOUNT} -p ${MUSE_ICECAST_PASSWD} -g cli"

        start-stop-daemon --start --background --chuid icecast --quiet --exec /usr/bin/muse \

                -- ${MUSE_OPTS} >"${MUSE_LOG}" 2>&1

        eend $?

}

stop () {

        ebegin "Stopping muse"

        start-stop-daemon --stop --retry 5 --quiet --exec /usr/bin/muse

        eend $?

}

```

We also need to create a file to contain muse's command line parameters:

Code Listing 4.4: /etc/conf.d/muse

```
# Config file for muse

MUSE_BITRATE="128"

MUSE_QUALITY="9"

MUSE_RATE="44100"

MUSE_MOUNT="$stream_name.mp3"

MUSE_ICECAST_SERVER="localhost:8000"

MUSE_ICECAST_PASSWD="$passwd"

MUSE_PLAYLIST="/home/icecast/playlist.pls"

MUSE_LOG="/home/icecast/log/muse.log"

```

Replace $stream_name and $passwd with your MP3 stream's name and your icecast password.

If you want muse and icecast to start on system boot, use rc-update:

Code Listing 4.5: Starting icecast and ices at boot

```
# rc-update add muse default

```

Note: The muse startup script will automatically start icecast if it is not already started.

You should be able to verify the muse to icecast connection by using your browser to view http://$hostname:8000/admin/stats.xsl. You should see the mount point /$stream_name.mp3 in the list of mount points. If your stream appears you should be able to connect to the stream by using the URL http://$hostname:8000/$stream_name.mp3.m3u.

----------

## Doxer

There is an error in your start-scripts.

It must be

```
eend ${?}
```

 and not 

```
eend $?
```

----------

## darfsnuzal

Doxer,

Thanks for the feedback.  I was able to find only one other startup script (gpm)  that used eend ${?} instead of eend $?.  All of the other statup scripts I've examined used eend $?.  Your thoughts?

Darf

----------

## Doxer

Sorry,

I take an existing scripts in my /etc/init.d as an example. There are brackest in the script. But, a look in an other script, there are no brackets  :Wink: 

----------

## darfsnuzal

Cool!  Thanks for double checking for me.

----------

## atom

Please post this howto on the wiki, as it will be easier to find and edit!

http://gentoo-wiki.com/HOWTO_Index

----------

## georgebills

Dest damn icecast howto I could find.  (after spending a few hours following all the others.)  The howto I was following told me to fill up my playlist with mp3s, and you (correctly) tell me that ices / icecast needs oggs.  Thanks, this was awesome of you.   :Very Happy: 

----------

## igrat

hi there,

had problems using your ices runscript:

i assume marked "--" is wrong...or did you mean to use another parm. ?

 *darfsnuzal wrote:*   

> 
> 
> Code Listing 3.1: /etc/init.d/ices
> 
> ...
> ...

 

good howto btw  :Smile: 

greetings...

----------

## atom

 *igrat wrote:*   

> hi there,
> 
> had problems using your ices runscript:
> 
> i assume marked "--" is wrong...or did you mean to use another parm. ?
> ...

 

the -- passes any following paramaters to the application being controlled by the start-stop-daemon, or to ices in this case.

----------

## igrat

 :Embarassed:   next time i read the man   :Wink: 

though i find my ices to die occasionally with exit status 0. (not backgrounded) Thats why i got confused.

i'll investigate....

----------

## darfsnuzal

 *atom wrote:*   

> Please post this howto on the wiki, as it will be easier to find and edit!
> 
> http://gentoo-wiki.com/HOWTO_Index

 

Good idea!  I'll do that.  This was my first howto so I wasn't sure what to do.

----------

## darfsnuzal

 *igrat wrote:*   

>   next time i read the man  
> 
> though i find my ices to die occasionally with exit status 0. (not backgrounded) Thats why i got confused.
> 
> i'll investigate....

 

igrat - if you are still having trouble, post your ices log and I'll see if I can help you sort out your problem.

----------

## darfsnuzal

 *georgebills wrote:*   

> Dest damn icecast howto I could find.  (after spending a few hours following all the others.)  The howto I was following told me to fill up my playlist with mp3s, and you (correctly) tell me that ices / icecast needs oggs.  Thanks, this was awesome of you.  

 

You are very much welcome! I wrote this because of the same problem you ran into -- most of the howto's on the net are so out of date that they really no longer work.  That's one of the downsides of the net...

----------

## Niggurath

im using muse and icecast , i get an error "shout_open: couldnt connect" and i think i m doing things as they should be but i just cant find what it is that error or what i'm doing wrong   :Embarassed: 

----------

## darfsnuzal

Niggurath -

Did you get icecast working with ices before you tried muse?  Start up icecast and the run muse from the command line.  You can figure out which command line options you need by looking at /etc/init.d/muse.  Does muse give any more errors when you start it like this? Are there any errors in /home/icecast/log/error.log?

An example muse command line would look like:

```
muse -C /home/icecast/playlist.pls -o -e mp3 -b 128 -q 9 -r 44100 -c 2 -s localhost:8000 -m mymusic.mp3 -p $yourpass -g cli
```

Let us know.[/code]

----------

## xlulux

if your gonna do an icecast2 to an ices .3 to play mp3's you have to add the -t http (tell it what protocol to use ) or else it wont work, i fought with it for two days to make this work

nice tutorial

----------

## igrat

 *darfsnuzal wrote:*   

> igrat - if you are still having trouble, post your ices log and I'll see if I can help you sort out your problem.

 

well...solved it...i had no r/w permission for the group icecast on the playlist.txt file...adding those worked fine

thanx anyways

igrat

----------

## gondoi

You know I was in the process of changing my startup script to use a conf.d file when it doned on me that the dependancy of ices to need icecast is not necessarily true...

What if a person is running icecast on another machine, but is running ices on a different one... Say maybe to use a smaller machine as the server and a workhorse to re-encode multiple streams. 

Anyway, is there a way for startup scripts to check for other startup scripts.. say: if icecast is there then make sure it's started.... or whatever.

----------

## gondoi

I've got another question, Is there a way to make a startup script play nicely with a job that ends normally.  Like say I set Ices to play through once and not loop.  When it ends, I try to start it again with /etc/init.d/ices start, but it errors and tells me it's already running... but then if I do a /etc/init.d/ices stop, it tells me it's not.... or just gives me the [!!]  same with the restart

anyone have an idea?

----------

## kedalel

hello

first thanks for this howto

but i still have a problem...

The songs playing with muse are playing too fast!!

with ices everything is ok

no error in the log file...  :Crying or Very sad: 

----------

## gondoi

 *Quote:*   

> The songs playing with muse are playing too fast!! 

 

Hmmm... it sounds like a samplerate problem... is there a way to set it in muse?  I think the value should be 44100

----------

## kedalel

/etc/conf.d/muse

```
MUSE_BITRATE="128"

MUSE_QUALITY="9"

MUSE_RATE="44100"

MUSE_MOUNT="stream.mp3"

MUSE_ICECAST_SERVER="localhost:8000"

MUSE_ICECAST_PASSWD="**"

MUSE_PLAYLIST="/home/icecast/playlist.pls"

MUSE_LOG="/home/icecast/log/muse.log"
```

----------

## igrat

 *gondoi wrote:*   

> I've got another question, Is there a way to make a startup script play nicely with a job that ends normally.  Like say I set Ices to play through once and not loop.  When it ends, I try to start it again with /etc/init.d/ices start, but it errors and tells me it's already running... but then if I do a /etc/init.d/ices stop, it tells me it's not.... or just gives me the [!!]  same with the restart
> 
> anyone have an idea?

 

well i guess in this case it ain't a daemon anymore  :Wink: 

but you could still do a

```
 /etc/init.d/ices zap 
```

 to reset the ices start-stop daemon before starting again...

greetings...

----------

## hegga

 *kedalel wrote:*   

> hello
> 
> The songs playing with muse are playing too fast!!
> 
> 

 

I have this problem too, with the correct config file.

Does anyone have an solutions for this?

----------

## kedalel

same thing happening again and again...  :Sad: 

----------

## hegga

any guru's with any tips?

----------

## RinkyDinks_RJ

Apperantly the playlist must contain the full path to the songs. When I cd'd into /mnt/disc/music and ran find ./ -name *.ogg -print > /mnt/disc/icecast/playlist.txt the song paths outputted as ./Doors/Doors\ -\ Light\ My\ Fire.ogg.

Ices will return this error when attempting to play such a song. (from log file).

```
[2004-10-28  11:58:44] WARN playlist-builtin/playlist_read Error opening file "./Beatles/Beatles - Here Comes the Sun.ogg": No such fileor directory

[2004-10-28  11:58:44] WARN playlist-builtin/playlist_read Error opening file "./Lovin' Spoonful/Lovin' Spoonful - Gimme Gimme Good Lovin'.ogg": No such file or directory
```

After so many errors ices also automatically exits:

```
[2004-10-28  11:58:44] WARN playlist-builtin/playlist_read Too many consecutive errors - exiting
```

On mine it was 6. It also takes only a fraction of a second to go through all these files so doing a ps -A | grep ice will fail to return ices, making the average user think it never started in the first place.

Also, you should change the default log level as the logs fill up very fast if left on debug.

----------

## zero17

I am having a problem getting this to work.  I have a couple questions on the configuration files.  When you say $hostname do you mean the IP address or the name of the computer on the network?  Is there another place that I need to enter my IP address somewhere in the configuration file?  

Also will it matter which port i run it on?

The computer I am trying to get this to run on is in a college dorm, so im not sure which ports are blocked however I am able to establish a SSH connection to the computer from outside the building.

```
<background>1</background>

<logpath>/home/icecast/log</logpath>

<hostname>$hostname</hostname>

<password>$passwd</password>

<param name="file">/home/icecast/playlist.txt</param>

<mount>/$stream_name.ogg</mount>                            # Must include .ogg 
```

For the above code in the configuration of ices, for the mount line at the bottom is /$stream_name.ogg the directory where I put my .ogg files or is  it an accual song in .ogg format.

----------

## zero17

need some help.. after I start the ices, it wont' start and then I checked the log for ices and this is what I got

```
[2004-11-11  21:12:31] INFO ices-core/main IceS 2.0.0 started...

[2004-11-11  21:12:31] INFO signals/signal_usr1_handler Metadata update requested

[2004-11-11  21:12:31] INFO playlist-basic/playlist_basic_get_next_filename Loading playlist from file "/home/icecast/playlist.txt"

[2004-11-11  21:12:31] INFO playlist-builtin/playlist_read Currently playing "./example1.ogg"

[2004-11-11  21:12:31] EROR playlist-builtin/playlist_read Read error from "./example1.ogg": Is a directory

[2004-11-11  21:12:31] EROR playlist-builtin/playlist_read Cannot play same file twice in a row, skipping

[2004-11-11  21:12:31] EROR playlist-builtin/playlist_read Cannot play same file twice in a row, skipping

[2004-11-11  21:12:31] INFO stream/ices_instance_stream Connected to server: zero17:8000/example1.ogg

[2004-11-11  21:12:31] EROR playlist-builtin/playlist_read Cannot play same file twice in a row, skipping

[2004-11-11  21:12:31] EROR playlist-builtin/playlist_read Cannot play same file twice in a row, skipping

[2004-11-11  21:12:31] EROR playlist-builtin/playlist_read Cannot play same file twice in a row, skipping

[2004-11-11  21:12:31] WARN playlist-builtin/playlist_read Too many consecutive errors - exiting

[2004-11-11  21:12:31] DBUG stream-shared/stream_wait_for_data Shutdown signalled: thread shutting down

[2004-11-11  21:12:31] DBUG reencode/reencode_clear Clearing reencoder

[2004-11-11  21:12:32] DBUG input/input_loop An instance died, removing it

[2004-11-11  21:12:32] DBUG input/input_flush_queue Input queue flush requested

[2004-11-11  21:12:32] INFO input/input_loop All instances removed, shutting down...

[2004-11-11  21:12:32] INFO ices-core/main Shutdown complete
```

I think there is something wrong with the mounting directory, and just an addition info I just have 1 song on /example1.ogg directory. Anybody help.. please...

----------

## TheCat

how to create random playlist or play mp3's randomly?

----------

## battersea

someone any luck using the alsa or oss input module instead of using an ogg playlist? I can't get it working properly... I get a very very quiet sound... whatever I do in alsamixer...

----------

## GoofballJM1

Okay I am reopening this forum hoping to get some answers as to why the playback on icecast when using MUSE is so fast?  My sample rate is correct, and I am running LAME 3.96.  Everything works except for that.  Any and all suggestions will be greatly appreciated.

Here's my MUSE output:

```
muse -C /home/icecast/playlist.pls -o -e mp3 -b 128 -q 9.0  -c 2 -s hostname -m music.mp3 -p *******

[*] MuSE version 0.9-cvs http://muse.dyne.org

 .  by Denis "jaromil" Rojo http://rastasoft.org

 .  --

[!] error opening output sound device: Host error.

[!] Permission denied

 .  CLI: queue /home/icecast/playlist.pls on channel 0

[*] CLI: created channel 0

[*] Lame MP3 encoder version 3.96.1 initialized

[*] CLI: created Mp3 encoder

 .  CLI: bitrate set to 128Kbit/s

 .  CLI: quality set to 128Kbit/s 44100Hz

 .  CLI: encoding 2 channel(s)

[*] CLI: created streamer to radio 8000

 .  CLI: stream mountpoint music.mp3

 .  CLI: stream password set

[*] using commandline interface (non interactive)

[*] Lame MP3 encoder quality 128Kbps/s 44100Hz  stereo

[*] Contacting icecast2 server radio on port 8000

[*] started streaming on http://radio:8000/music.mp3

[W] Channel::play() : no song loaded

[*] loaded /home/jon-michael/mp3/BT/Ima [9 46356-2] (CD2)/BT - Sasha's Voyage Of Ima.mp3

[*] Mp3 file 44100Hz stereo 128Kb/s
```

Any ideas?

----------

## HOHCEHC

ok i modified script little bit

```
#!/sbin/runscript

# Copyright 1999-2005 Gentoo Technologies, Inc.

# Distributed under the terms of the GNU General Public License v2

USERID=icecast

GROUPID=icecast

DAEMON=/usr/bin/icecast

CONFIGFILE="/home/icecast/icecast.xml"

depend() {

        need net

        use dns

}

start() {

        ebegin "Starting icecast"

        start-stop-daemon --start --quiet --chuid $USERID:$GROUPID \

                --exec $DAEMON -- -b -c $CONFIGFILE

        eend $?

}

stop () {

        ebegin "Stopping icecast"

        start-stop-daemon --stop --oknodo --quiet --exec $DAEMON

      eend $?

}

```

```

#!/sbin/runscript

# Copyright 1999-2005 Gentoo Technologies, Inc.

# Distributed under the terms of the GNU General Public License v2

DAEMON=/usr/bin/ices

USERID=icecast

GROUPID=icecast

CONFIGFILE="/home/icecast/ices-playlist.xml"

#ENABLE="false"

depend() {

        need  net icecast

        use dns

}

start() {

        ebegin "Starting ices"

        start-stop-daemon --start --quiet --chuid $USERID \

                --exec $DAEMON -- $CONFIGFILE

        eend $?

}

stop () {

        ebegin "Stopping ices"

       start-stop-daemon --stop --oknodo --quiet --exec $DAEMON

        eend $?

}

```

-----

Den

----------

## Parasietje

Does anybody know how to get a broadcast stream working?

I used the <input> directive in ices, but ices only captures my wave output when I use OSS. It doesn't capture my line-in. I use ALSA. Trying the Alsa input module gives me an error: Cannot set 2 periods: illegal command. I have selected my Line-IN as capture device in alsamixer.

----------

## slaterson

great howto, i've used it a number of times now (to setup an ogg stream controlled by mpd).

one question.  i would like to have two streams, say one on port 7000 and another on 7001.  the sources for each stream are different.  can i do this with one instance of icecast via a single icecast.xml file or do i need to run two instances of icecast?

thanks!

slate

----------

## zecora

Can this work on windows boxes?

edit: Like if i setup the server on my linux box, can i stream audio to a windows box?

Also what apps pick up this?

zec

----------

## mog

... oh well ... first of all thanks for the tut ... great work.

now a question ... is there anything else apart from muse that will let you create MP3 streams to icecast2? I am asking because muse sucks a$$, especially if your files are not homogenous (e.g. different bitrates). Shout seems nice, but it does not seem to work with icecast2 anymore because of changes in the authentication mode.

... any help is appreciated  :Smile: 

----------

## Bigun

*bookmarked*

----------

## Maheriano

I have problems as well. I get to 

```
If no error messages are displayed, you should be able to verify the ices to icecast connection by using your browser to view http://$hostname:8000/admin/stats.xsl. You should see the mount point /$stream_name.ogg in the list of mount points. If your stream appears you should be able to connect to the stream by using the URL http://$hostname:8000/$stream_name.ogg.m3u. 
```

and it doesn't work. I try the first address (substituting $hostname for tux) and it goes to some page explaining how the Linux penguins are drawn. I try to go to the second link, and I don't know what the stream name is called.....it's not anywhere else in the how to. How do I find out what my stream name is called?

I also wanted to know how I create a file with a .ogg extension.....I don't have any on my computer. That could be a problem too.

----------

## Maheriano

Does this work with ALSA? Maybe that's my problem.

----------

## Bigun

 *Maheriano wrote:*   

> I have problems as well. I get to 
> 
> ```
> If no error messages are displayed, you should be able to verify the ices to icecast connection by using your browser to view http://$hostname:8000/admin/stats.xsl. You should see the mount point /$stream_name.ogg in the list of mount points. If your stream appears you should be able to connect to the stream by using the URL http://$hostname:8000/$stream_name.ogg.m3u. 
> ```
> ...

 

Replace the $hostname with the IP address of the computer.  Try that.

----------

## Maheriano

Damn, I'm on a dynamic IP. How do I find out what it is?

----------

## yngwin

 *Maheriano wrote:*   

> Damn, I'm on a dynamic IP. How do I find out what it is?

 

Better: use dyndns with ez-ipupdate.

----------

## yngwin

 *Maheriano wrote:*   

> I also wanted to know how I create a file with a .ogg extension.....I don't have any on my computer. 

 

With oggenc (part of vorbis-tools). You can also use Konqueror or grip to rip CDs to ogg, and you can download oggs from the 'net,  I recommend http://www.archive.org/audio/collection.php?collection=opensource_audio (not all, but a good number of projects provide ogg files, and they all have a free license).

----------

## xtlosx

hey guys, I got icecast up and running, and I am using mpd to stream my music...

I am getting this in my error log file...

 *Quote:*   

> 
> 
> [2008-05-17  23:48:19] DBUG slave/_slave_thread checking master stream list
> 
> [2008-05-17  23:49:29] INFO fserve/fserve_client_create checking for file /loveline.ogg (/usr/share/icecast/web/loveline.ogg)
> ...

 

i have setup icecast as such,

 *Quote:*   

> 
> 
> #
> 
> # An example of an OSS output:
> ...

 

I used the create-db option with mpd, and it indexed all of my mp3s, which it successfully did.... My question is... I don't get what creates that .ogg file in /usr/share/web... For some reason, something isn't clicking here,and I don't get it..

Any ideas?  thanks!

----------

## anxt

Just a little info as I sometimes play with icecast and such.

karl heyes has a branch of icecast which has a lot of new features.  there is also a source client that uses jack.

(ices2 with jack support)

http://www.icecast.pwp.blueyonder.co.uk/

although there isn't an ebuild, it will install under /usr/local like any sane app should.

Karl Heyes is a very friendly and patient man on the icecast forums, just thought i would throw that out there ...

----------

## xtlosx

oh no worries, I got it figured out..  randomized and all!

Thanks again  :Smile: 

----------

## novazur

I was using ices 0.4 to stream mp3s to my icecast server for a long time. I used my own ebuild just copying 2.x version :

```
# Copyright 1999-2005 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

# $Header: /var/cvsroot/gentoo-x86/net-misc/ices/ices0-0.4.ebuild,v 1.11 2005/02/26 21:54:36 jnc Exp $

IUSE=""

DESCRIPTION="icecast OGG streaming client. supports on the fly re-encoding"

SRC_URI="http://downloads.xiph.org/releases/ices/${P}.tar.gz"

HOMEPAGE="http://www.icecast.org/ices.php"

SLOT="0"

LICENSE="GPL-2"

KEYWORDS="x86 sparc amd64 ppc64"

DEPEND="dev-libs/libxml2

        dev-util/pkgconfig

        >=media-libs/libshout-2.0"

src_compile ()

{

        econf --prefix=/usr/local || die "configure failed"

        emake || die "make failed"

}

src_install ()

{

        into /usr/local

        make DESTDIR=${D} install || die "make install failed"

}
```

But, since big upgrade, it can't start anymore

```
/usr/local/bin/ices: error while loading shared libraries: libfaad.so.0: cannot open shared object file: No such file or direct
```

And I can't compile it anymore :

```
stream.c: In function 'stream_send':

stream.c:258: warning: pointer targets in passing argument 5 of 'ices_reencode' differ in signedness

stream.c:271: warning: pointer targets in passing argument 2 of 'stream_send_data' differ in signedness

stream.c:305: warning: pointer targets in passing argument 2 of 'ices_reencode_flush' differ in signedness

stream.c:307: warning: pointer targets in passing argument 2 of 'stream_send_data' differ in signedness

if i686-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I. -I..  -DICES_ETCDIR=\"/etc\" -DICES_MODULEDIR=\"/etc/modules\" -I/usr/include/libxml2 -I/usr/include/python2.5  -fno-strict-aliasing -pipe -Wdeclaration-after-statement -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -I/usr/lib/perl5/5.8.8/i686-linux/CORE   -O2 -march=pentium4 -pipe -fomit-frame-pointer -Wall -I/usr/include -pthread -MT util.o -MD -MP -MF ".deps/util.Tpo" -c -o util.o util.c; \

        then mv -f ".deps/util.Tpo" ".deps/util.Po"; else rm -f ".deps/util.Tpo"; exit 1; fi

if i686-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I. -I..  -DICES_ETCDIR=\"/etc\" -DICES_MODULEDIR=\"/etc/modules\" -I/usr/include/libxml2 -I/usr/include/python2.5  -fno-strict-aliasing -pipe -Wdeclaration-after-statement -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -I/usr/lib/perl5/5.8.8/i686-linux/CORE   -O2 -march=pentium4 -pipe -fomit-frame-pointer -Wall -I/usr/include -pthread -MT mp3.o -MD -MP -MF ".deps/mp3.Tpo" -c -o mp3.o mp3.c; \

        then mv -f ".deps/mp3.Tpo" ".deps/mp3.Po"; else rm -f ".deps/mp3.Tpo"; exit 1; fi

mp3.c: In function 'ices_mp3_parse':

mp3.c:110: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

mp3.c:110: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

mp3.c:110: warning: pointer targets in passing argument 2 of '__builtin_strcmp' differ in signedness

mp3.c:110: warning: pointer targets in passing argument 2 of '__builtin_strcmp' differ in signedness

mp3.c:110: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

mp3.c:110: warning: pointer targets in passing argument 2 of '__builtin_strcmp' differ in signedness

mp3.c:110: warning: pointer targets in passing argument 2 of '__builtin_strcmp' differ in signedness

mp3.c:110: warning: pointer targets in passing argument 2 of 'strncmp' differ in signedness

mp3.c:114: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

mp3.c:114: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

mp3.c:114: warning: pointer targets in passing argument 2 of '__builtin_strcmp' differ in signedness

mp3.c:114: warning: pointer targets in passing argument 2 of '__builtin_strcmp' differ in signedness

mp3.c:114: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

mp3.c:114: warning: pointer targets in passing argument 2 of '__builtin_strcmp' differ in signedness

mp3.c:114: warning: pointer targets in passing argument 2 of '__builtin_strcmp' differ in signedness

mp3.c:114: warning: pointer targets in passing argument 2 of 'strncmp' differ in signedness

mp3.c:131: warning: pointer targets in initialization differ in signedness

mp3.c:137: warning: pointer targets in assignment differ in signedness

mp3.c: In function 'mp3_trim_file':

mp3.c:348: warning: pointer targets in passing argument 1 of 'mp3_parse_frame' differ in signedness

mp3.c: In function 'mp3_fill_buffer':

mp3.c:401: warning: pointer targets in assignment differ in signedness

mp3.c: In function 'mp3_check_vbr':

mp3.c:491: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

mp3.c:491: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

mp3.c:491: warning: pointer targets in passing argument 2 of '__builtin_strcmp' differ in signedness

mp3.c:491: warning: pointer targets in passing argument 2 of '__builtin_strcmp' differ in signedness

mp3.c:491: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

mp3.c:491: warning: pointer targets in passing argument 2 of '__builtin_strcmp' differ in signedness

mp3.c:491: warning: pointer targets in passing argument 2 of '__builtin_strcmp' differ in signedness

mp3.c:491: warning: pointer targets in passing argument 2 of 'strncmp' differ in signedness

mp3.c:492: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

mp3.c:492: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

mp3.c:492: warning: pointer targets in passing argument 2 of '__builtin_strcmp' differ in signedness

mp3.c:492: warning: pointer targets in passing argument 2 of '__builtin_strcmp' differ in signedness

mp3.c:492: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

mp3.c:492: warning: pointer targets in passing argument 2 of '__builtin_strcmp' differ in signedness

mp3.c:492: warning: pointer targets in passing argument 2 of '__builtin_strcmp' differ in signedness

mp3.c:492: warning: pointer targets in passing argument 2 of 'strncmp' differ in signedness

if i686-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I. -I..  -DICES_ETCDIR=\"/etc\" -DICES_MODULEDIR=\"/etc/modules\" -I/usr/include/libxml2 -I/usr/include/python2.5  -fno-strict-aliasing -pipe -Wdeclaration-after-statement -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -I/usr/lib/perl5/5.8.8/i686-linux/CORE   -O2 -march=pentium4 -pipe -fomit-frame-pointer -Wall -I/usr/include -pthread -MT cue.o -MD -MP -MF ".deps/cue.Tpo" -c -o cue.o cue.c; \

        then mv -f ".deps/cue.Tpo" ".deps/cue.Po"; else rm -f ".deps/cue.Tpo"; exit 1; fi

if i686-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I. -I..  -DICES_ETCDIR=\"/etc\" -DICES_MODULEDIR=\"/etc/modules\" -I/usr/include/libxml2 -I/usr/include/python2.5  -fno-strict-aliasing -pipe -Wdeclaration-after-statement -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -I/usr/lib/perl5/5.8.8/i686-linux/CORE   -O2 -march=pentium4 -pipe -fomit-frame-pointer -Wall -I/usr/include -pthread -MT metadata.o -MD -MP -MF ".deps/metadata.Tpo" -c -o metadata.o metadata.c; \

        then mv -f ".deps/metadata.Tpo" ".deps/metadata.Po"; else rm -f ".deps/metadata.Tpo"; exit 1; fi

if i686-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I. -I..  -DICES_ETCDIR=\"/etc\" -DICES_MODULEDIR=\"/etc/modules\" -I/usr/include/libxml2 -I/usr/include/python2.5  -fno-strict-aliasing -pipe -Wdeclaration-after-statement -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -I/usr/lib/perl5/5.8.8/i686-linux/CORE   -O2 -march=pentium4 -pipe -fomit-frame-pointer -Wall -I/usr/include -pthread -MT id3.o -MD -MP -MF ".deps/id3.Tpo" -c -o id3.o id3.c; \

        then mv -f ".deps/id3.Tpo" ".deps/id3.Po"; else rm -f ".deps/id3.Tpo"; exit 1; fi

id3.c: In function 'id3v2_read_exthdr':

id3.c:195: warning: pointer targets in passing argument 1 of 'id3v2_decode_synchsafe' differ in signedness

id3.c: In function 'id3v2_read_frame':

id3.c:223: warning: pointer targets in passing argument 1 of 'id3v2_decode_synchsafe3' differ in signedness

id3.c:226: warning: pointer targets in passing argument 1 of 'id3v2_decode_unsafe' differ in signedness

id3.c:229: warning: pointer targets in passing argument 1 of 'id3v2_decode_synchsafe' differ in signedness

if i686-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I. -I..  -DICES_ETCDIR=\"/etc\" -DICES_MODULEDIR=\"/etc/modules\" -I/usr/include/libxml2 -I/usr/include/python2.5  -fno-strict-aliasing -pipe -Wdeclaration-after-statement -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -I/usr/lib/perl5/5.8.8/i686-linux/CORE   -O2 -march=pentium4 -pipe -fomit-frame-pointer -Wall -I/usr/include -pthread -MT signals.o -MD -MP -MF ".deps/signals.Tpo" -c -o signals.o signals.c; \

        then mv -f ".deps/signals.Tpo" ".deps/signals.Po"; else rm -f ".deps/signals.Tpo"; exit 1; fi

if i686-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I. -I..  -DICES_ETCDIR=\"/etc\" -DICES_MODULEDIR=\"/etc/modules\" -I/usr/include/libxml2 -I/usr/include/python2.5  -fno-strict-aliasing -pipe -Wdeclaration-after-statement -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -I/usr/lib/perl5/5.8.8/i686-linux/CORE   -O2 -march=pentium4 -pipe -fomit-frame-pointer -Wall -I/usr/include -pthread -MT crossfade.o -MD -MP -MF ".deps/crossfade.Tpo" -c -o crossfade.o crossfade.c; \

        then mv -f ".deps/crossfade.Tpo" ".deps/crossfade.Po"; else rm -f ".deps/crossfade.Tpo"; exit 1; fi

if i686-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I. -I..  -DICES_ETCDIR=\"/etc\" -DICES_MODULEDIR=\"/etc/modules\" -I/usr/include/libxml2 -I/usr/include/python2.5  -fno-strict-aliasing -pipe -Wdeclaration-after-statement -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -I/usr/lib/perl5/5.8.8/i686-linux/CORE   -O2 -march=pentium4 -pipe -fomit-frame-pointer -Wall -I/usr/include -pthread -MT ices_config.o -MD -MP -MF ".deps/ices_config.Tpo" -c -o ices_config.o ices_config.c; \

        then mv -f ".deps/ices_config.Tpo" ".deps/ices_config.Po"; else rm -f ".deps/ices_config.Tpo"; exit 1; fi

ices_config.c: In function 'parse_file':

ices_config.c:91: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:91: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:91: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:91: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:91: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:91: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:118: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:118: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:118: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:118: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:118: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:118: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:130: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:130: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:130: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:130: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:130: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:130: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:132: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:132: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:132: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:132: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:132: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:132: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c: In function 'parse_stream_node':

ices_config.c:153: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:153: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:153: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:153: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:153: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:153: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:155: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:155: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:155: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:155: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:155: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:155: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:158: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:158: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:158: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:158: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:158: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:158: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:161: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:161: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:161: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:161: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:161: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:161: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:164: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:164: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:164: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:164: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:164: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:164: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:167: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:167: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:167: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:167: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:167: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:167: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:170: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:170: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:170: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:170: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:170: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:170: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:173: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:173: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:173: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:173: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:173: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:173: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:175: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:175: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:175: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:175: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:175: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:175: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:177: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:177: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:177: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:177: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:177: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:177: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:188: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:188: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:188: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:188: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:188: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:188: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:190: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:190: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:190: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:190: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:190: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:190: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c: In function 'parse_server_node':

ices_config.c:207: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:207: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:207: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:207: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:207: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:207: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:209: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:209: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:209: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:209: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:209: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:209: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:212: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:212: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:212: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:212: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:212: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:212: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:215: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:215: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:215: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:215: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:215: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:215: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:216: warning: pointer targets in initialization differ in signedness

ices_config.c:218: warning: pointer targets in passing argument 1 of 'strcasecmp' differ in signedness

ices_config.c:220: warning: pointer targets in passing argument 1 of 'strcasecmp' differ in signedness

ices_config.c: In function 'parse_execution_node':

ices_config.c:239: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:239: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:239: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:239: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:239: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:239: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:241: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:241: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:241: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:241: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:241: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:241: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:243: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:243: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:243: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:243: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:243: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:243: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c: In function 'parse_playlist_node':

ices_config.c:263: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:263: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:263: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:263: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:263: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:263: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:265: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:265: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:265: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:265: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:265: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:265: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:266: warning: pointer targets in initialization differ in signedness

ices_config.c:267: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:267: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:267: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:267: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:267: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:267: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:269: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:269: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:269: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:269: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:269: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:269: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:271: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:271: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:271: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:271: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:271: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:271: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:275: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:275: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:275: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:275: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:275: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:275: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:279: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:279: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:279: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:279: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:279: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:279: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:283: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:283: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:283: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

ices_config.c:283: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:283: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

ices_config.c:283: warning: pointer targets in passing argument 1 of '__builtin_strcmp' differ in signedness

if i686-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I. -I..  -DICES_ETCDIR=\"/etc\" -DICES_MODULEDIR=\"/etc/modules\" -I/usr/include/libxml2 -I/usr/include/python2.5  -fno-strict-aliasing -pipe -Wdeclaration-after-statement -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -I/usr/lib/perl5/5.8.8/i686-linux/CORE   -O2 -march=pentium4 -pipe -fomit-frame-pointer -Wall -I/usr/include -pthread -MT reencode.o -MD -MP -MF ".deps/reencode.Tpo" -c -o reencode.o reencode.c; \

        then mv -f ".deps/reencode.Tpo" ".deps/reencode.Po"; else rm -f ".deps/reencode.Tpo"; exit 1; fi

reencode.c: In function 'ices_reencode_flush':

reencode.c:168: warning: pointer targets in passing argument 2 of 'lame_encode_flush_nogap' differ in signedness

if i686-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I. -I..  -DICES_ETCDIR=\"/etc\" -DICES_MODULEDIR=\"/etc/modules\" -I/usr/include/libxml2 -I/usr/include/python2.5  -fno-strict-aliasing -pipe -Wdeclaration-after-statement -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -I/usr/lib/perl5/5.8.8/i686-linux/CORE   -O2 -march=pentium4 -pipe -fomit-frame-pointer -Wall -I/usr/include -pthread -MT in_vorbis.o -MD -MP -MF ".deps/in_vorbis.Tpo" -c -o in_vorbis.o in_vorbis.c; \

        then mv -f ".deps/in_vorbis.Tpo" ".deps/in_vorbis.Po"; else rm -f ".deps/in_vorbis.Tpo"; exit 1; fi

if i686-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I. -I..  -DICES_ETCDIR=\"/etc\" -DICES_MODULEDIR=\"/etc/modules\" -I/usr/include/libxml2 -I/usr/include/python2.5  -fno-strict-aliasing -pipe -Wdeclaration-after-statement -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -I/usr/lib/perl5/5.8.8/i686-linux/CORE   -O2 -march=pentium4 -pipe -fomit-frame-pointer -Wall -I/usr/include -pthread -MT in_mp4.o -MD -MP -MF ".deps/in_mp4.Tpo" -c -o in_mp4.o in_mp4.c; \

        then mv -f ".deps/in_mp4.Tpo" ".deps/in_mp4.Po"; else rm -f ".deps/in_mp4.Tpo"; exit 1; fi

if i686-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I. -I..  -DICES_ETCDIR=\"/etc\" -DICES_MODULEDIR=\"/etc/modules\" -I/usr/include/libxml2 -I/usr/include/python2.5  -fno-strict-aliasing -pipe -Wdeclaration-after-statement -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -I/usr/lib/perl5/5.8.8/i686-linux/CORE   -O2 -march=pentium4 -pipe -fomit-frame-pointer -Wall -I/usr/include -pthread -MT in_flac.o -MD -MP -MF ".deps/in_flac.Tpo" -c -o in_flac.o in_flac.c; \

        then mv -f ".deps/in_flac.Tpo" ".deps/in_flac.Po"; else rm -f ".deps/in_flac.Tpo"; exit 1; fi

in_flac.c: In function 'ices_flac_open':

in_flac.c:79: warning: implicit declaration of function 'FLAC__stream_decoder_set_read_callback'

in_flac.c:80: warning: implicit declaration of function 'FLAC__stream_decoder_set_write_callback'

in_flac.c:81: warning: implicit declaration of function 'FLAC__stream_decoder_set_metadata_callback'

in_flac.c:82: warning: implicit declaration of function 'FLAC__stream_decoder_set_error_callback'

in_flac.c:90: warning: implicit declaration of function 'FLAC__stream_decoder_set_client_data'

in_flac.c:99: warning: implicit declaration of function 'FLAC__stream_decoder_init'

in_flac.c: In function 'flac_metadata_cb':

in_flac.c:254: warning: pointer targets in passing argument 2 of 'strncasecmp' differ in signedness

in_flac.c:257: warning: pointer targets in passing argument 2 of 'strncasecmp' differ in signedness

/bin/sh ../libtool --tag=CC --mode=link i686-pc-linux-gnu-gcc  -O2 -march=pentium4 -pipe -fomit-frame-pointer -Wall -I/usr/include -pthread  -Wl,-O1 -L/usr/lib/python2.5/config -o ices  ices.o log.o setup.o stream.o util.o mp3.o cue.o metadata.o id3.o signals.o crossfade.o ices_config.o reencode.o in_vorbis.o in_mp4.o in_flac.o playlist/libplaylist.a -lshout -lvorbis   -lxml2 -lz -lm -lpython2.5 -lpthread -ldl  -lutil -lm -lpthread -ldl  -lutil -rdynamic  -L/usr/local/lib /usr/lib/perl5/5.8.8/i686-linux/auto/DynaLoader/DynaLoader.a -L/usr/lib/perl5/5.8.8/i686-linux/CORE -lperl -lpthread -lnsl -ldl -lm -lcrypt -lutil -lc -lmp3lame -lvorbisfile -lvorbis -logg -lmp4v2 -lfaad -lFLAC -lm

mkdir .libs

i686-pc-linux-gnu-gcc -O2 -march=pentium4 -pipe -fomit-frame-pointer -Wall -I/usr/include -Wl,-O1 -o ices ices.o log.o setup.o stream.o util.o mp3.o cue.o metadata.o id3.o signals.o crossfade.o ices_config.o reencode.o in_vorbis.o in_mp4.o in_flac.o -rdynamic  -pthread -L/usr/lib/python2.5/config playlist/libplaylist.a /usr/lib/libshout.so /usr/lib/libxml2.so -lz -lpython2.5 -L/usr/local/lib /usr/lib/perl5/5.8.8/i686-linux/auto/DynaLoader/DynaLoader.a -L/usr/lib/perl5/5.8.8/i686-linux/CORE -lperl -lpthread -lnsl -ldl -lcrypt -lutil -lc /usr/lib/libmp3lame.so /usr/lib/libvorbisfile.so /usr/lib/libvorbis.so /usr/lib/libogg.so /usr/lib/libmp4v2.so /usr/lib/libfaad.so /usr/lib/libFLAC.so -lm

/usr/lib/python2.5/config/libpython2.5.a(posixmodule.o): In function `posix_tmpnam':

(.text+0x8a1): warning: the use of `tmpnam_r' is dangerous, better use `mkstemp'

/usr/lib/python2.5/config/libpython2.5.a(posixmodule.o): In function `posix_tempnam':

(.text+0x99d): warning: the use of `tempnam' is dangerous, better use `mkstemp'

in_flac.o: In function `ices_flac_open':

in_flac.c:(.text+0x69): undefined reference to `FLAC__stream_decoder_set_read_callback'

in_flac.c:(.text+0x79): undefined reference to `FLAC__stream_decoder_set_write_callback'

in_flac.c:(.text+0x89): undefined reference to `FLAC__stream_decoder_set_metadata_callback'

in_flac.c:(.text+0x99): undefined reference to `FLAC__stream_decoder_set_error_callback'

in_flac.c:(.text+0xcb): undefined reference to `FLAC__stream_decoder_set_client_data'

in_flac.c:(.text+0xea): undefined reference to `FLAC__stream_decoder_init'

collect2: ld returned 1 exit status

make[3]: *** [ices] Error 1

make[3]: Leaving directory `/var/tmp/portage/net-misc/ices0-0.4/work/ices0-0.4/src'

make[2]: *** [all-recursive] Error 1

make[2]: Leaving directory `/var/tmp/portage/net-misc/ices0-0.4/work/ices0-0.4/src'

make[1]: *** [all-recursive] Error 1

make[1]: Leaving directory `/var/tmp/portage/net-misc/ices0-0.4/work/ices0-0.4'

make: *** [all] Error 2

 *

 * ERROR: net-misc/ices0-0.4 failed.

 * Call stack:

 *               ebuild.sh, line   49:  Called src_compile

 *             environment, line   83:  Called die

 * The specific snippet of code:

 *       emake || die "make failed"

 *  The die message:

 *   make failed

 *

 * If you need support, post the topmost build error, and the call stack if relevant.

 * A complete build log is located at '/var/log/portage/net-misc:ices0-0.4:20081008-223516.log'.

 * The ebuild environment file is located at '/var/tmp/portage/net-misc/ices0-0.4/temp/environment'.

 * This ebuild is from an overlay: '/usr/local/portage/'

 *
```

Do you think it is possible to make it compile again or should I find another solution to stream mp3 ?

( I already stream ogg with ices 2.x and i'd prefer to continue with ices 0.4 for mp3s )

PS : sorry for by bad english.

Great thanks if you can help me.

----------

## novazur

 *novazur wrote:*   

> Do you think it is possible to make it compile again or should I find another solution to stream mp3 ?

 

I got it !

Simply adding

```
--without-flac --without-vorbis --with-python
```

to econf.

I found the solution there https://trac.modulix.net/gentoo.modulix.net/wiki/appli/ices

----------

## Schizoid

I have setup icecast and ices.

I cannot for the life of me figure out what the device name is for the alsa input module in ices. hw:0,0 doesn't work. I just have a single sound card. What should the device name be?

----------

## JeffBlair

I take it no one has figured out why muse is playing the files so fast?

----------

