Bildausgabe ohne X-Window-System mit fbi/OMXPlayer

Prof. Jürgen Plate

Bildausgabe ohne X-Window-System mit fbi/OMXPlayer

Auch, wenn keine grafische Oberfläche aktiv ist, können Bilder angezeigt werden. Um Bilder ohne Start des X-Servers anzuzeigen, kann das Kommandozeilen-Tool fbi ("framebuffer image viewing") verwendet werden. das Programm ist im Repository von Raspbian enthalten und kann mittels apt-get auf die übliche Weise installiert werden:

sudo apt-get install fbi
Im einfachsten Anwendungsfall übergibt man dem Programm die anzuzeigende Bilddatei auf der Kommandozeile. Wie jedes ordentliche Linux-Kommand kann fbi auch mehr als eine Datei als Parameter haben:
fbi *.jpg
Das obige Kommando zeigt alle JPG-Bilder, die im aktuellen Verzeichnis liegen. Mit den Tasten kann man vor und zurück blättern (siehe KEYS-Abschnitt der Manualseite). Die Option --edit erlaubt das Drehen der Bilder.

Sollte kein Bild kommen, sondern die Fehlermeldung "ioctl VT_GETSTATE: Invalid argument (not a linux console?)", obwohl Sie doch an der Konsole sitzen, ist die falsche Konsole eingestellt. Linux hat ja in der Regel mehrere Virtuelle Terminals, die mit der Tastenkombination [Ctrl]-[Alt]-[Fx] (F1 .. F6) angewählt werden können. Die Lösung besteht darin, das framebuffer device zu spezifizieren:

fbi -d /dev/fb0 ...
Wenn Sie über SSH eingeloggt sind, versuchen Sie:
fbi -T 1 ...
wobei -T 1 das erste virtuelle Terminal selektiert. Diese Option steht nicht in der Manualpage, wird aber beim Aufruf von fbi --help aufgelistet.

Damit können Sie beispielsweise auch bereits beim Bootvorgang ein Bild darstellen, den sogenannten Splashscreen. Nun brauchen Sie noch ein Bild (oder auch mehrere). Wichtig ist dabei, dass es der Auflösung des Monitors entspricht. Für die Anwendung als Splashscreen genügt die folgende Kommandozeile in der Datei /etc/rc.local.

/usr/bin/fbi -T 1 -noverbose -a -t 10 --once /etc/testbild.gif  &
Der Parameter "-a" sorgt gegebenenfalls für die Anpassung des Bildes an die Monitorgröße (autozoom). Der Parameter "-T 1" sagt dem fbi, welche virtuelle Console für die Ausgabe verwendet werden soll. Mittels --nonverbose kann das Onscreen-Menü von fbi unterdrückt werden.

Das Programm fbi kann aber noch viel mehr. Gibt man eine Dateiliste oder Jokerzeichen für den Dateiname an, wird eine Diashow dargeboten. Die Anzeigedauer für jedes Bild kann dabei ebenso festgelegt werden, wie die Bildauswahl.

