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.