Beispiel für Brightcove Spieler: Rückspulen mit einem benutzerdefinierten Ereignis auslösen

Überblick

Obwohl der Brightcove Player eine Reihe von sofort einsatzbereiten Ereignissen bereitstellt, möchten Sie möglicherweise Ihre eigenen benutzerdefinierten Ereignisse verwenden, um Abhängigkeiten zwischen DOM-Objekten und Ereignis-Listener zu entkoppeln und zu beseitigen. Dieses ereignisgesteuerte Modell ist eine architektonische Wahl, die Sie möglicherweise in Betracht ziehen möchten.

In diesem Beispiel wird der Steuerleiste eine Zurück-Schaltfläche hinzugefügt. Wenn der Benutzer auf die Zurück-Schaltfläche klickt, wird ein benutzerdefiniertes Ereignis zusammen mit der Zeit zum Zurückspulen ausgelöst. Der benutzerdefinierte Ereignis-Listener findet die aktuelle Videoposition und spult das Video zurück.

Beispiel eines Spielers

Starten Sie die Videowiedergabe. Klicken Sie dann auf den Zurück-Button:

Videotaste zurückspulen

Sie sollten sehen, dass die Videowiedergabe 5 Sekunden zurückgeht.

Siehe das Pen 18150-Trigger-rewind-custom-event von Brightcove Learning Services (@bcls1969) auf CodePen.

Quellcode

Sehen Sie sich die Komplettlösung auf GitHub an.

CodePen verwenden

Hier sind einige Tipps zur effektiven Verwendung des obigen CodePen:

  • Schalten Sie die tatsächliche Anzeige des Players um, indem Sie auf klicken Result Taste.
  • Drücke den HTML/CSS/JS Schaltflächen zur Anzeige EINES der Codetypen.
  • Später in diesem Dokument werden die Logik, der Ablauf und das Styling der Anwendung in der Player/HTML-Konfiguration, im Anwendungsfluss und im Anwendungsstyling diskutiert Abschnitte. Der beste Weg, um den Informationen in diesen Abschnitten zu folgen, besteht darin:
    1. Drücke den EDIT ON CODEPEN Klicken Sie im CodePen auf die Schaltfläche und halten Sie den Code in einem Browser / einer Browser-Registerkarte bereit.
    2. Passen Sie in CodePen an, welcher Code angezeigt werden soll. Sie können die Breite verschiedener CodeAbschnitte in CodePen ändern.
    3. Sieh den Player-/HTML-Konfiguration , Bewerbungsablauf und/oder Bewerbungsstyling Abschnitte in einem anderen Browser/Browser-Tab. Sie können nun den Codeerklärungen folgen und gleichzeitig den Code anzeigen.

Entwicklungs-Sequenz

Hier ist die empfohlene Entwicklungssequenz:

  1. Verwenden Sie die In-Page-Embed-Player-Implementierung, um die Funktionalität Ihres Players, Plugins und CSS zu testen (falls CSS benötigt wird)
  2. Legen Sie JavaScript und CSS des Plugins in separate Dateien zum lokalen Testen
  3. Stellen Sie den Plugin-Code und das CSS auf Ihrem Server bereit, sobald Sie Fehler herausgefunden haben
  4. Benutze Studio, um das Plugin und das CSS deinem Player hinzuzufügen
  5. Ersetzen Sie die In-Page-Embed-Player-Implementierung, wenn Sie feststellen, dass die Iframe-Implementierung besser passt (im nächsten Abschnitt beschrieben)

Weitere Informationen zu diesen Schritten finden Sie in der Schritt-für-Schritt-Anleitung: Leitfaden zur Entwicklung von Plugins

iframe oder In-Page einbetten

Bei der Entwicklung von Verbesserungen für den Brightcove Player müssen Sie entscheiden, ob der Code am besten für die Iframe- oder In-Page-Einbettungsimplementierung geeignet ist. Die Best Practice-Empfehlung besteht darin, ein Plugin zur Verwendung mit einer Iframe-Implementierung zu erstellen. Die Vorteile der Verwendung des iFrame-Players sind:

  • Keine Kollisionen mit vorhandenem JavaScript und/oder CSS
  • Reaktionsschnell
  • Der iframe erleichtert die Verwendung in Social-Media-Apps (oder wann immer das Video in andere Apps „reisen“ muss)

Obwohl die Integration des In-Page-Einbettungsplayers komplexer sein kann, planen Sie Ihren Code in dieser Implementierung manchmal. Um zu verallgemeinern, ist dieser Ansatz am besten, wenn die enthaltende Seite mit dem Spieler kommunizieren muss. Im Einzelnen sind hier einige Beispiele:

  • Der Code auf der enthaltenden Seite muss Spielerereignisse abhören und darauf reagieren
  • Der Player verwendet Stile von der enthaltenden Seite
  • Der Iframe führt dazu, dass die App-Logik fehlschlägt, wie eine Weiterleitung von der enthaltenen Seite

Selbst wenn Ihre endgültige Implementierung den Iframe-Code nicht verwendet, können Sie den In-Page-Einbettungscode trotzdem mit einem Plugin für Ihr JavaScript und einer separaten Datei für Ihr CSS verwenden. Dies kapselt Ihre Logik, sodass Sie sie problemlos in mehreren Spielern verwenden können.

Verwendete API/Plugin-Ressourcen

API-Methoden API-Ereignisse
Spacer.appendChild () Auslöser
currentTime () auf

Player-/HTML-Konfiguration

Dieser Abschnitt beschreibt jede spezielle Konfiguration, die während der Spielererstellung erforderlich ist. Darüber hinaus werden andere HTML-Elemente beschrieben, die der Seite über den In-Page-Einbettungsplayer-Implementierungscode hinaus hinzugefügt werden müssen.

