Raspberry Pi – Medien auf Chromecast streamen
Den Raspberry Pi kann man sehr gut als Mediencenter verwenden, wie ich bereits in einem meiner letzten Artikel zum Thema XBMC geschrieben habe. Der Raspberry Pi tritt damit in direkte Konkurrenz zu anderen Mediencenter wie zum Beispiel Chromecast. Wer bereits einen Chromecast Stick sein eigen nennt kann mit dem Raspberry Pi auch Videos über den Chromecast streamen. Ich zeige euch wie das geht.
Medien auf Chromecast streamen
Chromecast verwendet eine eigene Codierung für Medien, weshalb das ganze etwas problematisch macht. Alle Videos die nicht mit x264 codiert sind müssen erst umgerechnet werden, weshalb diese nicht in Echtzeit gestreamt werden können. Dazu ist der Raspberry Pi einfach zu langsam. Alle anderen Medien gehen problemlos und auch x264 Videos laufen ruckelfrei.
Um auf Chromecast Medien empfangen (gestreamt) werden können benötigt man einen DLNA/UPnP Server. Ein sehr kompakter und einfacher ist minidlna, welcher unter Linux sehr einfach installiert und konfiguriert werden kann. Zusätzlich zu dem UPnP Server benötigen wir auch noch den bubbleupnp Server, welcher Videos in das für Chromecast benötigte Format transformiert. In diesem Kontext ist es interessant zu erwähnen, dass Chromecast eigentlich kaum Codecs kennt und im Gegensatz zum Raspberry Pi sehr wenig kann.
bubbleupnp Server installieren
Der Server kann direkt von der Herstellerhomepage heruntergeladen und direkt entpackte werden. Eine eigene Installation als solches ist nicht erforderlich. Im Terminal sind folgende Kommando notwendig:
wget http://www.bubblesoftapps.com/bubbleupnpserver/0.8.3/BubbleUPnPServer-0.8.3.zip -O bubbleupnpserver.zip unzip bubbleupnpserver.zip chmod +x launch.sh
Je nachdem welche Version aktuell ist müssen die Versionsnummern ausgetauscht werden. Den Server kann man direkt mit dem launch.sh Skript starten. Diesem haben wir im letzten Schritt ausführbar gemacht. Ausgeführt kann dieses wie folgt werden:
sudo ./launch.sh
Für den Server benötigen wir root Rechte. Will man den Server nicht immer manuell starten, so kann man diesen über ein Startskript auch beim Systemstart automatisch starten lassen. Das geht wie folgt, wir legen ein neues Skript an:
sudo nano /etc/init.d/bubbleupnp_server
In die neue Datei fügen wir folgenden Code ein:
#!/bin/bash DAEMON_PATH="/home/pi/bubbleupnp" DAEMON="java -Xss256k -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -jar BubbleUPnPServer.jar" DAEMONOPTS="" NAME=BubbleUPnPServer DESC="Runs BubbleUPnPServer" PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME case "$1" in start) printf "%-50s" "Starting $NAME..." cd $DAEMON_PATH PID=`$DAEMON $DAEMONOPTS > /dev/null 2>&1 & echo $!` #echo "Saving PID" $PID " to " $PIDFILE if [ -z $PID ]; then printf "%sn" "Fail" else echo $PID > $PIDFILE printf "%sn" "Ok" fi ;; status) printf "%-50s" "Checking $NAME..." if [ -f $PIDFILE ]; then PID=`cat $PIDFILE` if [ -z "`ps axf | grep ${PID} | grep -v grep`" ]; then printf "%sn" "Process dead but pidfile exists" else echo "Running" fi else printf "%sn" "Service not running" fi ;; stop) printf "%-50s" "Stopping $NAME" PID=`cat $PIDFILE` cd $DAEMON_PATH if [ -f $PIDFILE ]; then kill -HUP $PID printf "%sn" "Ok" rm -f $PIDFILE else printf "%sn" "pidfile not found" fi ;; restart) $0 stop $0 start ;; *) echo "Usage: $0 {status|start|stop|restart}" exit 1 esac
In der zweiten Zeile muss man den Pfad angeben wo man den bubbleupnp Server installiert hat, das war bei mir /home/pi/bubbleupnp. Zuletzt müssen noch folgende Kommandos getätigt werden:
sudo chmod 755 /etc/init.d/bubbleupnp_server sudo update-rc.d bubbleupnp_server defaults
Zuerst ändern wir die Zugriffsrechte und danach legen wir noch fest, dass dieses Skript beim Systemstart ausgeführt werden soll. Fertig!
Ausblick
Im ersten Schritt habe ich gezeigt wie man den bubbleupnp Server am Raspberry Pi installiert und automatisch beim Booten startet. Im nächsten Teil erkläre ich noch wie man den ffmpeg Codec für Untertitel verwendet und das Streaming funktioniert.