Benutzer:Nlohmann/IT/Streaming
Inhaltsverzeichnis
PIRATEN MV Streaming
Diese Seite fasst zusammen, wie der Streaming-Server der PIRATEN MV aufgesetzt wurde. Dabei sind folgende Dinge zu beachten:
- Die Befehle unten müssen als root ausgeführt werden.
- Die hier angegebenen Passwort sind natürlich nicht die tatsächlichen :-)
- Die IP unseres virtuellen Servers ist 83.133.105.209. Dies muss natürlich an deinen Server angepasst werden.
- Die Domain, unter der der Streaming-Server erreichbar sein wird ist http://streaming.piraten-mv.de. Auch das muss natürlich angepasst werden.
Rezept
Von Icecast vorausgesetzte Pakete installieren.
apt-get install libxslt1-dev libvorbis-dev pkg-config \ libcurl4-openssl-dev libspeex-dev libshout-dev
Projektordner und Unterordner erstellen und Rechte anpassen: der Icecast-Server läuft später unter dem Nutzer "nobody" der Gruppe "nogroup".
mkdir -p /projects/icecast \ /projects/icecast/var/log \ /projects/icecast/dumps \ /projects/icecast/scripts \ /projects/icecast/share/icecast/web/relive chown nobody:nogroup /projects/icecast/var/log \ /projects/icecast/dumps \ /projects/icecast/scripts \ /projects/icecast/share/icecast/web/relive
Icecast herunterladen und in Projektordner "/projects/icecast" installieren.
cd /tmp curl http://downloads.xiph.org/releases/icecast/icecast-2.3.2.tar.gz -O tar xfz icecast-2.3.2.tar.gz cd icecast-2.3.2 ./configure --prefix=/projects/icecast make all install cd /tmp rm -fr icecast-2.3.2 icecast-2.3.2.tar.gz
Server einrichten und mount "/live" erstellen. Bitte daran denken, die Passworte "pass_source", "pass_relay", "pass_admin" und "pass_live" anzupassen.
cat >/projects/icecast/etc/icecast.xml <<EOF <icecast> <limits> <clients>100</clients> <sources>2</sources> <threadpool>5</threadpool> <queue-size>524288</queue-size> <client-timeout>30</client-timeout> <header-timeout>15</header-timeout> <source-timeout>10</source-timeout> <burst-on-connect>1</burst-on-connect> <burst-size>65535</burst-size> </limits> <authentication> <source-password>pass_source</source-password> <relay-password>pass_relay</relay-password> <admin-user>admin</admin-user> <admin-password>pass_admin</admin-password> </authentication> <location>Mecklenburg-Vorpommern</location> <admin>support@piraten-mv.de</admin> <hostname>streaming.piraten-mv.de</hostname> <listen-socket> <port>8000</port> <shoutcast-mount>/live</shoutcast-mount> </listen-socket> <fileserve>1</fileserve> <mount> <mount-name>/live</mount-name> <username>live</username> <password>pass_live</password> <fallback-mount>/audio/un_bonito_recuerdo.mp3</fallback-mount> <fallback-when-full>1</fallback-when-full> <charset>utf-8</charset> <public>1</public> <bitrate>64</bitrate> <type>application/mp3</type> <dump-file>/projects/icecast/share/icecast/web/relive/live.mp3</dump-file> <mp3-metadata-interval>4096</mp3-metadata-interval> <on-connect>/projects/icecast/scripts/begin.sh</on-connect> <on-disconnect>/projects/icecast/scripts/end.sh</on-disconnect> </mount> <paths> <basedir>/projects/icecast/share/icecast</basedir> <logdir>/projects/icecast/var/log</logdir> <webroot>/projects/icecast/share/icecast/web</webroot> <adminroot>/projects/icecast/share/icecast/admin</adminroot> <pidfile>/projects/icecast/share/icecast/icecast.pid</pidfile> <alias source="/" dest="/status.xsl"/> </paths> <logging> <accesslog>access.log</accesslog> <errorlog>error.log</errorlog> <playlistlog>playlist.log</playlistlog> <loglevel>3</loglevel> <logsize>10000</logsize> </logging> <security> <chroot>0</chroot> </security> </icecast> EOF
Scripte erzeugen, die zu Beginn bzw. zum Ende des Streamens ausgeführt werden. Diese Scripte bekommen als Parameter den Namen des jeweiligen Mounts (z.B. "/live") übergeben.
cat >/projects/icecast/scripts/begin.sh <<EOF #!/bin/bash /bin/echo "[`date +%Y%m%d-%H%M`] Begin streaming at $1..." >> /projects/icecast/var/log/sources.log EOF chmod a+x /projects/icecast/scripts/begin.sh cat >/projects/icecast/scripts/end.sh <<EOF #!/bin/bash #!/bin/sh NAME=`echo $1 | sed -s 's/\///'` echo "[`date +%Y%m%d-%H%M`] End streaming at $1..." >> /projects/icecast/var/log/sources.log # archiving re-live at this point cp /projects/icecast/share/icecast/web/relive/$NAME.mp3 /projects/icecast/dumps/`date +%Y%m%d-%H%M`-$NAME.mp3 EOF chmod a+x /projects/icecast/scripts/end.sh
Wir nutzen als Pausenmusik den Song "Un bonito recuerdo" von BrunoXe http://www.jamendo.com/de/download/track/379702, der aus der dem Spot zur Bundestagswahl (http://www.youtube.com/watch?v=3Ixl68QAhGw) bekannt ist. Er ist unter der CC-BY-Lizenz veröffentlicht.
cd /projects/icecast/share/icecast/web mkdir audio cd audio curl http://download29.jamendo.com/download/track/379702/mp32/522431e875/Un%20bonito%20recuerdo.mp3 -o un_bonito_recuerdo.mp3
Daemon anlegen, der Icecast starten kann.
cat >/etc/init.d/icecast <<EOF #! /bin/sh PATH=/projects/icecast/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/projects/icecast/bin/icecast NAME=icecast DESC=icecast test -x $DAEMON || exit 0 # Standardwerte CONFIGFILE="/projects/icecast/etc/icecast.xml" USERID=nobody GROUPID=nogroup set -e case "$1" in start) echo -n "Starte $DESC: " start-stop-daemon --start --quiet --chuid $USERID:$GROUPID \ --exec $DAEMON -- -b -c $CONFIGFILE echo "$NAME." ;; stop) echo -n "$DESC anhalten: " start-stop-daemon --stop --oknodo --quiet --exec $DAEMON echo "$NAME." ;; reload|force-reload) echo "$DESC Konfigurationsdateien neu laden." start-stop-daemon --stop --signal 1 --quiet --exec $DAEMON ;; restart) echo -n "Starte $DESC neu: " # Sendet nach 5 Sekunden einen TERM und wartet höchstens 30 Sekunden. start-stop-daemon --stop --oknodo --retry TERM/5/0/30 --quiet --exec $DAEMON start-stop-daemon --start --quiet --chuid $USERID:$GROUPID \ --exec $DAEMON -- -b -c $CONFIGFILE echo "$NAME." ;; *) echo "Verwendung: $0 {start|stop|restart|reload|force-reload}" >&2 exit 1 ;; esac exit 0 EOF chmod a+x /etc/init.d/icecast
Erstelle eine Site für Apache2. In dieser Site wird ein virtueller Host für http://streaming.piraten-mv.de erstellt, der Anfragen den unter Port 8000 laufenden Icecast-Server weitergibt.
cat >/etc/apache2/sites-available/streaming <<EOF NameVirtualHost 83.133.105.209 <VirtualHost 83.133.105.209:80> ServerName streaming.piraten-mv.de:80 ServerAdmin webmaster@piraten-mv.de ProxyPass / http://localhost:8000/ </VirtualHost> EOF
Site einschalten und Apache2 neustarten.
a2ensite streaming service apache2 restart
Daemon starten
/etc/init.d/icecast start
Der Icecast-Server ist nun unter http://streaming.piraten-mv.de erreichbar. Auch wenn nicht gestreamt wird, sollte unter http://streaming.piraten-mv.de/live die Pausenmusik zu hören sein.
Streamen
In Icecast-Sendern müssen folgende Daten eingetragen werden, um unter dem Mount "/live" zu streamen:
- Server-Type: Icecast 2
- Account: live
- Password: pass_live
- Address: streaming.piraten-mv.de
- Port: 8000
- Mount-Point: /live
Getestete Sende-Software
- Nicecast (Mac OS X; http://www.rogueamoeba.com/nicecast)
- Papaya Broadcaster (iOS Universal-App; http://itunes.apple.com/de/app/papaya-broadcaster/id366266882)
Getestete Empfangs-Software
Statt "live" kann auch jeder andere Mount angegeben werden. Eine Übersicht über aktuell sendende Mounts gibt es unter http://streaming.piraten-mv.de.
- Safari; URL: http://streaming.piraten-mv.de/live
- Firefox; URL: http://streaming.piraten-mv.de/live
- Chrome; URL: http://streaming.piraten-mv.de/live
- iTunes; "Advanced/Open Stream", URL: http://streaming.piraten-mv.de/live
- VLC; "File/Open Network", URL: http://streaming.piraten-mv.de/live.m3u (Endung ".m3u" beachten!)
- Quicktime; "File/Open Location", URL http://streaming.piraten-mv.de/live