Wie zeige ich Bilder an, ohne X11 zu starten?

28

Ich kann Videos mit OMXPlayer anzeigen:

omxplayer -o hdmi video.h264

Wie mache ich dasselbe für Standbilder?

Tompreston
quelle

Antworten:

34

Sie können die Befehlszeilen- fbiApp ("Framebuffer Image Viewing") verwenden. Der Framebuffer ist auch das, was oxmplayerverwendet wird. Fbi ist in den Raspbian-Repos verfügbar und sollte auch in jeder anderen GNU / Linux-Distribution verfügbar sein. es ist nicht spezifisch für den pi.

Es wird ein Dateiname oder eine Reihe von Dateinamen benötigt, und Sie können hierfür Shell-Globbing verwenden. Beispiel:

fbi *.jpg

Zeigt alle JPG-Dateien in Ihrem aktuellen Verzeichnis an. Anweisungen zum Wechseln von einem Bild in der Liste zum nächsten finden Sie im Abschnitt SCHLÜSSEL von man fbi. Sie können mit dieser -tOption auch eine automatische Diashow einrichten .

Möglicherweise erhalten Sie diesen Fehler:

ioctl VT_GETSTATE: Invalid argument (not a linux console?)

Auch wenn Sie auf einem VT angemeldet sind. Die Lösung besteht darin, das Framebuffer-Gerät anzugeben, das sein sollte:

fbi -d /dev/fb0 [...]

Wenn Sie ssh verwenden, versuchen Sie Folgendes:

fbi -T 1 [...]

Wobei "1" die Nummer Ihres aktuellen VT ist ("virtuelles Terminal", auch bekannt als "virtuelle Konsole" ctrl-alt-F[1-6]). Auf diese wird über zugegriffen . Sie müssen nicht auf dem VT angemeldet sein, auf dem das Bild angezeigt wird. Sie können sich also remote anmelden und damit Bilder auf einem Display platzieren, das an den pi angeschlossen ist (vorausgesetzt, das richtige VT wird auf dem Bildschirm angezeigt). -Tist nicht in der Manpage, wird aber mit aufgelistet fbi --help.

Beachten Sie, dass Sie dies nicht verwenden können, um das Bild auf einem Remote-Terminal anzuzeigen. Diese sind nicht mit dem Framebuffer verknüpft.

Einige andere nützliche Optionen sind -a: Zoomen der Bilder auf den Bildschirm, wenn sie zu groß sind, und --editDrehen der Bilder (ich glaube, sie werden dann mit dieser Drehung gespeichert). Überprüfen Sie, ob es stellt ein Problem dar).

Goldlöckchen
quelle
Vielen Dank. Ich habe versucht, fbi -d /dev/fb0 photo.jpgaber ich erhalte immer noch den Fehler, den Sie erwähnen. Ich bin über SSH vom Konsole-Terminal-Emulator von Kubuntu Linux auf dem Pi angemeldet. Haben Sie Ideen, wie Sie das beheben können?
Dotancohen
1
Sie haben Recht - in der Tat -d /dev/tty1funktioniert das Intuituve auch nicht, aber es wurde etwas googelt -T 1 (geöffnet über VT1), was nicht in der Manpage dokumentiert ist: / Also versuchen Sie das (vorausgesetzt, es ist das erste VT, das Sie auf dem Bildschirm sehen ); Ich werde oben etwas bearbeiten und mich hier informieren, ob es funktioniert hat.
Goldlöckchen
Vielen Dank. Interessanterweise habe ich mich bei Google umgesehen, aber die -T 1Flagge nicht gefunden. Obwohl das Verwenden des Befehls die not a linux console?Meldung tatsächlich verhindert , wird kein Bild angezeigt! Beim Durchsuchen der manSeite wird Folgendes aufgedeckt: "fbi benötigt auch Zugriff auf die Linux - Konsole (dh / dev / ttyN) für die ordnungsgemäße Verarbeitung von Switches. Dies ist offensichtlich kein Problem für Konsolenanmeldungen, sondern eine Art Pseudotty (xterm, ssh, screen) , ...) wird nicht funktionieren." Sogar das Aussteigen tmuxhat nicht geholfen. Sagen Sie, Sie haben es geschafft, Bilder über SSH ohne X anzuzeigen?
Dotancohen
Nein, Sie können den Framebuffer nicht remote anzeigen, sondern nur steuern.
Goldlöckchen
8

Arbeitende Cmdline für mich (auf diese Weise zeige ich das Bild auf dem HDMI-Monitor an, während ich per ssh mit Rpi verbunden bin):

sudo fbi -T 2 img.jpg
BALEPA
quelle
Dies funktioniert perfekt, wenn ich ein externes Mini-Display verwende, das über S-Video angeschlossen ist.
datayeah
0

Sudo fbi -T -device / dev / fb0 -a img.jpg

Funktioniert bei mir, aber keine Schlüsselkontrolle ..

user9216
quelle
1
Diese Antwort braucht ein bisschen mehr Details. Zumindest sollte die Frage geklärt werden, ob dies bei Nicht-Konsolen-Anmeldungen funktioniert - wie oben beschrieben.
Steve Robillard
@SteveRobillard warum sollte es nicht mit Nicht-Konsolen-Anmeldungen funktionieren? Es gibt nur einen Framebuffer, egal woher du dich
anmeldest
Möglicherweise funktioniert es, es wird jedoch nicht explizit auf die in den obigen Kommentaren diskutierten Probleme eingegangen. Es wäre auch hilfreich zu verdeutlichen, ob eine Schlüsselkontrolle möglich ist.
Steve Robillard
0

Da ich versucht habe, auf einen SPI-Framebuffer ohne VT zu schreiben, erscheint / dev / fb2

http://www.hardkernel.com/main/products/prdt_info.php?g_code=G142060963922

fbi -T 1 -d /dev/fb2 -noverbose my.jpg

Ich stellte fest, dass ich -T 1 verwenden musste, um fbi eine VT zu geben, es scheint egal zu sein, welche

-noverbose war, weil ich nicht möchte, dass Text angezeigt wird

Ich habe diesen Befehl in X11 ausgeführt, was den Nebeneffekt hatte, dass der X11-Puffer vorübergehend überschrieben wurde, aber die Operation und ich selbst werden X11 nicht ausführen. Es ist kein Problem, ich habe gerade das fb-Gerät getestet

Ich kümmere mich nicht wirklich um die Kontrolle, da ich einfach wieder fbi anrufe, wenn ich das nächste Bild zeigen möchte

Ich war mit openSUSE auf einem Odroid C1, aber das sollte keine Rolle spielen

simotek
quelle
0

Ich fand, dass 'sudo fbi -vt' funktioniert.

Sie müssen 'sudo' aufrufen, um fbi auszuführen, um auf die tatsächliche virtuelle Konsole zugreifen zu können, auf der 'screen' ausgeführt wird. (Und hoffentlich laufen Sie noch nicht als root ..!): D

user53739
quelle