für meine Audiokassetten-Simulationen suchte ich nach einer Möglichkeit
die Titel, die als mp4-Videos vorliegen, in einer zufälligen Reihenfolge
von Speicherkarte oder USB-Stick abzuspielen. iTV und iRadio arbeiten
nur mit starren playlisten (PS: zum damaligen Zeitpunkt), und die ersteren Titel laufen dann oft, und
die hinteren Titel kommen nur selten mal an die Reihe. Ich fand dann den
Raspberry Pi Video Looper von Adafriut, welcher intern mit dem
omxplayer abspielt (wahlweise auch mit hello_video).
Installation und Konfiguration erwiesen sich als einfach und unkritisch und sind hier nachzulesen.
Es wird einfach nur ein fertiges raspbian (mittlerweile raspberry pi os) vorausgesetzt mit praktischerweise SSH Zugriff.
Die software wird dann bei github ausgecheckt mit:
git clone https://github.com/adafruit/pi_video_looper.git
und wie gewohnt mit:
sudo ./install.sh
installiert.
die Konfigurationsdatei liegt in /boot und wird mit:
sudo nano /boot/video_looper.ini
angepasst. Nach einer Änderung muss erfreulicherweise nicht mehr neu
installiert werden, sondern die Änderungen greifen direkt. Die
Sortierung kann von alphabetisch auf random geändert werden. Nach einem
Neustart wird bei konfiguriertem USB-stick zum Aufstecken des stick
aufgefordert, falls noch nicht geschehen. Die Titel werden indiziert und
nach einer einstellbaren Wartezeit abgespielt.
mit ein paar scripten im Ordner ~/pi_video_looper kann der player
enabled oder disabled werden sowie die Titel neu geladen werden, so dass
man auch parallel zu einer iRadio/iTV-Installation mit dem looper
experimentieren kann.
sudo ./enable.sh
sudo ./disable.sh
sudo ./reload.sh
das ein oder andere wird noch zu entdecken sein.
In meinem Demonstationsvideo spiele ich ein paar Titel nur kurz an
(Urheberrecht) und führe dann am PC per SSH das reload-script aus.
fbcp-ili9341
im zweiten Abschnitt dieses Berichtes geht es um die Darstellung der
Kassettensimulation auf einem kleinen SPI-Display und die passende
Skalierung.
Der von Adafruit benutzte omxplayer ist zwar parametrierbar um ein
SPI-Display anzusprechen, dies ist mir aber vom Video Looper aus nicht
gelungen und ich gehe davon aus dass der Looper nur über HDMI ausgeben
kann.
Da im Linux-Kernel 5 framebuffer nicht mehr unterstützt wird suchte ich eine Alternative. Und die heißt fbcp-ili9341.
die git-Seite des Projektes:
fbcp-ili9341
Das display an sich wäre mit LCD-show schnell installiert. Aber wir
brauchen ja eine Spiegelung des HDMI Monitors auf das SPI-Display.
Die Einrichtung von fbcp-ili9341 geschieht folgendermaßen:
erst müssen wir den verwendeten Chipsatz recherchieren. Es handelt sich im Beispiel um dieses Modul:
Auf dieser Seite wurde ich fündig:
Raspberry Pi Stack Exchange
wir wissen nun daß es sich hier um einen ili9486 chip handelt.
Entsprechend den Anweisungen bei git installieren wir nun erst mal die Grundsoftware fbcp-ili9341:
sudo apt-get install cmake
cd ~
git clone https://github.com/juj/fbcp-ili9341.git
cd fbcp-ili9341
mkdir build
cd build
dann bauen wir uns die cmake Parameter zusammen
cmake -DSPI_BUS_CLOCK_DIVISOR=40 -DWAVESHARE35B_ILI9486=ON -DUSE_DMA_TRANSFERS=OFF ..
Das Leerzeichen und die 2 Punkte am Ende des strings sind wichtig und
gehören dazu. Der divisor von 40 ist evtl. recht hoch gewählt. Wir
könnten später mit kleineren Werten optimieren. Den DMA-Transfer musste
ich aber abschalten, sonst fror die Wiedergabe auf dem SPI-Display ein.
nach dem Ausführen der cmake Anweisung geht es weiter mit:
make -j
lt. Anleitung kann der Treiber nun mit:
sudo ./fbcp-ili9341
erst mal testweise gestartet werden. Bei mir erschien aber kein Inhalt
auf dem display. Erst als ich den Aufruf in die rc.local eingebunden
habe:
sudo /home/pi/fbcp-ili9341/build/fbcp-ili9341 &
für meine Kassettensimulation muss ich die Bildschirmskalierung aufheben. Um neue Parameter einzugeben wird der fbcp-Dienst mit sudo pkill fbcp beendet. Jetzt kann cmake mit den geänderten Parametern wieder ausgeführt werden, danach wieder make -j ausführen und unser Treiber kann per reboot wieder gestartet werden.
cmake -DSPI_BUS_CLOCK_DIVISOR=40 -DWAVESHARE35B_ILI9486=ON -DUSE_DMA_TRANSFERS=OFF -DDISPLAY_CROPPED_INSTEAD_OF_SCALING=ON ..
Jetzt haben wir nur noch einen Bildschirmausschnitt, der vom Massstab
her aber etwas zu groß geraten ist. Abhilfe schaffen wir durch Änderung
der HDMI-Auflösung mit sudo raspi-config.
hier mit 640x480. Die Skalierung ist jetzt etwas zu klein.
Besser sieht es aus mit 720x480:
Jetzt schalten wir noch die Bildschirm-Statistik ab, weil sie störend ist.
der komplette string sieht jetzt so aus:
cmake
-DSPI_BUS_CLOCK_DIVISOR=40 -DWAVESHARE35B_ILI9486=ON
-DUSE_DMA_TRANSFERS=OFF -DDISPLAY_BREAK_ASPECT_RATIO_WHEN_SCALING=ON
-DSTATISTICS=0 ..
Die Größenverhältnisse sind jetzt realistisch und das Display kann in ein Kassetttenfach eingebaut werden.
ich habe noch eine weitere Anleitung gefunden:
SPI TFT LCD - Kernel 5
PS: Andere Displays, andere OS-Versionen oder andere Video-Auflösungen können ganz andere Einstellparameter notwendig machen
Keine Kommentare:
Kommentar veröffentlichen