Benutzer:Nlohmann/IT/Streaming

Aus Piratenwiki
Wechseln zu: Navigation, Suche


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

  1. Von Icecast vorausgesetzte Pakete installieren.

    apt-get install libxslt1-dev libvorbis-dev pkg-config \
      libcurl4-openssl-dev libspeex-dev libshout-dev
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. Site einschalten und Apache2 neustarten.

    a2ensite streaming
    service apache2 restart
  10. 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

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.

StreamingComputer und TechnikStreaming