Player-Konfiguration

Für den Brightcove Player, den Sie für dieses Beispiel erstellen, ist keine spezielle Konfiguration erforderlich.

Anderes HTML

Denken Sie daran, das id Attribut dem video-js Tag im Einbettungscode des Spielers hinzuzufügen.

<video-js id="myPlayerID"
...

Ablauf der Anwendung

Die grundlegende Logik hinter dieser Anwendung lautet:

  • Erstellen Sie ein neues Element im DOM für die Schaltfläche „Zurückspulen“.
  • Fügen Sie die Schaltfläche „Zurückspulen“ zur Spieler-Steuerleiste hinzu.
  • Hören Sie darauf, wenn ein Benutzer auf die Schaltfläche „Zurückspulen“ klickt. Wenn Sie darauf klicken, lösen Sie Ihr benutzerdefiniertes Ereignis mit Daten aus.
  • Hören Sie auf das benutzerdefinierte Ereignis mit Daten und spulen Sie die Videowiedergabe basierend auf den definierten Daten zurück.

Elemente zum DOM hinzufügen

Finden Sie den Code, der mit der Bezeichnung versehen ist:

// +++ Add elements to the DOM +++

Erstellen Sie ein neues <div> Element im DOM und weisen Sie ein id Attribut mit dem Wert backButton zu. Erstellen Sie ein neues <img> Element im DOM und weisen Sie das src Attribut mit der URL Ihrer Rückspulschaltfläche zu.

Schaltfläche „Zurückspulen“ zur Steuerleiste hinzufügen

Finden Sie den Code, der mit der Bezeichnung versehen ist:

// +++ Add rewind button to the control bar +++

Holen Sie sich das spacer Element in die Steuerleiste und fügen Sie die Elemente der Rücklaufschaltfläche hinzu.

Hören Sie auf die Rückspultaste

Finden Sie den Code, der mit der Bezeichnung versehen ist:

// +++ Listen for the rewind button +++

Fügen Sie dem backButton Element einen Listener für das onclick Ereignis hinzu. Wenn Sie darauf klicken, lösen Sie Ihr benutzerdefiniertes Ereignis mit Daten aus.

Hören Sie auf Rückspul-Event

Finden Sie den Code, der mit der Bezeichnung versehen ist:

// +++ Listen for rewind event +++

Hören Sie auf Ihre individuelle Veranstaltung mit Daten. Spulen Sie bei Auslösung die Videowiedergabe basierend auf dem im Code rewindAmt definierten zurück.

Styling der Anwendung

CSS wird verwendet, um die Größe des Players zu vergrößern und die Rückspultaste in der Steuerleiste zu positionieren und zu skalieren.

Plugin-Code

Normalerweise sind bei der Umwandlung des JavaScript in ein Brightcove Player-Plugin nominelle Änderungen erforderlich. Eine erforderliche Änderung besteht darin, die Standardverwendung der ready() Methode durch den Code zu ersetzen, der ein Plugin definiert.

Hier ist der sehr häufig verwendete Start zu JavaScript-Code, der mit dem Player funktioniert:

videojs.getPlayer('myPlayerID').ready(function() {
  var myPlayer = this;
  ...
});

Sie ändern die erste Zeile, um die Standardsyntax zum Starten eines Brightcove Player-Plugins zu verwenden:

videojs.registerPlugin('pluginName', function(options) {
  var myPlayer = this;
  ...
});

Wie bereits erwähnt, können Sie den JavaScript-Code des Plugins im entsprechenden GitHub Repo dieses Dokuments sehen: custom-event.js.

Benutzerdefinierte Ereignisse verstehen

Benutzerdefinierte Ereignisse ermöglichen es Ihnen, Abhängigkeiten zwischen DOM-Objekten und Ereignis-Listener zu entkoppeln und zu beseitigen und ein ereignisgesteuertes Architekturmodell zu erstellen.

Versand

Verwenden Sie die trigger() Methode wie folgt, um ein benutzerdefiniertes Ereignis auszutrennen:

// trigger a custom event
myPlayer.trigger('eventName');
or
// trigger a custom event with data
myPlayer.trigger('eventName', {data: 'some data'});

Weitere Informationen zum Auslösen benutzerdefinierter Ereignisse finden Sie im Player-API-Index.

In diesem Beispiel führt der Code folgendes aus:

  • Versendet ein benutzerdefiniertes Ereignis mit dem Namen rewind
  • Sendet ein Datenobjekt mit einem Namen amount und einem Wert von 5- Sie sehen im JavaScript-Code, wo dieser Wert festgelegt ist
// trigger a custom event with data
myPlayer.trigger('rewind', {'amount': rewindAmount});

Hör zu

Um auf ein benutzerdefiniertes Ereignis zu hören, können Sie die on() Methode wie folgt verwenden:

// listen for a custom event
player.on('eventName', function(evt){});
or
// listen for a custom event with data
player.on('eventName', function(evt,data){});

Sie können die one() Methode auch verwenden, wenn der Ereignis-Listener nur einmal ausgelöst und dann entfernt werden soll. Weitere Informationen zum Abhören von Ereignissen finden Sie im Player-API-Index.

In diesem Beispiel führt der Code folgendes aus:

  • Hört auf ein benutzerdefiniertes Ereignis mit dem Namen rewind
  • Übergibt das Ereignis- und Datenobjekte in eine Funktion
// listen for a custom event with data
 myPlayer.on('rewind',function(evt,data){
});

Wenn Sie die Ereignis- und Datenobjekte in der Konsole anzeigen, sollte es wie folgt aussehen:

Benutzerdefinierte Ereignisdaten
Benutzerdefinierte Ereignisdaten