HTML-5 Video Player :: plyr :: mehrere Videoinstanzen?

  • Hallo zusammen,

    ich möchte bei mir den HTML-5 Video Player plyr nutzen. Ich versuche mich gerade an der Implementierung der aktuellen Version 3.3.12. Bei der Nutzung einer einzelnen Videoinstanz funktioniert das auch wie gewünscht. Sollen auf einer HTML-Seite mehrere Video Instanzen mit plyr genutzt werden, schaffe ich es aktuell nicht. Meine JavaScript Kenntnisse befinden sich noch in den Kinderschuhen. Die Dokumentation schlägt eine Lösung dafür vor, die bei mir allerdings nicht funktioniert, bzw. die ich nicht verstehe. Hat jemand einen Tipp für mich, wie ich mit der aktuellen Version mehrere Videoinstanzen auf einer Seite nutzen kann?

    Vielen Dank für Eure Unterstützung.

    Gruß Michael



  • Ich kenne diesen Player nicht, aber mir fallen beim Überfliegen deines Post 2 Dinge auf!
    1. du nutzt die id="player" in beiden Video Tags - das ist unzulässig, ID's müssen einmalig sein und dürfen nicht mehrfach verwendet werden.
    2. Du nutzt 'document.querySelectorAll('.js-player')' ... aber den verwendeten Selector '.js-player' finde ich in deinem Code nicht???

    if(!sleep)

    {$sheep++;}

  • Hallo Salibor,

    danke für die Rückmeldung. D.h. anstatt der id="player" müsste eine im Array definierte id eingesetzt werden. Sehe ich das richtig?

    Die Doku sagt folgendes:
    Setting up multiple players

    You have two choices here. You can either use a simple array loop to map the constructor:

    HTML
    const players = Array.from(document.querySelectorAll('.js-player')).map(p => new Plyr(p));

    ...or use a static method where you can pass a string selector, a NodeList or an Array of elements:

    HTML
    const players = Plyr.setup('.js-player');

    Both options will also return an array of instances in the order of they were in the DOM for the string selector or the source NodeList or Array.

    Wie lautet denn die id, die mit der Arrayschleife erzeugt wird?

    Vielen Dank für die Hilfe.

    Gruß Michael

  • Ich denke, du solltest jedem Player eine eigene ID geben... zB id="player1" und id="player2".
    Und dann versuchst du ein Array zu erzeugen, mit Elementen, die du im Code nicht definiert hast...
    document.querySelectorAll('.js-player') sucht nach Elementen mit der Klasse class="js-player" ... und du musst, damit die Videoelemente in das Array Übernommen werden, den Elementen auch diese Klasse zuweisen.
    ... <video class="js-player" controls playsinline poster="poster.jpg" id="player1"> 
    Aber wie gesagt.. ich stocher da ein bisschen in Dunkeln, denn dieser JS Player ist mir gänzlich unbekannt und ich kann nur auf Dinge hinweisen, die mir im Code auffallen.

    if(!sleep)

    {$sheep++;}

  • Hi Sailor,

    vielen Dank für Deine Hinweise - es funktioniert. Super!

    Für alle anderen die daran interesse haben anbei der Code, mit dem der Player mehrfache Videoinstanzen verabreiten kann.

    Mit dem zusätzlich eingebundenen jquery Code wird ein vorhergehendes Video automatisch gestoppt, wenn man ein neues anklickt.

    Nochmals vielen Dank für Deine Hilfe!

    Gruß Michael

  • thanks you