OK, fixed most of the hassles. But for some reason xmms on the client machine
won't just play the stream using the URL, I've got to open http://192.168.1.102:8000/mp3.m3u
using links, then pass it to xmms when it prompts me. No biggie. Also found out you can rebuild the song
list at any time, at least without the -r (randomize) option, and it will update on-the-fly. It might
work with -r too, just haven't tested it yet. Well, without further ado, here's my rc.icecast script:
#!/usr/pkg/bin/bash # icecast streaming startup script if [ "$1" = "start" ]; then HOSTNAME=`hostname` HOSTIP=`gethostip -d $HOSTNAME` SOURCEPASS=`head -c 8 /dev/urandom | md5sum | head -c 8` cat <<EOT >/etc/icecast/icecast.xml <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> </limits><authentication> <!-- Sources log in with username 'source' --> <source-password>$SOURCEPASS</source-password> <!-- Relays log in username 'relay' --> <relay-password>$SOURCEPASS</relay-password>
<!-- Admin logs in with the username given below --> <admin-user>admin</admin-user> <admin-password>$SOURCEPASS</admin-password> </authentication>
<hostname>$HOSTIP</hostname>
<!-- You may have multiple <listener> elements --> <listen-socket> <port>8000</port> <!-- <bind-address>127.0.0.1</bind-address> --> </listen-socket>
<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>/usr/var/log/icecast</logdir> <webroot>/usr/share/icecast/web</webroot> <adminroot>/usr/share/icecast/admin</adminroot> </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>nobody</user> <group>nogroup</group> </changeowner> </security> </icecast> EOT ls -1 /home/nobody/www/music/*/*.mp3 > /home/nobody/www/playlist.txt # the -b doesn't really seem to work, need to add the & anyway icecast -c /etc/icecast/icecast.xml -b & # stream a randomly-ordered list with mountpoint /mp3 ices -P $SOURCEPASS -F /home/nobody/www/playlist.txt -m /mp3 -r -B -t http elif [ "$1" = "restart" ]; then $0 stop $0 start else list="`pidof icecast`"; if [ "$list" ]; then kill $list; fi list="`pidof ices`"; if [ "$list" ]; then kill $list; fi sleep 2 list="`pidof icecast`"; if [ "$list" ]; then kill -KILL $list; fi list="`pidof ices`"; if [ "$list" ]; then kill -KILL $list; fi fi
last updated 2013-01-10 20:27:51. served from tektonic.jcomeau.com