[Icecast] Multiple mount points without dynamic reencoding

Raymond Lutz raylutz at cognisys.com
Mon Jun 27 21:33:52 UTC 2011


Hello:

I am running the icecast2.3.2 server and ices0.4 with a perl script 
which provides the filename of the next track to play. I am reencoding 
in advance using ffmpeg, which has been very reliable. My main stream is 
mp3, 64kbps / 44.1 kHz (mono) and I have pre-reencoded the tracks to 
32kbps / 22.05 kHz (mono), for a lower data rate stream. At this time, I 
have not figured out how to get a second mount point to work for the 32k 
stream.

The stream is at http://www.AirProgressive.org.

My content is "News/Talk" and tend to be very long, usually at least 1/2 
hour or 1 hour (or more). Fidelity is not as important as compatibility, 
so we are using mp3 format, and therefore, ices 0.4 version. (plus most 
of the files we get to play are mp3 and it is not under our control.)

It is pretty clear that icecast can deal with multiple mount points. 
Ices says it can too, but apparently to do so, it will require that I 
deal with dynamic reencoding, which thus far I have not been able to 
successfully run as it encounters a runtime error. (See the end of this 
email for the dump of the error.) So I have worked around this 
difficulty by pre-reencoding the audio using ffmpeg, which is very 
robust, but can take significant time to reencode a track of 30 to 60 
minutes (taking a number of minutes to do so). But this can be easily 
done in advance and cached as separate files. Doing this has eliminated 
glitches that will occur at track boundaries when going from track to 
track (although mp3 describes the bitrate and freq on a frame-by-frame 
basis, the assumption is that each track will be uniform, and thus, the 
entire stream will be uniform).

1. Is it possible to serve two file formats using ices, destined to two 
different mount points?
     a. Will I need to run two instances of ices to do it?
     b. Is there a way to specify which mount point a given file should 
be sent to, when ices_get_next() perl function is called? (i.e. if I 
return a list of filenames, will each filename be sent to the list of 
streams if reencoding is not enabled, for example??)

2. You say in your documentation that there is no interest in mp3 format 
files, which I find to be astonishing, since most audio files available 
are mp3 and almost none are Ogg/Vorbis or anything else. You can add me 
to the list of people who are interested, so you will no longer say 
there is no interest (or is this some sort of a joke that I don't 
understand?) Since most of the files we get access to are mp3, 
reencoding into Ogg/Vorbis will only decrease fidelity, and so it sounds 
silly to do that.

3. If you happen to know, is there any benefit to changing the sample 
rate to a lower value when reencoding, or is it just as good to use 
32K/44.1K as 32K/22.05K.

4. Currently, what is the best approach to get into the Shoutcast 
directory. Can I treat shoutcast as a slave and relay content to it? 
That mean I need to install shoutcast on my (linux) server, right? What 
are the configuration details?

Thank you for your kind assistance.

--Ray Lutz

==============================================
ERROR DUMP

