[Icecast] Player mysteriously quits...

Craig Meyer craig at fdllug.org
Sun Jun 5 10:30:01 PDT 2005


I posted the other day with a question about a player that mysteriously quits playing the icecast stream. I believe the problem is related to the icecast stream for two reasons. 1) Because it quits on more than one different player (Winamp 5 and Foobar2000) and 2) Because I used to use shoutcast with Winamp 2 and never had this problem. Anyway, I tried to get as much information about the problem as possible, so I turned on logging (at loglevel 3) and got a log of the period when the player stops playing. I have looked at the logs myself and don't believe they will be much help, however I have increased the loglevel to 4 so that the next set of logs I get will be more detailed. Below is a list of my logs and config files. It goes in this order - access.log, error.log, ices.log, ices config file and icecast config file. Any help would be appreciated, but again, I will have better logging when the stream stops playing again (probably in about 8 hours or so).

-Craig


access.log
127.0.0.1 - - [04/Jun/2005:14:09:55 -0500] "SOURCE /tobin.ogg HTTP/1.0" 200 19 "-" "IceS 2.0.1" 375393
127.0.0.1 - - [04/Jun/2005:14:13:33 -0500] "SOURCE /tobin.ogg HTTP/1.0" 200 19 "-" "IceS 2.0.1" 128
192.168.0.3 - - [05/Jun/2005:05:29:24 -0500] "GET /tobin.ogg HTTP/1.0" 200 223293079 "-" "WinampOGG/5.09(MPEG stream compatible)" 54902

error.log
[2005-06-04  14:13:33] INFO format-ogg/ogg_get_buffer End of Stream /tobin.ogg
[2005-06-04  14:13:33] INFO source/source_shutdown Source "/tobin.ogg" exiting
[2005-06-04  14:13:44] INFO connection/_handle_source_request Source logging in at mountpoint "/tobin.ogg"
[2005-06-04  14:13:44] INFO format-vorbis/initial_vorbis_page seen initial vorbis header
[2005-06-04  14:13:44] INFO format-vorbis/initial_vorbis_page seen initial vorbis header
[2005-06-04  14:14:22] INFO source/source_main listener count on /tobin.ogg now 1
[2005-06-05  05:29:24] INFO source/source_main listener count on /tobin.ogg now 0

ices.log
[2005-06-04  14:13:44] INFO ices-core/main IceS 2.0.1 started...
[2005-06-04  14:13:44] INFO input-alsa/alsa_open_module Opened audio device plughw:0,0
[2005-06-04  14:13:44] INFO input-alsa/alsa_open_module using 2 channel(s), 44100 Hz, buffer 371 ms
[2005-06-04  14:13:44] INFO input-alsa/alsa_open_module Starting metadata update thread
[2005-06-04  14:13:44] INFO signals/signal_usr1_handler Metadata update requested
[2005-06-04  14:13:44] INFO metadata/metadata_thread_signal tag 1 is artist=tobin
[2005-06-04  14:13:44] INFO metadata/metadata_thread_signal Updating metadata
[2005-06-04  14:13:44] INFO audio/downmix_initialise Enabling stereo->mono downmixing
[2005-06-04  14:13:44] INFO audio/resample_initialise Initialised resampler for 1 channels, from 44100 Hz to 22050 Hz
[2005-06-04  14:13:44] INFO encode/encode_initialise Encoder initialising in VBR mode: 1 channel(s), 22050 Hz, quality 0.000000
[2005-06-04  14:13:44] INFO stream/ices_instance_stream Connected to server: localhost:8000/tobin.ogg
[2005-06-04  14:13:44] INFO audio/resample_initialise Initialised resampler for 1 channels, from 44100 Hz to 22050 Hz
[2005-06-04  14:13:44] INFO encode/encode_initialise Encoder initialising in VBR mode: 1 channel(s), 22050 Hz, quality 0.000000


Ices Config File:
<?xml version="1.0"?>
<ices>

    <!-- run in background  -->
    <background>0</background>
    <!-- where logs go. -->
    <logpath>/home/icecast/log</logpath>
    <logfile>ices.log</logfile>
    <logsize>2048</logsize>
    <!-- 1=error, 2=warn, 3=infoa ,4=debug -->
    <loglevel>3</loglevel>
    <!-- logfile is ignored if this is set to 1 -->
    <consolelog>0</consolelog>

    <!-- optional filename to write process id to -->
    <!-- <pidfile>/home/ices/ices.pid</pidfile> -->

    <stream>
        <!-- metadata used for stream listing -->
        <metadata>
            <name>TobinRadio</name>
            <genre>FM Tuner</genre>
            <description>Radio Machine for Tobin Machining</description>
            <url>localhost</url>
        </metadata>

        <!--    Input module.

            This example uses the 'oss' module. It takes input from the
            OSS audio device (e.g. line-in), and processes it for live
            encoding.  -->
        <input>
            <module>alsa</module>
            <param name="rate">44100</param>
            <param name="channels">2</param>
            <param name="device">plughw:0,0</param>
            <!-- Read metadata (from stdin by default, or -->
            <!-- filename defined below (if the latter, only on SIGUSR1) -->
            <param name="metadata">1</param>
            <param name="metadatafilename">/home/icecast/test</param>
        </input>

        <!--    Stream instance.

            You may have one or more instances here.  This allows you to
            send the same input data to one or more servers (or to different
            mountpoints on the same server). Each of them can have different
            parameters. This is primarily useful for a) relaying to multiple
            independent servers, and b) encoding/reencoding to multiple
            bitrates.

            If one instance fails (for example, the associated server goes
            down, etc), the others will continue to function correctly.
            This example defines a single instance doing live encoding at
            low bitrate.  -->

        <instance>
            <!--    Server details.

                You define hostname and port for the server here, along
                with the source password and mountpoint.  -->

            <hostname>localhost</hostname>
            <port>8000</port>
            <password>icecast</password>
            <mount>/tobin.ogg</mount>
            <yp>1</yp>   <!-- allow stream to be advertised on YP,
