2 Videos gleichzeitig abspielen

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Liebe Community,
    ich bin gerade dabei Python zu lernen.
    Jetzt habe ich schon mit dem omxplayer ein Video ausgegeben, möchte aber zusätzlich noch ein zweites Video (gleichzeitig) ausgeben.

    Kann mir da jemand weiterhelfen wie ich das realisiere?

    Beste Grüße,
    Bil

    • Offizieller Beitrag

    lass mich raten:

    Code
    os.system("omxplayer bla blub")

    ? kriegst du denn auf der console 2 Instanzen vom omxplayer gestartet? wenn ja, währen threading bzw. multiprocessing module, die du dir mal anschauen solltest.

    Der Unterschied zwischen Genie und Wahnsinn definiert sich im Erfolg.

    Einmal editiert, zuletzt von dbv (12. November 2014 um 17:36)

  • Mit pyomxplayer kann man mehrere Instanzen starten.

    Zum Beispiel:

    Spoiler anzeigen

    Quelle: http://www.sundh.com/blog/2013/10/l…ssly-omxplayer/

  • Wie meinst du das?

    Die Videos übereinander gelegt abspielen? Dann kannst du mittels --layer option entscheiden welches Video oben ist:

    Code
    omxplayer --layer 0 /pfad/zum/video1          # Layer 0 = ganz unten (wird als standard verwendet)
    omxplayer --layer 1 /pfad/zum/video2          # Layer 1 = eins darüber

    Oder nebeneinander? Dann eher

    Code
    omxplayer --win 'x1 y1 x2 y2'

    Oder beides kombiniert? :)

    DON'T PANIC!

    Einmal editiert, zuletzt von joh.raspi (12. November 2014 um 19:25)

  • Erst einmal vielen Dank für die netten Antworten! :)

    Eine zweite Instanz bekomme ich leider über das Terminal nicht ans Laufen (Auch über zwei SSH-Sitzungen nicht...)
    Den pyomxplayer werde ich mir einmal anschauen, danke!

    joh.raspi:
    Nebeneinander nicht, und übereinander auch nicht wirklich :)
    Ich will ein Video immer im Hintergrund laufen lassen. Und bei Gelegenheit, über einen Trigger ein anderes Video im Vordergrund laufen lassen - beides im Vollbild.

    Die beiden Scripte dazu habe ich mir auch schon geschrieben - einzeln kann ich die starten - überhaupt kein Problem. Zusammen funktioniert das nur leider nicht, da dachte ich, dass der omxplayer unter Umständen nur einmal geöffnet sein kann...

  • Der Code für den Hintergrund-Ablauf wollte ich über einen Thread lösen.
    Zusätzlich wartet er dann testweise auf einen GPIO Input.

    Der Hintergrund wird auch so wie ich es will abgespielt - nur wartet das Script nicht auf den Button. Zur optischen Verifizierung, welches Video nun Abgespielt ist, lasse ich noch eine LED kurz aufblinken.
    Was habe ich falsch gemacht? Habe ich den Thread falsch verwendet?

    Einmal editiert, zuletzt von BillyJoel (13. November 2014 um 12:59)


  • Was habe ich falsch gemacht? Habe ich den Thread falsch verwendet?

    Ja hast du. Allein schon die doppelte Namensgebung der Funktion hintergrund() sollte das Programm zum Abbruch bringen. Außerdem ist 'thread' ein veraltetes Modul. Hier mal ein Beispiel-Code, mit dem du aufbauen kannst:

    Edit:
    ggf kann man die ''return'' Anweisung sogar weglassen in der play_background_video Funktion. Probier es am Abend zuerst mal ohne.

  • Vielen Dank, bootsmann!
    Ich schau mir das heute Abend einmal an!

    Klasse! Das funktioniert perfekt!
    Ich kann ja den Thread mit dem Attribut .start in main() starten lassen.
    Um das ganze etwas Ressourcensparender zu gestalten würde ich den Thread gerne teilweise wieder anhalten bzw beenden, sodass nur der andere Thread durchläuft.
    Wie kann ich diesen wieder beenden? Ich hab es mit .close .stop und .exit ausprobiert...

    Einmal editiert, zuletzt von BillyJoel (13. November 2014 um 14:33)


  • Nebeneinander nicht, und übereinander auch nicht wirklich :)

    Ich will ein Video immer im Hintergrund laufen lassen. Und bei Gelegenheit, über einen Trigger ein anderes Video im Vordergrund laufen lassen - beides im Vollbild.

    Also nicht gleichzeitig sondern abwechselnd :huh: Das wäre ein sehr wichtiger Unterschied und würde bedeuten das du eigentlich nur eine Instanz brauchst!

  • Naja Moment... Bitte erstmal aufklären:

    Möchtest du also Doch nicht 2 Videos Gleichzeitig abspielen, sondern doch Abwechselnd ???

    Das wäre - wie bereits erwähnt - ein völlig anderer Sachverhalt und benötigt keine mehreren Instanzen. Denn wieso sollten wir dir erklären wie du 2 Instanzen laufen lässt wenn das aber letztlich gar nicht der Fall sein wird :-/

    Ein Video zu einem bestimmten Zeitpunkt abbrechen und dann ein anderes starten, ist auch ein anderer Sachverhalt als er in der Überschrift steht - davon haste bisher auch nichts erwähnt; das einzige was du bisher sagtest war ein anderes Video über einen Taster (GPIO) abzuspielen aber zuletzt erklärtest du das nicht 2 Übereinander bzw Gleichzeitig laufen sollen


    Also bitte - ein mal aufklären bitte was genau passieren soll

  • Ohje, ja sorry Mein Fehler!
    Nein, ich will die beiden Videos auf jeden Fall übereinander abspielen. Gleichzeitig, übereinander - nicht nebeneinander.
    Da ist oben im Verlauf bei mir etwas schief gelaufen - Sorry.

    Ich möchte dann zwischen diesen beiden "Overlays" wechseln können.
    Das funktioniert in meinem Script auch schon wirklich grandios mit Hilfe der Threads.

    Zusätzlich möchte ich aber auch noch einen Thread beenden können - als Option. Und zum Verständnis der Threads wie man soetwas überhaupt handhabt. Das ist jetzt vielleicht etwas Off Topic - ich werde gleich dazu einen neuen Thread eröffnen!

    Hier gehts weiter :)
    https://www.forum-raspberrypi.de/Thread-python-thread-beenden

    Einmal editiert, zuletzt von BillyJoel (13. November 2014 um 16:07)

  • Würdest du den anderen Usern hier im Forum an deiner Lösung teilhaben lassen?


    Ich hätte eine ganz einfache Lösung, ohne zusätzliche Threads... Aber ich würd gerne erst mal sehen das Du auch was gemacht hast bzw was

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!