Hi Dennis,
habe gerade sowas ähnliches gebaut. Eine genaue Anleitung wäre jetzt zu umfangreich, deshalb nur eine grobe Übersicht - aber Du findest zu jedem einzelnen Punkt jede Menge Beispiele im Internet und diesem Forum. Ich bin so vorgegangen:
- 2 Taster + 2 Widerstände an entsprechende GPIO-Ports angeschlossen
- Rasperian wheezy raufgeladen
- Voreinstellungen so, daß immer die grafische Oberfläche (X) gestartet wird
(bei mir war das nötig, weil mein Programm die Namen der Videos anzeigen soll;
wenn Du nur abspielen willst, kannst Du das auch von der Konsole tun)
- Bildschirmschoner abgeschaltet - je nachdem, ob Du von der Konsole oder X startest, sind das unterschiedliche Befehle
- Login Passworteingabe abgeschaltet
- Raspi-Bildschirmauflösung auf 1920x1080 geändert (Full HD)
- Einen Ordner "Daten" erstellt, dort meine Videos reingeladen
- Netzwerkzugang mit Samba eingerichtet und meinen Ordner "Daten" freigegeben, damit über WLAN Videos nachladen kann
- Das entsprechende Programm in Python geschrieben
- Dieses Programm als Autostart definiert
jetzt zum Python-Programm:
- Als erstes erstelle ich eine Liste der Dateien im "Daten"-Ordner (bei mir waren es mehr als 2)
- dann initialisiere ich meine beiden GPIO-Ports, an denen die Taster hängen, als Eingänge
- jetzt definiere ich eine Funktion zum Videoabspiel
1. sie killt den gerade laufenden Videoplayer
2. sie startet den Videoplayer über Systembefehl mit der entsprechenden Datei aus der Liste neu
Als Videoplayer nehme ich den omx-Player, der bei mir als einziger stabil gelaufen ist und auch die nötige
Hardwareunterstützung für FUll HD bietet. Wenn Du dabei HDMI-Video und -audio benutzt, kommt es zu verzögertem Audiostart;
den Befehl, der das verhindert, kannst Du in Python gleich mit einbinden (Dazu habe ich unlängst im Forum was geschrieben)
- als nächstes definiere ich einen Thread, der im Hintergrund die beiden GPIO-Ports, also die Taster abfragt
1. Er enthält gegen dauernde CPU-Auslastung und Tastenprellen je eine Verzögerung
2. Er guckt nach, ob der omx-Player noch läuft, wenn nicht, wird die Abspielfunktion mit Video 1 gestartet
Dieser Fall tritt ein, wenn ein Video nach Tastendruck abgelaufen ist und die Schleife wieder starten soll
3. Er guckt nach, ob eine Taste gedrückt wurde, wenn ja, wird die Abspielfunktion für das entspr. Video gestartet
Schau Dir dazu die Optionen des omx-Players an, da ist alles dabei, was Du brauchst, auch --loop
Die eine Datei rufst Du also mit der Option loop auf, die andere nicht
- Dann starte ich einmalig eine Schleife von 5 s Dauer, in der ich mit einem Tastendruck noch das Programm beenden kann
Das hat den Grund, das Du nur mit 2 Tastern das Programm schlecht beenden kannst, wenn die Videoschleife einmal läuft.
Du kommst dann an die Rechneroberfläche nicht mehr ran und so hast Du noch eine Abbruchmöglichkeit, wenn Du z.B. Dateien über USB laden willst
- dann wird über die Funktion zum Videoabspiel die Schleife erstmalig gestartet
- zum Schluss starte ich den Thread für die GPIO-Abfrage für das weitere Abspiel
Bei mir funktioniert das auf diese Weise seit einem halben Jahr im Dauerbetrieb.
Gruß Wellenreiter