default 0 -->

            <!--    Live encoding/reencoding:

                channels and samplerate currently MUST match the channels
                and samplerate given in the parameters to the oss input
                module above or the remsaple/downmix section below.  -->

            <encode>
                <quality>0</quality>
                <samplerate>22050</samplerate>
                <channels>1</channels>
            </encode>

            <!-- stereo->mono downmixing, enabled by setting this to 1 -->
            <downmix>1</downmix>

            <!-- resampling.

                Set to the frequency (in Hz) you wish to resample to, -->

            <resample>
                <in-rate>44100</in-rate>
                <out-rate>22050</out-rate>
            </resample>
        </instance>

    </stream>
</ices>





Icecast Config File:
<icecast>
    <limits>
        <clients>100</clients>
        <sources>2</sources>
        <threadpool>5</threadpool>
        <queue-size>102400</queue-size>
        <client-timeout>30</client-timeout>
        <header-timeout>15</header-timeout>
        <source-timeout>10</source-timeout>
        <!-- If enabled, this will provide a burst of data when a client
             first connects, thereby significantly reducing the startup
             time for listeners that do substantial buffering. However,
             it also significantly increases latency between the source
             client and listening client.  For low-latency setups, you
             might want to disable this. -->
        <burst-on-connect>1</burst-on-connect>
        <!-- same as burst-on-connect, but this allows for being more
             specific on how much to burst. Most people won't need to
             change from the default 64k. Applies to all mountpoints  -->
        <burst-size>65535</burst-size>
    </limits>

    <authentication>
        <!-- Sources log in with username 'source' -->
        <source-password>icecast</source-password>
        <!-- Relays log in username 'relay' -->
        <relay-password>icecast</relay-password>

        <!-- Admin logs in with the username given below -->
        <admin-user>admin</admin-user>
        <admin-password>icecast</admin-password>
    </authentication>

    <!-- Uncomment this if you want directory listings -->
    <!--
    <directory>
        <yp-url-timeout>15</yp-url-timeout>
        <yp-url>http://dir.xiph.org/cgi-bin/yp-cgi</yp-url>
    </directory>
    <directory>
        <yp-url-timeout>15</yp-url-timeout>
        <yp-url>http://www.oddsock.org/cgi-bin/yp-cgi</yp-url>
    </directory>
     -->

    <!-- This is the hostname other people will use to connect to your server.
    It affects mainly the urls generated by Icecast for playlists and yp
    listings. -->
    <hostname>radio</hostname>

    <!-- You can use these two if you only want a single listener -->
    <!--<port>8000</port> -->
    <!--<bind-address>127.0.0.1</bind-address>-->

    <!-- You may have multiple <listener> elements -->
    <listen-socket>
        <port>8000</port>
        <!-- <bind-address>127.0.0.1</bind-address> -->
    </listen-socket>
    <!--
    <listen-socket>
        <port>8001</port>
    </listen-socket>
    -->

    <!--<master-server>127.0.0.1</master-server>-->
    <!--<master-server-port>8001</master-server-port>-->
    <!--<master-update-interval>120</master-update-interval>-->
    <!--<master-password>hackme</master-password>-->
    <!--
    <relay>
        <server>127.0.0.1</server>
        <port>8001</port>
        <mount>/example.ogg</mount>
        <local-mount>/different.ogg</local-mount>

        <relay-shoutcast-metadata>0</relay-shoutcast-metadata>
    </relay>
    -->

    <!-- Only define a <mount> section if you want to use advanced options,
         like alternative usernames or passwords
    <mount>
        <mount-name>/example-complex.ogg</mount-name>

        <username>othersource</username>
        <password>hackmemore</password>

        <max-listeners>1</max-listeners>
        <dump-file>/tmp/dump-example1.ogg</dump-file>
        <burst-size>65536</burst-size>
        <fallback-mount>/example2.ogg</fallback-mount>
        <authentication type="htpasswd">
                <option name="filename" value="myauth"/>
                <option name="allow_duplicate_users" value="0"/>
        </authentication>
    </mount>
    -->

    <fileserve>1</fileserve>

    <paths>
                <!-- basedir is only used if chroot is enabled -->
        <basedir>/usr/share/icecast</basedir>

        <!-- Note that if <chroot> is turned on below, these paths must both
             be relative to the new root, not the original root -->
        <logdir>/home/icecast/log</logdir>
        <webroot>/usr/share/icecast/web</webroot>
        <adminroot>/usr/share/icecast/admin</adminroot>
        <!-- <pidfile>/usr/share/icecast/icecast.pid</pidfile> -->

        <!-- Aliases: treat requests for 'source' path as being for 'dest' path
             May be made specific to a port or bound address using the "port"
             and "bind-address" attributes.
          -->
        <!--
        <alias source="/foo" dest="/bar"/>
          -->
        <!-- Aliases: can also be used for simple redirections as well,
             this example will redirect all requests for http://server:port/ to
             the status page
          -->
        <alias source="/" dest="/status.xsl"/>
    </paths>

    <logging>
        <accesslog>access.log</accesslog>
        <errorlog>error.log</errorlog>
        <loglevel>3</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
    </logging>

    <security>
        <chroot>0</chroot>
        <changeowner>
            <user>icecast</user>
            <group>icecast</group>
        </changeowner>
    </security>
</icecast>




More information about the Icecast mailing list