Schlagwort-Archiv: Pi

HOWTO: Raspberry Pi als HD-Mediaplayer

Raspberry Pi (Model B)

Ihr seit auf der Suche nach einem sehr flexiblen Medienabspielgerät? Die WD-TV-HDs und Hama-PMPs dieser Welt machen euch nicht glücklich, weil ihr basteln wollt? Das Ganze für Materialkosten unter 60€?

In diesem HOWTO möchte ich euch zeigen wie ihr aus einem Raspberry Pi (RPi) einen HD-Mediaplayer für Mpeg4 Filme macht. Ihr werden dazu Terminals benutzen, Scripte schreiben und es ist schon ein wenig Hackerei. Es lohnt sich aber. Hinterher noch ein kleiner Ausblick, wie man Videos von zwei RPis halbwegs synchronisiert.

Was ihr braucht:

  • Raspberry Pi (Model B): max. 40€
  • Netzteil für RPi: ca. 7€ (Vielleicht auch eins mit Schalter nehmen)
  • SD-Karte 8GB oder grösser (Class 10): ca. 13€
  • USB Maus und Tastatur (Hab ihr bestimmt da)
  • HDMI Anschlusskabel für euren Monitor (z.B. HDMI auf DVI)
  • ggf. Gehäuse für RPi: ca. 7€
  • Netzwerkkabel (min. CAT5)
  • Einen Computer (Mac, Linuxbox, PC) mit SD-Kartenlesegerät

1. Alles zusammenbauen

RPi an den Monitor anschliessen. Maus und Tastatur anschliessen. Netwerkkabel anschliessen (Brauchen wir vielleicht später für Fernsteuerung). Netzteil bereit halten. Wir müssen erst die SD-Karte vorbereiten.

2. Software einrichten

Ladet euch von hier das Betriebssystem für euren RPi namens Rasbian (wheezy). Mit dieser Anleitung solltet ihr es schaffen die SD-Karte richtig einzurichten.

Wenn die Karte fertig ist in den RPi Slot stecken und jetzt das Netzteil verbinden. Wenn alles gut geht, sollte jetzt der RPi mit dem Konfigurationswerkzeug starten. Hier nun solltet ihr zunächst das Dateisystem expandieren (Speicherplatz für die Videos!), dann eure Landeseinstellungen vornehmen und unter Advanced Options den SSH-Zugang ermöglichen! Geduld. Sorgfalt.

Wichtig: Enable Boot to Desktop abschalten! Wir brauchen keine grafische Benutzungsoberfläche (xserver) für dieses Vorhaben.

Nach dem Finish haben wir endlich ein Login vor uns. User: pi Passwort: raspberry
Wir sind drin. Und jetzt kommt der eigentliche Teil auf der Kommandozeile. Vielleicht als erste Fingerübung die IP-Adresse des RPi ermitteln (Könnte später hilfreich sein)

ifconfig

Anwort könnte so aussehen (Bitte notieren):

eth0      Link encap:Ethernet  Hardware Adresse ff:ff:ff:ff:ff:ff  
          inet Adresse:192.168.10.231  Bcast:192.168.10.255
          Maske:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metrik:1
          RX packets:1835 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1539 errors:0 dropped:0 overruns:0 carrier:0
          Kollisionen:0 Sendewarteschlangenlänge:1000 
          RX bytes:230418 (225.0 KiB)  TX bytes:209983 (205.0 KiB)

lo        Link encap:Lokale Schleife  
          inet Adresse:127.0.0.1  Maske:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metrik:1
          RX packets:201 errors:0 dropped:0 overruns:0 frame:0
          TX packets:201 errors:0 dropped:0 overruns:0 carrier:0
          Kollisionen:0 Sendewarteschlangenlänge:0 
          RX bytes:22233 (21.7 KiB)  TX bytes:22233 (21.7 KiB)

3. Die automatischen Video-Scripte

