[icecast] Live Streaming Problem

Todd Brill tbrill at rackforce.com
Sat Jun 7 02:50:47 UTC 2003



Me again....

After getting regular playlist streaming working, I'm not trying to
complete the project and implement the live streaming.  Unfortunately, due
to the sad, lacking documentation for icecast and ices (especially what
the xml tags in the configuration files actually DO and how they can be
used), I've run into another snag that only you guys can help me out with.
 Here it goes.  The problem seems to be in the sample rate (see error
message below):

Here's my icecast.xml file:

<icecast>
      <location>Not Currently Used</location>
      <admin>Not Currently Used</admin>

      <limits>
        <clients>100</clients>
        <sources>2</sources>
        <threadpool>5</threadpool>
        <client-timeout>30</client-timeout>
        <header-timeout>15</header-timeout>
        <source-timeout>10</source-timeout>
      </limits>

      <authentication>
        <!-- Sources log in with username 'source' -->
        <source-password>hackme</source-password>
        <!-- Relays log in username 'relay' -->
        <relay-password>hackme</relay-password>
        <!-- Admin logs in with the username given below -->
        <admin-user>admin</admin-user>
        <admin-password>hackme</admin-password>
      </authentication>

      <!--<directory>
      <yp-url><a href="http://www.oddsock.org/cgi-bin/yp-cgi</yp-url">http://www.oddsock.org/cgi-bin/yp-cgi</yp-url</a>>
      </directory>-->

      <hostname>192.168.0.41</hostname>
      <port>8000</port>

      <!--<bind-address>127.0.0.1</bind-address>-->
      <!--<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>/foo.ogg</mount>
       <local-mount>/bar.ogg</local-mount>
      </relay>-->

      <!--<mount>
        <mount-name>/example1.ogg</mount-name>
        <username>othersource</username>
        <password>hackmemore</password>-->

        <!-- These next three aren't yet implemented -->
        <!--<max-listeners>1</max-listeners>
        <dump-file>/tmp/dump-example1.ogg</dump-file>
        <fallback-mount>/example2.ogg</fallback-mount>
      </mount>-->

      <fileserve>1</fileserve>

      <paths>
        <basedir>/home/melmoth/stream</basedir>
        <logdir>/home/melmoth/stream</logdir>
        <webroot>/home/melmoth/stream/web</webroot>
      </paths>

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

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

Here's my ices-live.xml :

<?xml version="1.0"?>
<ices>

        <background>0</background> <!-- run in background? (unimplemented)
-->
        <logpath>/home/melmoth/stream</logpath> <!-- where logs, etc go. -->
        <logfile>ices.log</logfile>
        <loglevel>4</loglevel> <!-- 1=error,2=warn,3=info,4=debug -->
        <consolelog>1</consolelog> <!-- logfile is ignored if this is set
to 1 -->

        <stream>
                <!-- metadata used for stream listing (not currently used)
-->
                <metadata>
                        <name>Example stream name</name>
                        <genre>Example genre</genre>
                        <description>A short description of your
stream</description>
                </metadata>

                <!-- input module
                         This example uses the 'oss' module. It takes
input from the
                         oss audio device (i.e. line-in), and processes it
for live
                         encoding.
                -->
                <input>
                        <module>oss</module>
                        <param name="rate">44100</param><!-- samplerate -->
                        <param name="channels">2</param> <!-- number of
channels -->
                        <param name="device">/dev/dsp</param> <!-- audio
device -->
                        <!--<param name="metadata">1</param>--> <!-- Read
metadata (from stdin by default,
                        or filename defined below (if the latter, only on
SIGUSR1)-->
                        <!--<param name="metadatafilename">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>hackme</password>
                        <!--<mount>/example1.ogg</mount>-->

                        <!-- Live encoding/reencoding:
                                 channels and samplerate currently MUST
match the channels
                                 and samplerate given in the parameters to
the oss input
                                 module above.

<p>                        <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, or 0 to disable -->

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

Here's the message that appears when I try and start the server:

[root at silky stream]# service icecast start
Starting IceCast Server:  Changed groupid to 500.
Changed userid to 500.
[2003-06-06  07:46:15] INFO ices-core/main ices started...
[2003-06-06  07:46:15] EROR input-oss/oss_open_module Couldn't set
sampling rate
[2003-06-06  07:46:15] EROR input/input_loop Couldn't initialise input
module "oss"

[2003-06-06  07:46:15] INFO ices-core/main Shutdown complete

<p>Thanks for the help guys !

-Todd Brill

<p>-----------------------------------------
Rackforce Hosting Inc.
The New Force in Hosting
http://www.rackforce.com/

<p>--- >8 ----
List archives:  http://www.xiph.org/archives/
icecast project homepage: http://www.icecast.org/
To unsubscribe from this list, send a message to 'icecast-request at xiph.org'
containing only the word 'unsubscribe' in the body.  No subject is needed.
Unsubscribe messages sent to the list will be ignored/filtered.



More information about the Icecast mailing list