*** glibc detected *** ices: free(): invalid pointer: 0xb7ddd008 ***
======= Backtrace: =========
/lib/libc.so.6[0xa965a5]
/lib/libc.so.6(cfree+0x59)[0xa969e9]
ices[0x804fcbb]
ices(ices_stream_loop+0x6d1)[0x804d431]
ices(main+0x33)[0x804b793]
/lib/libc.so.6(__libc_start_main+0xdc)[0xa42e9c]
ices[0x804b6a1]
======= Memory map: ========
00110000-00228000 r-xp 00000000 00:26 157335553  /usr/local/lib/libxml2.so.2.7.8
00228000-0022e000 rw-p 00117000 00:26 157335553  /usr/local/lib/libxml2.so.2.7.8
0022e000-00236000 r-xp 00000000 00:26 157335612  /usr/local/lib/libvorbisfile.so.3.3.4
00236000-00237000 rw-p 00007000 00:26 157335612  /usr/local/lib/libvorbisfile.so.3.3.4
00237000-0023c000 r-xp 00000000 00:26 157335602  /usr/local/lib/libogg.so.0.7.1
0023c000-0023d000 rw-p 00004000 00:26 157335602  /usr/local/lib/libogg.so.0.7.1
0040d000-00428000 r-xp 00000000 00:26 26871825   /lib/ld-2.5.so
00428000-00429000 r--p 0001a000 00:26 26871825   /lib/ld-2.5.so
00429000-0042a000 rw-p 0001b000 00:26 26871825   /lib/ld-2.5.so
00543000-0056a000 r-xp 00000000 00:26 26871781   /lib/libm-2.5.so
0056a000-0056b000 r--p 00026000 00:26 26871781   /lib/libm-2.5.so
0056b000-0056c000 rw-p 00027000 00:26 26871781   /lib/libm-2.5.so
005a1000-005e8000 r-xp 00000000 00:26 157335629  /usr/local/lib/libmp3lame.so.0.0.0
005e8000-005e9000 rw-p 00046000 00:26 157335629  /usr/local/lib/libmp3lame.so.0.0.0
005e9000-0061c000 rw-p 005e9000 00:00 0
0068a000-0069f000 r-xp 00000000 00:26 26871789   /lib/libnsl-2.5.so
0069f000-006a0000 r--p 00014000 00:26 26871789   /lib/libnsl-2.5.so
006a0000-006a1000 rw-p 00015000 00:26 26871789   /lib/libnsl-2.5.so
006a1000-006a3000 rw-p 006a1000 00:00 0
0072e000-00737000 r-xp 00000000 00:26 26871796   /lib/libcrypt-2.5.so
00737000-00738000 r--p 00008000 00:26 26871796   /lib/libcrypt-2.5.so
00738000-00739000 rw-p 00009000 00:26 26871796   /lib/libcrypt-2.5.so
00739000-00760000 rw-p 00739000 00:00 0
00799000-007a4000 r-xp 00000000 00:26 26871882   /lib/libgcc_s-4.1.2-20080825.so.1
007a4000-007a5000 rw-p 0000a000 00:26 26871882   /lib/libgcc_s-4.1.2-20080825.so.1
007e0000-007f0000 r-xp 00000000 00:26 26871874   /lib/libresolv-2.5.so
007f0000-007f1000 r--p 0000f000 00:26 26871874   /lib/libresolv-2.5.so
007f1000-007f2000 rw-p 00010000 00:26 26871874   /lib/libresolv-2.5.so
007f2000-007f4000 rw-p 007f2000 00:00 0
0084f000-00876000 r-xp 00000000 00:26 157335607  /usr/local/lib/libvorbis.so.0.4.5
00876000-00877000 rw-p 00027000 00:26 157335607  /usr/local/lib/libvorbis.so.0.4.5
008ee000-008f8000 r-xp 00000000 00:26 26871832   /lib/libnss_files-2.5.so
008f8000-008f9000 r--p 00009000 00:26 26871832   /lib/libnss_files-2.5.so
008f9000-008fa000 rw-p 0000a000 00:26 26871832   /lib/libnss_files-2.5.so
00a2d000-00b7f000 r-xp 00000000 00:26 26871861   /lib/libc-2.5.so
00b7f000-00b81000 r--p 00152000 00:26 26871861   /lib/libc-2.5.so
00b81000-00b82000 rw-p 00154000 00:26 26871861   /lib/libc-2.5.so
00b82000-00b85000 rw-p 00b82000 00:00 0
00c76000-00c77000 r-xp 00c76000 00:00 0          [vdso]
00d7f000-00d8c000 r-xp 00000000 00:26 157335622  /usr/local/lib/libshout.so.3.2.0
00d8c000-00d8d000 rw-p 0000c000 00:26 157335622  /usr/local/lib/libshout.so.3.2.0
00e2d000-00e30000 r-xp 00000000 00:26 26871871   /lib/libdl-2.5.so
00e30000-00e31000 r--p 00002000 00:26 26871871   /lib/libdl-2.5.so
00e31000-00e32000 rw-p 00003000 00:26 26871871   /lib/libdl-2.5.so
00e6d000-00e6f000 r-xp 00000000 00:26 26871795   /lib/libutil-2.5.so
00e6f000-00e70000 r--p 00001000 00:26 26871795   /lib/libutil-2.5.so
00e70000-00e71000 rw-p 00002000 00:26 26871795   /lib/libutil-2.5.so
00e7f000-00e94000 r-xp 00000000 00:26 26871820   /lib/libpthread-2.5.so
00e94000-00e95000 r--p 00015000 00:26 26871820   /lib/libpthread-2.5.so
00e95000-00e96000 rw-p 00016000 00:26 26871820   /lib/libpthread-2.5.so
00e96000-00e98000 rw-p 00e96000 00:00 0
00ebf000-00fea000 r-xp 00000000 00:26 174100243  /usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/libperl.so
00fea000-00fef000 rw-p 0012a000 00:26 174100243  /usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/libperl.so
00fef000-00ff1000 rw-p 00fef000 00:00 0
08048000-08055000 r-xp 00000000 00:26 157302894  /usr/local/bin/ices
08055000-08056000 rw-p 0000d000 00:26 157302894  /usr/local/bin/ices
08056000-0810c000 rw-p 08056000 00:00 0
09893000-09b0b000 rw-p 09893000 00:00 0          [heap]
b7d1a000-b7e1e000 rw-p b7d1a000 00:00 0
b7ea0000-b7ec1000 rw-p b7ea0000 00:00 0
b7ec1000-b7efc000 r--p 00000000 00:26 36622587   /usr/lib/locale/en_US.utf8/LC_CTYPE
b7efc000-b7efd000 r--p 00000000 00:26 36622639   /usr/lib/locale/en_US.utf8/LC_NUMERIC
b7efd000-b7efe000 r--p 00000000 00:26 36623942   /usr/lib/locale/en_US.utf8/LC_TIME
b7efe000-b7fd5000 r--p 00000000 00:26 36622592   /usr/lib/locale/en_US.utf8/LC_COLLATE
b7fd5000-b7fd6000 r--p 00000000 00:26 36623941   /usr/lib/locale/en_US.utf8/LC_MONETARY
b7fd6000-b7fd7000 r--p 00000000 00:26 36622735   /usr/lib/locale/en_US.utf8/LC_MESSAGES/SYS_LC_MESSAGES
b7fd7000-b7fd8000 r--p 00000000 00:26 36623713   /usr/lib/locale/en_US.utf8/LC_PAPER
b7fd8000-b7fd9000 r--p 00000000 00:26 36623399   /usr/lib/locale/en_US.utf8/LC_NAME
b7fd9000-b7fe0000 r--s 00000000 00:26 139657355  /usr/lib/gconv/gconv-modules.cache
b7fe0000-b7fe5000 rw-p b7fe0000 00:00 0
b7fe5000-b7fe6000 r--p 00000000 00:26 36623939   /usr/lib/locale/en_US.utf8/LC_ADDRESS
b7fe6000-b7fe7000 r--p 00000000 00:26 36624033   /usr/lib/locale/en_US.utf8/LC_TELEPHONE
b7fe7000-b7fe8000 r--p 00000000 00:26 36624044   /usr/lib/locale/en_US.utf8/LC_MEASUREMENT
b7fe8000-b7fe9000 r--p 00000000 00:26 36623940   /usr/lib/locale/en_US.utf8/LC_IDENTIFICATION
b7fe9000-b7feb000 rw-p b7fe9000 00:00 0
bfa27000-bfa3c000 rw-p bffe9000 00:00 0          [stack]

Aborted



-- 
---------------------------------------
Raymond Lutz
Cognisys, Inc.
1010 Old Chase Ave., Bldg B
El Cajon (San Diego Cty), CA 92020 USA
Voice 619-447-3246
http//www.cognisys.com




More information about the Icecast mailing list