Ich gehe im folgenden davon aus, das ihr eure Videos vollautomatisch beim Hochfahren im Vollbild und in HD (1920 x 1080) abspielen wollt. Ausserdem kontinuierlich (loop). So wie es bei den meisten Videoinstallationen benötigt wird.

Die Videos sollten im Mpeg4 Format vorliegen und am besten den h264 Codec haben. Diese auf einen USB-Stick kopieren. USB Stick am RPi anstecken und die Dateien kopieren. Vielleicht vorher noch einen Medienordner an einer sinnvollen Stelle erstellen.

mkdir videos
cp /media/NAMEDESSTICK/VERZEICHNISMITVIDEOS/* /home/pi/videos/

Wir legen ein neues Script an, das unsere Steuerbefehle für das Abspielen und den loop ausführen wird.

touch video.sh

Jetzt die Datei mit nano (Ein einfacher Texteditor) editieren.

nano video.sh

Hier kommt jetzt das Script was in den Editor geschrieben werden muss. Wer es sich einfach machen will kann einfach auf seinem Rechner eine Textdatei mit gleichem Namen und Inhalt verfassen und per USB-Stick auf den RPi bringen.

#!/bin/sh
#sleep 20 #(SICHERUNGSBOLZEN)
setterm -blank 1
fbset -xres 1920 -yres 1080

SERVICE='omxplayer'
while true; do
if ps ax | grep -v grep | grep $SERVICE > /dev/null
sleep 1
then
#läuft noch
else
omxplayer -o hdmi /home/pi/videos/VIDEONAMEHIEREINTRAGEN.mp4 &
fi
done

Was macht es? Es überprüft jede Sekunde, ob der omxplayer das Video noch abspielt und wenn nicht wird es gestartet. Natürlich solltet ihr das Script mit dem richtigen Pfad und ggf. der richtigen Auflösung für euer Ausgabegerät anpassen. Anstatt des Namens eines Videos kann auch ein * (wildcard) angegeben werden, dann werden alle Videos in dem Verzeichnis nacheinander abgespielt (nach Namen geordnet). Jetzt mit CTRL-X nano beenden wollen, dabei speichern nicht vergessen und fertig. Die Zugriffsrechte anpassen, damit das Script wie eine Anwendung gestartet werden kann.

chmod 775 video.sh

Mal testen ob es schon geht.

./video.sh

Das Video sollte abgespielt werden. Im loop. Abbruch des Abspieles ist jederzeit mit CTRL-C möglich. Allerdings sehen wir noch das hässliche Terminal im Hintergrund. Dies verschwindet nach einer Minute (danke setterm). Jetzt soll dieses Script ja noch automatisch starten. Hierzu erstellen wir ein sogenanntes crontab.

crontab -e

Es geht ein Editor auf wo wir eine Zeile unten einfügen.

@reboot /pi/home/video.sh

Wenn also der RPi neu gestartet, soll das Script sofort laufen. Auch das bitte testen. Wer sich nicht sicher ist kann die Zeile sleep 20 im oberen Script aktiveren (# entfernen), dann wartet der RPi 20 Sekunden nach dem Start und ihr könnt euch schnell einloggen und mit kill -9 -1 das Videoscript abbrechen (und wieder einloggen).

sudo reboot

Wenn alles gut gegangen ist solltet ihr jetzt einen Mediaplayer haben, der automatisch die Videos abspielt. Aber was, wenn ihr noch Veränderungen habt? An die Kommandozeile kommt ihr ja nicht mehr sichtbar ran, wenn der Sicherungsbolzen nicht gesetzt wurde. Die Antwort lautet ssh. Dazu muss der RPi ans Netzwerk angeschlossen werden in dem auch euer Rechner ist. Am besten hängen die am selben Router oder Switch und es läuft DHCP. Ihr solltet die IP-Adresse von eurem RPi ja kennen. Dann Zugriff.

ssh pi@192.168.10.231

Dort könnt ihr das Script anpassen und und und…

4. Ausblick: Pseudosync von mehreren RPis

http://www.piwall.co.uk/information/10-create-your-own-gpl-movie-piwall