Ich wollte eine GUI-Anwendung für den Raspi schreiben, die per OMXPlayer verschiedene Videos startet. Über die Aufruf-Parameter (--window) für den OMXPlayer kann ich dafür sorgen, dass, während das Video läuft, sich die Videowiedergabe nicht über den gesamten Bildschirm erstreckt, und damit die Steuerbuttons der Anwendung (Stop, Vor, Zurück usw.) sichbar bleiben. Blöderweise scheint der OMXPlayer, während ein Video läuft, sämtliche Events an sich zu reissen, so dass keinerlei Maus- oder Touch-"Klick"-Events an meine App im Hintergrund durchkommen. Ich habe auch das App-Window komplett klein genug gemacht, so dass es quasi neben dem laufenden Video liegt. Aber die App ist wie tot, reagiert erst dann wieder, wenn das Video durch ist. Auch innerhalb der App per Timer ausgeführte Kommandos, diese in den Vordergrund zu bringen, helfen nicht. Kann man das mit irgendwelchen (mir nicht bekannten) Aufruf-Parametrn für den OMXPlayer lösen? Danke für Tips.
:
Bearbeitet durch User
Wie ist die Anwendung programmiert? Klingt so, als würde dein Player als Funktion laufen und das Programm erst weiterlaufen, sobald die Funktion beendet wurde. Stichwort Threading.
Chris M. schrieb: > Wie ist die Anwendung programmiert? Klingt so, als würde dein > Player als > Funktion laufen und das Programm erst weiterlaufen, sobald die Funktion > beendet wurde. > > Stichwort Threading. Die Anwendung ist in Xojo (früher RealBasic / RealStudio) geschrieben. Der OMXPlayer wird mittels Shell-Kommando gestartet, das sieht in Etwa so aus: dim s as new shell s.mode=1 //async (non blocking) mode s.execute "omxplayer --win 0 0 1920 900 home/pi/Documents/video.mp4" Damit startet der Player. Der OMXPlayer reagiert auf Tasten, die bei einem Touchscreen natürlich nicht existieren. Deshalb will ich bei Tastendruck auf die Buttons in meiner App weitere Shell-Kommados auslösen (mit xdotool), die Tastatureingaben simulieren. Allerdings kommen die Tipps auf meine Buttons garnicht erst an, so lange das aktuelle Video läuft ...
:
Bearbeitet durch User
Kommt ein print an die Console direkt nach dem Aufruf von
1 | dim s as new shell |
2 | s.mode=1 //async (non blocking) mode |
3 | s.execute "omxplayer --win 0 0 1920 900 home/pi/Documents/video.mp4" |
sofort durch? Oder wird nichts anch diesem Code ausgeführt bis das Vid zuende ist? Falls es nicht durchkommt, bist du wohl im "synchronous mode" aber du brauchst einen "asynchronous mode", wie hier in der Doku der .execute Funktion erwähnt: [quote] If you are in Synchronous mode (mode 0), the Result property will contain the results. The Command parameter is the path/name of the executable to run and the second parameter contains the arguments to pass to the executable. You can specify the executable without passing a second parameter. On Windows, if the path/name of the executable contains spaces and you want to pass arguments to it, it is safer to separate the two. If you are in Asynchronous mode (mode 1 or 2), use the Execute method for the first command to be executed. In Interactive mode (mode 2), you can then later use Write or WriteLine to send data or new commands to the Shell. [/quote]
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.