# -t 30 => 30 Sekunden Pause nach jedem Bild
# -a Autozoom einschalten
# -u Reihenfolge der angezeigten Dateie zufällig wählen 
#    sonst nimmt fbi die Reihenfolge der Dateinamen
fbi -noverbose -u -a -t 30 /home/pi/Bilder/*.jpg
Nach der Anzeige des letzten Bildes geht es wieder von vorne los. Wenn Sie das nicht wollen, fügen Sie den Parameter "-1" bzw. "--once" hinzu. Letzteres eröffnet weitere Möglichkeiten. Wenn man per fbi eine Slideshow immer nur einmal durchlaufen läßt, aber diesen Aufruf in einem Shellskript ausführt, kann man mit anderen Prozessen (z. B. per scp-Upload) die Bilder austauschen oder um weitere Bilder erweitern. Nach jedem Durchlauf wird die neue Konstellation angezeigt. Das folgende Beispiel soll dies illustrieren.
#!/bin/bash
while :
  do
  fbi -noverbose -a -t 10 --once /home/pi/Bilder/*.jpg
  # hier eventuell weitere Programme aufrufen, die neue
  # Bilder erzeugen, z. B. gnuplot
  done
Will man keine Schleife machen, die alle 10 Sekunden die Ausgabe aktualisiert, kann man den fbi auch gezielt beenden und anschließend wieder neu starten, damit er die geänderten Bilder (oder ganz andere) anzeigt:
   ...
# zuerst alle PIDs suchen und in einer
# Shell-Variablen speichern:
PIDS=$(ps -C fbi -o pid=)
   
# falls gefunden (fbi laeuft noch) killen:
if [ -n "$PIDS" ]
  then
  # Signal senden: bitte beenden
  kill -HUP $PIDS > /dev/null 2>&1
  sleep 3
  # fuer hartnaeckige Faelle
  kill -9 $PIDS > /dev/null 2>&1
  fi
   ...
# hier fbi neu starten
   ...

fbi kennt noch viele weitere Steuerungsmöglichkeiten, die Sie aus dem folgenden Auszug der Manualpage entnehmen können:

-h, --help
Print usage info.
-V, --version
Print fbi version number.
--store
Write command line arguments to config file.
-l file, --list file
Read image filelist from file.
-P, --text
Enable textreading mode.
-a, --autozoom
Enable autozoom.
--(no)autoup
Like autozoom, but scale up only.
--(no)autodown
Like autozoom, but scale down only.
--(no)fitwidth
Use width only for autoscaling.
-v, --(no)verbose
Be verbose: enable status line on the bottom of the screen.
-u, --(no)random
Randomize the order of the filenames.
--(no)comments
Display comment tags (if present) instead of the filename.
-e, --(no)edit
Enable editing commands.
--(no)backup
Create backup files (when editing images).
-p, --(no)preserve
Preserve timestamps (when editing images).
--(no)readahead
Read ahead images into cache.
--cachemem size
Image cache size in megabytes (MB).
--blend time
Image blend time in miliseconds.
-T n, --vt n
Start on virtual console n.
-s steps, --scroll steps
Set scroll steps in pixels (default is 50).
-t sec, --timeout sec
Load next image after sec seconds without any keypress (i.e. slideshow).
-1, --(no)once
Don't loop (only use with -t).
-f <arg>, --font <arg>
Set font. This <arg> can be anything fontconfig accepts.
-d /dev/fbN, --device /dev/fbN
Use /dev/fbN device framebuffer. Default is the one your virtual console is mapped to.
-m videomode, --mode videomode
Name of the video mode to use (video mode must be listed in/etc/fb.modes). Default is not to change the video mode.

Das Tool "Fbida" verbindet zwei Programme, "fbi" und "ida". "fbi" zeigt Bilder auf der Console ohne X und "ida" läuft auf dem X-Window-System. Sie teilen sich sowieso gemeinsame Bild-Dekodierungs-Bibliotheken, so hat der Entwickler von "fbida" naheliegenderweise die beiden Programme verschmolzen. Auch dieses Paket ist im Standard-Repository enthalten und kann per "apt-get" installiert werden.

Tipps:

Videos anzeigen mit OMXPlayer

Ähnlich einfach wie der fbi arbeitet der . Um ein MP4-Video zu zeigen, genügt der Aufruf

omxplayer -b video.mp4 
Die Option -b löscht den Bildschirm ("blank"), sonst sieht man eventuell noch Terminal-Texte etc. Mittels --loop kann man das Vidoe in einer Endlosschleife laufen lassen. Ja nach Orientierung des Displays kann mit der Option --orientation [winkel] das Bild gedreht werden. Für den Winkel sind die Werte 0, 90, 180 und 270 möglich.


Copyright © Hochschule München, FK 04, Prof. Jürgen Plate
Letzte Aktualisierung: