Brightcove Player 7-Migrationsanleitung

In diesem Thema erfahren Sie mehr über die neuen Verbesserungen und Features in der Hauptversion von Brightcove Player 7.

Einleitung

Version 7 ist die neueste Hauptversion von Brightcove Player. Zu den Änderungen und Verbesserungen des Players gehören die in Video.js 8 und VHS (Video.js HTTP Streaming) 3.

Zu den Funktionen und Verbesserungen gehören:

  • Entwickelt für die meisten modernen Browser
  • ES6 als Standard
  • Neue Viewability-Ereignisse
  • Verbesserter Algorithmus für die adaptive Bitrate (ABR)
  • Unterstützung von Content Protection (DRM) ohne Plugin
  • Unterstützung für IE11 wurde entfernt

Das Designteam arbeitet an weiteren UX-Änderungen für Player 7, die in naher Zukunft eingeführt werden. Dazu gehören:

  • Neues Standardlayout
  • Verbessertes Spielerverhalten

Der Brightcove-Player bleibt der branchenführende Webvideoplayer. Einen Überblick finden Sie im Abschnitt Was macht einen guten Online-Videoplayer aus? Ankündigung des Blogposts Player v7 von Brightcove.

Upgrade auf Version 7

Brightcove Player 7.0.0 ist jetzt verfügbar. Bestehende Player wurden noch nicht automatisch auf diese Version aktualisiert, aber Sie können Ihren Player im Studio aktualisieren.

  1. Navigieren Sie in Video Cloud Studio zum Player-Modul.
  2. Erstellen Sie einen neuen Player oder öffnen Sie einen bestehenden Player.

    Spielerinformationen
  3. Scrollen Sie im Abschnitt Spielerinformationen nach unten zu Spielerversion.
    1. Stellen Sie sicher, dass der Aktualisierungsmodus auf Automatisch eingestellt ist. Einzelheiten finden Sie im Abschnitt Einschränkungen .
    2. Klicken Sie auf Upgrade auf Brightcove Player 7.
    3. Klicken Sie auf Speichern.
    4. Klicken Sie auf Veröffentlichen & Einbetten.
    Upgrade auf Player 7
  4. Klicken Sie auf Änderungen veröffentlichen und dann auf Schließen.

Browser- und Geräteunterstützung

Aktualisierte Systemanforderungen

Die Systemanforderungen für Brightcove Player 7 lauten wie folgt:

Browser/Engine Plattformen/OS Minimale Version
Chrom Windows, macOS, Android, iPadOS [1], iOS [1] Aktuelle und zwei frühere Hauptversionen
Kante Windows, macOS, Android, iPadOS [1], iOS [1] Aktuelle und zwei frühere Hauptversionen
Firefox Windows, macOS, Android, iPadOS [1], iOS [1] Aktuelle und zwei frühere Hauptversionen
Safari macOS, iPadOS, iOS Aktuelle und zwei frühere Hauptversionen

Die folgenden Erläuterungen beziehen sich auf die obige Tabelle.

[1 ] Auf iPadOS und iOS ist nur die Safari-Browser-Engine erlaubt. Alternative Browser wie Chrome, Firefox und Edge verwenden Safari unter der Haube. Ihr Verhalten entspricht nicht den echten Versionen dieser Browser.

Internet Explorer 11

Ab dem 15. Juni 2021 und Brightcove Player 6.56.0 wird IE11 nicht mehr offiziell unterstützt. Ab diesem Zeitpunkt haben wir uns bemüht, den IE-Browser nicht mehr aktiv zu unterbrechen. Dies ist bei Spieler 7 nicht der Fall.

Mit Brightcove Player 7.0.0 wurde der gesamte Code für die Unterstützung von IE11 entfernt, und der Player funktioniert nicht in IE.

Wenn ein Betrachter die Wiedergabe im IE versucht, funktioniert der Player nicht. Es wird keine Meldung "Nicht unterstützter Browser" angezeigt, da IE11 das Skript nicht analysieren kann, um die Meldung anzuzeigen.

Jeder Abschnitt, der eine Änderung darstellt, ist mit einer Abkürzung in Klammern versehen, die angibt, welche Hauptkomponente(n) davon betroffen sind:

  • BCP7: Diese Änderung gilt für Brightcove Player 7
  • VJS8: Diese Änderung gilt für Video.js 8
  • VHS3: Diese Änderung gilt für Video.js HTTP Streaming 3

Was dieser Leitfaden nicht abdeckt

Beachten Sie, dass dieses Handbuch nur die benutzerseitigen Änderungen am Brightcove Player 7 behandelt.

Sie deckt nicht die bedeutenden internen Änderungen in Bezug auf die Codeorganisation ab, die unseren Ingenieuren die zukünftige Entwicklung des Players erleichtern sollen. Wir sind sehr stolz darauf, dass der Brightcove-Player auch nach fast einem Jahrzehnt kontinuierlicher Entwicklung der branchenführende Webvideoplayer ist.

Funktionen und Erweiterungen

Funktionen und Erweiterungen beziehen sich auf neue Funktionen des Players oder deutlich veränderte oder verbesserte Funktionen und Verhaltensweisen.

ES6 standardmäßig

Änderung gilt für VJS8,VHS3,BCP7

Der Großteil von Brightcove Player 7 wird nicht mehr in ES5-Code umgesetzt - einschließlich Video.js und VHS.

Der meiste Code ist jetzt transpiliert, um moderne Browser-Engines zu unterstützen. Eines der schönen Ergebnisse ist, dass wir die Gesamtpaketgröße unseres Codes um 3-5 % reduzieren konnten.

Überlegungen zur Migration

Code, der versucht, native ES6-Klassen zu erben, aber letztendlich in ES5 transpiliert wird, funktioniert nicht mehr mit Video.js 8 und Brightcove Player 7. Diese Inkompatibilität wird im Allgemeinen durch einen Fehler mit einer Meldung wie dieser angezeigt:

TypeError: Class constructor ___ cannot be invoked without 'new'

Dies liegt daran, dass Transpilationstools wie Babel Klassen in einfache JavaScript-Funktionen umwandeln und versuchen, sie aufzurufen apply() oder call() zu aktivieren. Diese Methoden gibt es für Funktionen, aber nicht für ES6-Klassen.

Die einzige Lösung besteht darin, ES6-Klassen für die Verwendung mit Video.js 8 und Brightcove Player 7 nicht in ES5 zu transpilieren.

Viewability-Ereignisse und -Verhaltensweisen

Änderung gilt für BCP7

Die Sichtbarkeit eines Players ist sowohl für die Integration von Werbung als auch für einige UI-Behandlungen wie schwebende Player von großer Bedeutung. In diesem Zusammenhang definieren wir "Sichtbarkeit" als den Prozentsatz eines Players, der zu einem bestimmten Zeitpunkt im Browserfenster sichtbar ist. Ein Player gilt als "sichtbar", wenn sich ein bestimmter Prozentsatz des Players im Ansichtsfenster befindet.

Brightcove Player 7 führt DOM-Ereignisse zur Nachverfolgung der Sichtbarkeit sowie einige nützliche Verhaltensweisen ein, die vom Sichtbarkeitsstatus des Players abhängen.

Player-Konfiguration

Die Sichtbarkeitsereignisse und das Verhalten des Players können in der JSON-Konfiguration des Players konfiguriert werden. Alle Konfigurationen sind unter der viewability Unterkunft verfügbar.

Eigentum Beschreibung Typ Standardwert
viewability_threshold Eine Zahl zwischen 0 und, die den Teil des Spielers 1 darstellt, der sich im Viewport befinden muss, damit er als „sichtbar“ gilt. number 0.6
min_duration_for_viewable_impression Stellt die Anzahl der Millisekunden dar, die nach Beginn der Anzeigenwiedergabe gewartet werden soll, bevor auf eine sichtbare Impression getestet wird.

In der Standardeinstellung bedeutet dies, dass der Player nach 2 Sekunden Anzeigenwiedergabe meldet, ob die Anzeigenimpressionen anhand eines viewable-ad-impression Events sichtbar waren.
number 2000
threshold_percentage_increment Das Ausmaß der Änderung der Sichtbarkeit, die zwischen den viewable-percent-change Ereignissen erforderlich ist.

Standardmäßig 5 bedeutet dieser Wert, dass viewable-percent-change Ereignisse nur ausgelöst werden, wenn sich die Sichtbarkeit des Spielers um 5% geändert hat (z. B. von 45% auf 50%).

Es wird empfohlen, diese Einstellung nicht weiter zu verfeinern, da dadurch eine Vielzahl von Ereignissen ausgelöst wird.
number 5
delay_autoplay_if_not_viewable Interagiert nur mit Playern, die für Autoplay konfiguriert sind.

In true diesem Fall verzögert der Player seinen Wiedergabeversuch, bis der Player sichtbar ist.

In false diesem Fall versucht der Player die Wiedergabe unabhängig von seiner Sichtbarkeit. Dies ist das Standardverhalten eines Autoplay-Players..
boolean false
delay_autoplay_on_mobile_only In true diesem Fall wird die verzögerte Autoplay-Funktion nur in mobilen Umgebungen (iOS oder Android) aktiviert.

HINWEIS: In diesem Fall werden Tablets als mobile Umgebungen betrachtet.
boolean true
pause_when_not_viewable Wenn true, unterbricht der Player die Wiedergabe, wenn sie nicht sichtbar wird. Sobald der Player wieder sichtbar ist, wird die Wiedergabe fortgesetzt.

Wenn false, schaltet der Spieler nicht zwischen Pause und Spiel um viewable-change. Dies ist das Standardverhalten eines Spielers..
boolean false

Beispiel

Hier ist das JSON für eine Playerkonfiguration, die die Anzeigefähigkeit einschließt:

{
  ... other properties ...
  "viewability": {
    "viewability_threshold": 0.7,
    "pause_when_not_viewable": true
  }
}

In diesem Beispiel wird die Wiedergabe angehalten, wenn weniger als 70 % des Players im Ansichtsfenster des Browsers zu sehen sind, da der Benutzer den Player durch einen Bildlauf außer Sichtweite bringt. Die Wiedergabe wird fortgesetzt, wenn der Player wieder sichtbar wird.

Viewability-Ereignisse

Die Nutzer können sich in drei neue Ereignisse einklinken, die sich auf die Sichtbarkeit beziehen.

  • viewable-change

    Dieses Ereignis wird ausgelöst, wenn der Player in einen sichtbaren Zustand übergeht oder diesen verlässt.

    Eigentum Typ Beschreibung
    viewable boolescher Wert Stellt dar, ob sich der Player in einem sichtbaren Zustand befindet oder nicht
    viewablePercent Zahl Stellt den Prozentsatz des Players dar, der sich derzeit im Ansichtsfenster befindet
    Beispiel
    player.on('viewable-change', (e) => {
      if (e.viewable) {
        player.log('the player is viewable!');
      } else {
        player.log('the player is not viewable!');
      }
    });

  • viewable-percent-change

    Dieses Ereignis wird ausgelöst, wenn sich der sichtbare Prozentsatz des Players ändert.

    Eigentum Typ Beschreibung
    viewable boolescher Wert Stellt dar, ob sich der Player in einem sichtbaren Zustand befindet oder nicht
    viewablePercent Zahl Stellt den Prozentsatz des Players dar, der sich derzeit im Ansichtsfenster befindet
    Beispiel
    player.on('viewable-percent-change', (e) => {
      player.log(`the player is ${e.viewablePercent}% viewable!`);
    });

  • viewable-ad-impression

    Dieses Ereignis wird ausgelöst, wenn eine sichtbare Anzeigenimpression gemessen wird. Sie wird nicht außerhalb des Kontextes der Anzeigenwiedergabe ausgelöst.

    Mit anderen Worten, sobald eine Anzeige gestartet und für die angegebene Anzahl von Millisekunden abgespielt wurde, min_duration_for_viewable_impression wobei der Player sichtbar ist, wird dieses Ereignis ausgelöst.

    Bei diesem Ereignis werden keine zusätzlichen Daten übermittelt.

DRM-Unterstützung standardmäßig

Änderung gilt für BCP7

Das vorhandene DRM-Plugin wird mit Brightcove Player 7 nicht mehr benötigt. Der Player unterstützt DRM sofort nach dem Auspacken in der gleichen Weise wie frühere Versionen.

Dies erleichtert die Konfiguration von DRM, da der DRM-Schutz für Ihre Medieninhalte einfach aktiviert werden kann, ohne dass Sie daran denken müssen, ihn auch auf Ihren Playern zu aktivieren.

Eine Migration ist nicht erforderlich. Player, die mit dem DRM-Plugin und Player 7 konfiguriert sind, werden nicht beschädigt.

Verbesserungen bei Timeout-Fehlern

Änderung gilt für BCP7

Brightcove Player unterstützt seit langem einen speziellen Fehler, der als Timeout bezeichnet wird. Dies bedeutet in der Regel, dass der Player die Wiedergabe von Inhalten erwartet (d. h. er ist nicht angehalten), aber die Wiedergabe wird nicht fortgesetzt. In der Regel bedeutet dies, dass der Inhalt aufgrund von Netzwerkproblemen oder einer anderen Bedingung nicht gepuffert werden kann, weil beispielsweise die TTL für eine Manifest-URL abgelaufen ist.

Obwohl wir dies als "Fehler" bezeichnen, unterscheidet er sich von den meisten Fehlern dadurch, dass er wiederherstellbar ist. Wenn sich beispielsweise die Netzbedingungen verbessern und die Pufferung der Inhalte wiederhergestellt ist, kann die Wiedergabe fortgesetzt werden.

Bei Player 6 wird das modale Fehlerdialogfeld nicht geschlossen, wenn die Wiedergabe fortgesetzt wird, was zu einer schlechten Darstellung führt.

Das modale Dialogfeld für die Zeitüberschreitung des Players gibt dem Betrachter die Möglichkeit, es zu schließen oder ein Neuladen der Videoquelle über die Wiedergabe-API auszulösen, damit neue Manifest-URLs abgerufen werden. Im letzteren Fall behält der Player die Abspielposition für VOD-Streams bei. Das ist zwar nicht ideal, aber immer noch besser als ein nicht funktionierender Player.

Nicht unterstützte Browser UI

Änderung gilt für BCP7

Wenn Player 6 in einem nicht unterstützten Browser geladen wird, wird wahrscheinlich ein Fehler ausgelöst und in der Browserkonsole protokolliert, aber dem Betrachter wird nichts angezeigt.

Player 7 verfügt über eine neue Benutzeroberfläche, die diese Fälle deutlicher macht. Wenn der Player in einem nicht unterstützten Browser geladen wird, wird eine Meldung ähnlich der folgenden angezeigt:

Meldung eines nicht unterstützten Browsers

Es gibt zwei Fälle, in denen Sie diesen Fehler erwarten können:

  • Nicht unterstützte Browser wie Internet Explorer
  • Während des Player-Initialisierungsprozesses wurde ein nicht abgefangener JavaScript-Fehler ausgelöst

Wenn Sie diese Meldung sehen und Ihr Browser unterstützt werden sollte, überprüfen Sie die Browserkonsole. Wenn der Fehler von Ihrem eigenen Code herrührt, können Sie ihn möglicherweise beheben. Andernfalls wenden Sie sich an den Brightcove-Kundensupport , um Hilfe zu erhalten.

Umbenennung von Analytics Player-Ereignissen

Änderung gilt für BCP7

Alte

Vor Version 7 löste der Player Ereignisse aus und analytics_request analytics_request_* Ereignisse * standen für den Namen des Analytics-Beacon-Ereignisses. Wenn der Spieler beispielsweise ein Signal sendete, das ein video_engagement Ereignis darstellt, löste der Spieler beide aus:

  • analytics_request
  • analytics_request_video_engagement

Neu

Um bei der Benennung von Ereignissen konsistent zu sein, sollten wir Ereignisnamen mit Kleinbuchstaben verwenden. Wenn wir über die kleinen HTTP-Anfragen sprechen, die an unsere Datenerfassungs-API gesendet werden, bezeichnen wir sie als "Beacons", also verwenden wir auch diese Terminologie.

Wir haben diese Ereignisse wie folgt umbenannt: (wobei das für den Namen des Analytics-Beacon-Ereignisses * steht und _ ersetzt durch -)

  • analytics-beacon
  • analytics-beacon-*

Beispiel

Wenn du wissen möchtest, wann der Spieler ein video_engagement Event Beacon gesendet hat, könntest du so etwas tun:

player.on('analytics-beacon-video-engagement', (e) => {
  // The event object in the callback contains a `params` object, which
  // has a JavaScript object representation of the query params that
  // were sent to the Data Collection API.
  player.log('video_engagement beacon sent!', e.params);
});

play_request Analytics-Event

Änderung gilt für BCP7

Brightcove Player 7 sendet nur dann ein play_request Signal, wenn die Wiedergabe zum ersten Mal angefordert wird — entweder durch Drücken der Play-Taste durch einen Betrachter oder durch eine Art von Autoplay (d. h. durch Aufrufen der play() Methode).

In früheren Versionen haben wir gesendet play_request Beacons, wann immer es einen Spieler gab play Fall. Dies war immer dann der Fall, wenn die Wiedergabe von Inhalten angefordert wurde, z. B. wenn ein Betrachter pausierte und wieder fortfuhr oder wenn eine clientseitige Werbung endete und zur Wiedergabe von Inhalten zurückkehrte.

Die Produkt- und Datenorganisationen von Brightcove haben dies erörtert und festgestellt, dass der Zweck dieses Ereignisses darin besteht, die erste Anforderung für den Beginn der Wiedergabe zu verfolgen. Das bedeutet, dass jeder, der die play_request-Metriken verfolgt, nach dem Upgrade auf Player 7 wahrscheinlich einen Rückgang dieser Zahl feststellen wird. Sollte dies der Fall sein, ist dies kein Hinweis auf ein Problem.

video_complete Spieler-Event

Änderung gilt für BCP7

Video Cloud Analytics verwendet das video_complete Ereignis nicht und es wurde aus BCP7 entfernt. Das bedeutet Folgendes:

  • Keine analytics-beacon-video-complete Veranstaltung
  • Kein analytics-beacon Ereignis mit params.event gesetzt auf video_complete

Brightcove-Namensraum

Änderung gilt für BCP7

Eine Quelle der Verwirrung für unsere Benutzer war die Vielzahl von Kerneigenschaften und -methoden in verschiedenen Objekten, die mit jeder Instanz von Brightcove Player verbunden sind. Einige Beispiele hierfür sind bcAnalytics und catalog.

Mit Player 7 werden wir damit beginnen, diese unterschiedlichen Funktionen in einem neuen Kern-Namensraum zu konsolidieren:

  • brightcove

Dieser Namespace ist der zentrale Ort für Brightcove-spezifische Playererweiterungen und -integrationen. Dieser Namespace wird als Eigenschaft jeder Player-Instanz hinzugefügt.

Ziele

Zu den Zielen für den brightcove Namespace gehören:

  • Intern besteht das Ziel darin, die Komplexität und den doppelten Code in mehreren Unterkomponenten und Plugins des Brightcove-Players zu reduzieren
  • Extern besteht das Ziel darin, die Erfahrung der Integrationsentwickler zu verbessern, indem unterschiedliche Teile der Kernfunktionen in einem einzigen Namensraum vereint werden

Im Moment stellen wir nur einige Hilfsfunktionen in diesem Namensraum zur Verfügung, die unter zugänglich sind:

  • brightcove.util

Einige davon sind Kopien von Video.js-Hilfsfunktionen, aber auch diese werden wir im Laufe der Zeit vereinheitlichen. Die Anzahl der Funktionen, die für dieses Objekt zur Verfügung stehen, ist zu groß, um sie hier aufzulisten, aber eine vollständige Dokumentation wird in Kürze erscheinen.

Hier ist - noch - keine Migration erforderlich, aber die Bereitstellung von Funktionen über den zentralen brightcove-Namensraum wird ein iterativer Prozess sein, bei dem Funktionen auf dieses Objekt portiert und alte Eigenschaften/Methoden veraltet werden. Es ist wichtig zu beachten, dass wir die Abwärtskompatibilität innerhalb einer Hauptversion nicht brechen werden, also bcAnalytics Und catalog verschwinden erst mit Brightcove Player 8.

Verbesserter ABR-Algorithmus

Änderung gilt für VJS8/VHS3/BCP7

Der ABR-Algorithmus, der von VHS und dem Brightcove-Player verwendet wird, wurde mit dem Ziel verbessert, die Anzahl der Rebuffering-Ereignisse zu reduzieren und gleichzeitig eine höhere Bitrate beizubehalten. Dies wird durch die Verwendung eines gleitenden Durchschnitts der Bandbreitenschätzung anstelle der letzten Bandbreitenschätzung erreicht.

Darüber hinaus versuchen wir, die Bandbreitennutzung zu optimieren, indem wir den Zeitpunkt für den Wechsel der Wiedergabeart klug wählen, um zu vermeiden, dass zwischengespeicherte Inhalte hoher Qualität weggeworfen werden, um zu einer niedrigeren Wiedergabeart zu wechseln.

Mehr über die Überlegungen hinter diesen Anpassungen finden Sie in diesem GitHub Gist und die endgültige Implementierung in diesem GitHub Pull Request.

Weitere Informationen über den ABR-Algorithmus finden Sie im Dokument Bestimmen, welche Wiedergabe wiedergegeben wird.

sourceset Ereignis

Änderung gilt für VJS8/BCP7

Dieses Ereignis existiert schon seit Jahren in Video.js hinter einem Feature-Flag. Wir haben es jetzt standardmäßig aktiviert, um festzustellen, ob sich die Quelle des Spielers ändert, möglicherweise vor dem Standardereignis loadstart, das zur Erkennung von Quelländerungen verwendet wird.

Beispiel

player.on('sourceset', (e) => {
  player.log('The media source is changing!');
});

Erneuter Versuch bei Fehler

Änderung gilt für VJS8/BCP7

Wenn der Player eine Liste von Quellen erhält und die erste Quelle nicht geladen werden kann, versucht Video.js nun die nächste Medienquelle der Reihe nach, bis eine Quelle gefunden wird, die abgespielt werden kann, oder keine Quellen mehr vorhanden sind.

Dies ist eher für reine Player-Kunden relevant, da diese Fehlerbedingung beim Durchlaufen der Wiedergabe-API wahrscheinlich nie auftreten wird.

TitleBar Komponente

Änderung gilt für VJS8/BCP7

Wir haben das videojs-dock-Plugin entfernt und ähnliche Funktionen in einer neuen Kernkomponente für Video.js neu implementiert: der TitleBar Komponente.

In der neuen TitleBar Komponente wird oben im Player ein UI-Element angezeigt, das den Titel und/oder die Beschreibung des aktuellen Mediums im Player anzeigt. Der TitleBar wird nicht angezeigt, wenn kein Titel oder keine Beschreibung angegeben ist.

Video Cloud-Kunden

Der TitleBar wird automatisch gefüllt, wenn Ihr Player über die Playback-API in Video Cloud integriert ist.

Kunden, die nur Spieler sind

Kunden, die nur für Spieler bestimmt sind, können eine der folgenden Methoden verwenden, um das Feld auszufüllen TitleBar:

  • Wird verwendet loadMedia, um die TitleBar

    Der einfachste Weg, einen Titel und/oder eine Beschreibung anzugeben, besteht darin, die loadMedia Methode Ihres Spielers zu verwenden:

    player.loadMedia({
      artist: 'Extremely',
      album: 'Oceans',
      title: 'Oceans',
      description: 'Journey in to the depths ... and race with dolphins at play.',
      poster: 'https://vjs.zencdn.net/v/oceans.png',
      src: [{
        src: 'https://vjs.zencdn.net/v/oceans.mp4',
        type: 'video/mp4'
      }, {
        src: 'https://vjs.zencdn.net/v/oceans.webm',
        type: 'video/webm'
      }]
    })

    Wenn Sie mit der loadMedia Methode nicht vertraut sind, können Sie auf diese Weise zusätzliche Metadaten für Ihre Medien bereitstellen, die über das hinausgehen, was allein mit der src-Methode verfügbar ist. Wie im obigen Beispiel zu sehen ist, werden Titel und Beschreibung angegeben und zum Auffüllen der Titelleiste verwendet.

  • TitleBar Direkt befüllen

    Sie TitleBar können auch durch direkte Eingabe mit der update Methode der Komponente gefüllt werden:

    player.titleBar.update({
      title: 'Oceans',
      description: 'Journey in to the depths ... and race with dolphins at play.'
    });

    Der Titel und/oder die Beschreibung können entfernt werden, indem eine leere Zeichenkette für einen oder beide Werte übergeben wird:

    player.titleBar.update({
      title: '',
      description: ''
    });

    Wenn beide entfernt werden, sind TitleBar sie nicht mehr sichtbar.

Brightcove-Player-Migration

Es ist unwahrscheinlich, dass die große Mehrheit der Brightcove-Kunden eine solche Migration benötigt.

Es ist jedoch möglich, dass Code von Drittanbietern abhängig ist player.dock müsste aktualisiert werden, um die APIs für die zu verwenden TitleBar erwähnt in der Nur-Spieler-Kunden Abschnitt.

Video.js-Dienstprogramm-Objekte

Änderung gilt für VJS8/VHS3/BCP7

Im Laufe der Zeit wurde der videojs Namespace mit einer Vielzahl von Hilfsfunktionen überladen. Brightcove führt eine bewusster gestaltete Oberfläche für diese Dienstfunktionen ein.

Der Leitgedanke dabei war, dass eine Funktion, die zwar nicht zum Kernbestand der Bibliothek gehört, aber dennoch potenziell nützlich ist, als Teil eines Utility-Objekts und nicht als Top-Level-Funktion zur Verfügung gestellt wird.

Hier sind die Hilfsobjekte, denen videojs in 8.0.0 hinzugefügt wurde:

Objekt Beschreibung
videojs.dom DOM-Funktionen (zuvor verfügbar)
videojs.fn Funktion... Funktionen
videojs.num Zahlenfunktionen
videojs.obj Objektfunktionen
videojs.str String-Funktionen
videojs.time Zeitbezogene Funktionen
videojs.url URL-bezogene Funktionen
videojs.browser Verschiedene Werte für die Erkennung von Benutzer-Agenten (zuvor verfügbar)

Andere Brightcove-Player-Funktionen und -Erweiterungen

Änderungen gelten für BCP7

  • Der not-hover Klassenname wurde umbenannt in vjs-hide-controls.

    Die Benennung dieser alten Klasse entsprach nicht unseren Benennungsstandards und ihr Zweck war unklar. Jedes CSS (oder JavaScript), das auf diesen Klassennamen abzielt, müsste aktualisiert werden.

  • Das style Element, das der Player für Video.js CSS erstellt, hatte das id="bc-style-vjs" Attribut. Dies id wurde in ein class Attribut geändert.

    In früheren Playerversionen konnte dies bei der Verwendung mehrerer Player theoretisch zu einer Situation führen, in der mehrere Elemente im DOM eine gemeinsame ID hatten, was gegen die HTML-Spezifikation verstößt.

Andere Video.js-Funktionen und -Verbesserungen

Änderungen gelten für VJS8

  • addClass und removeClass Methoden können jetzt mehrere Klassennamen in einer durch Leerzeichen getrennten Zeichenfolge zugewiesen werden, wie foo bar.

  • Wenn Sie auf die Schaltfläche für das Wiedergaberaten-Menü klicken, wird das Wiedergaberaten-Menü geöffnet und mit den anderen Menüschaltflächen in Einklang gebracht.

  • Bei ungültigen Ereignistypen werden nun Fehler anstelle von Protokollwarnungen ausgegeben.

Andere VHS-Merkmale und -Erweiterungen

Änderungen gelten für VHS3

  • Lücken werden sofort erkannt, anstatt die Dauer der Lücke abzuwarten, bevor sie übersprungen werden.

  • Die veraltete smoothQualityChange Methode wurde entfernt

  • Verbessertes Verhalten bei der output-restricted Ereignisbehandlung

  • Die Parameter von wurden bereinigt excludePlaylist

  • Viele Namen wurden geändert, um einen inklusiveren Sprachgebrauch zu ermöglichen, wie z. B:

    • "Master" wird zu "Main"
    • "Schwarze Liste" wird zu "ausschließen" oder "excludeList"
    • "Whitelist" wird zu "allow" oder "allowList"

Verwerfungen

Verwerfungen beziehen sich auf Änderungen, die Brightcove in der nächsten Hauptversion vornehmen möchte. Im Allgemeinen wird eine Warnung in der Browserkonsole protokolliert, um Entwicklern bei der Zukunftssicherung ihrer Integrationen zu helfen.

Top-Level-Utility-Funktionen

Änderung gilt für VJS8/VHS3/BCP7

Im Laufe der Zeit wurde der videojs Namespace mit einer Vielzahl von Hilfsfunktionen überladen. Brightcove hat ein neues Organisationsprinzip für die Offenlegung von Nutzobjekten eingeführt, um die videojs API besser zu organisieren.

Infolgedessen wurden viele Top-Level-Funktionen veraltet. Jede dieser Funktionen gibt nun bei ihrer ersten Verwendung eine Warnung aus (und zwar nur einmal, um die Browser-Konsole nicht zu überladen).

Veraltete Funktion Verwenden Sie stattdessen..
videojs.bind einheimisch Function.prototype.bind
videojs.computedStyle videojs.dom.computedStyle
videojs.createTimeRange videojs.time.createTimeRanges
videojs.createTimeRanges videojs.time.createTimeRanges
videojs.defineLazyProperty videojs.obj.defineLazyProperty
videojs.formatTime videojs.time.formatTime
videojs.isCrossOrigin videojs.url.isCrossOrigin
videojs.mergeOptions videojs.obj.merge
videojs.parseUrl videojs.url.parseUrl
videojs.resetFormatTime videojs.time.resetFormatTime
videojs.setFormatTime videojs.time.setFormatTime

Es gibt auch eine Reihe älterer Funktionen, die zwar noch brauchbar, aber veraltet sind:

Veraltete Funktion Verwenden Sie stattdessen..
videojs.addClass einheimisch videojs.dom.addClass
videojs.appendContent videojs.dom.appendContent
videojs.createEl videojs.dom.createEl
videojs.emptyEl videojs.dom.emptyEl
videojs.getAttributes videojs.dom.getAttributes
videojs.hasClass videojs.dom.hasClass
videojs.insertContent videojs.dom.insertContent
videojs.isEl videojs.dom.isEl
videojs.isTextNode videojs.dom.isTextNode
videojs.plugin videojs.registerPlugin
videojs.removeClass videojs.dom.removeClass
videojs.setAttributes videojs.dom.setAttributes
videojs.toggleClass videojs.dom.toggleClass

Umzüge

Alles, was in diesem Abschnitt steht, bedeutet, dass die Unterstützung für etwas, das zuvor unterstützt wurde, vollständig entfernt wurde. Wir versuchen zu vermeiden, dass wir die Unterstützung für bestimmte Dinge einstellen, ohne sie vorher zu verwerfen, aber manchmal muss dies geschehen, damit das Produkt auch in Zukunft gewartet werden kann.

Graphit Haut

Änderung gilt für BCP7

Der Graphit-Skin ist nicht mehr erhältlich.

Das einzige Skin, das bei der Veröffentlichung von Brightcove Player 7 unterstützt wird, ist das standardmäßige Sapphire-Skin. Die einzige andere Option ist null, das gesamte CSS auszuschalten, sodass fortgeschrittene Benutzer ihren eigenen Skin von Grund auf neu schreiben können.

Wenn Sie eine JSON-Konfiguration "skin": "graphite" in Ihrem Player hatten, entfernen Sie sie. Alle Anpassungen, die auf dem Graphite-CSS basieren, müssen möglicherweise aktualisiert werden.

Unterstützung von Abfragezeichenfolgen in seiteninternen Einbettungen

Änderung gilt für BCP7

Wenn Brightcove Player 7 in eine Seite eingebettet ist, erkennt er den autoplay Abfrageparameter oder t Abfrageparameter (oder einen anderen Abfrageparameter) nicht mehr.

Abfrageparameter sind ein idealer Weg, um Daten auf der Ebene des Einbettungscodes für iframe-Einbettungen bereitzustellen, aber für seiteninterne Einbettungen müssten sie in der URL der einbettenden Website vorhanden sein.

Diese beiden Parameter wurden früher unterstützt, weil ältere Versionen von Internet Explorer Umgehungen für die Vollbild-API erforderten, die nicht ausreichend unterstützt wurde. Sie sorgten jedoch bei einigen Kunden für Verwirrung, als ihre eigenen Webseiten-URLs diese Parameter für andere Zwecke enthielten, sie sich aber auf das Verhalten des eingebetteten Brightcove-Players auswirkten.

Wenn Sie in irgendeiner Weise auf diese Unterstützung angewiesen waren, empfiehlt Brightcove, für Ihre In-Page-Einbettungen zum autoplay oder data-start-time- Attribut zu wechseln (oder diese Funktion über JavaScript-Code zu implementieren).

Konfigurationen der obersten Ebene der Wiedergabeliste

Änderung gilt für BCP7

Bei früheren Player-Versionen gab es mehrere Legacy-Plugins/Implementierungen für Wiedergabelisten und Methoden zur Konfiguration. Die Verwaltung mehrerer Wiedergabelistenimplementierungen führte zu erheblicher Verwirrung und Komplexität, sodass Brightcove die Implementierung von Wiedergabelisten vereinfachte und klarer gestaltete.

Kurz gesagt, alle Konfigurationen der obersten Ebene, die sich auf die Wiedergabeliste beziehen, werden in Brightcove Player 7 nicht mehr unterstützt, einschließlich:

  • autoadvance
  • media(als Array, das als Playlist interpretiert wird)
  • playlist
  • repeat

Die Konfiguration der Wiedergabeliste auf oberster Ebene kann auf zwei Arten verwendet werden:

  • Wird verwendet true, um die ältere Playlist-Benutzeroberfläche einzuschalten (videojs-playlist-ui)
  • Wird verwendet false, um die Playlist-API auszuschalten (videojs-Playlist)

Dies hatte jedoch keine Auswirkungen auf das Brightcove-Playlist-UI-Plugin.

Migration

Der Migrationspfad für Wiedergabelisten besteht darin, immer das Brightcove-Plugin für die Wiedergabelistenoberfläche zu verwenden, das über Studio konfigurierbar ist. Die alten Top-Level-Konfigurationen wurden nie über Studio veröffentlicht.

videojs.extend() Funktion

Änderung gilt für VJS8/BCP7

Die extend() Funktion wurde zuvor verwendet, um Komponenten und erweiterte Plugins von Video.js zu erweitern.

Wir verwenden jetzt überall native ES6-Klassen und die alte videojs.extend() Funktion funktioniert nur mit einfachen Funktionsprototypen, was sie mit den nativen ES6-Klassen, aus denen Video.js 8 besteht, unbrauchbar macht. Sie wurde also entfernt.

Alte

Die alte Methode, eine Komponente zu erstellen, extend() war beispielsweise:

const Component = videojs.getComponent('Component');

const MyComponent = videojs.extend(Component, {
  constructor: function(player, options) {
    Component.call(this, player, options);
  }
});

videojs.registerComponent('MyComponent', MyComponent);

Neu

Künftig werden nur noch ES6-Klassen unterstützt. Das Äquivalent würde lauten:

const Component = videojs.getComponent('Component');

class MyComponent extends Component {
  constructor(player, options) {
    super(player, options);
  }
}

videojs.registerComponent('MyComponent', MyComponent);

Benutzer, deren Integrationscode davon abhängt, videojs.extend() müssen ihre Implementierungen aktualisieren, bevor sie auf Brightcove Player 7 aktualisieren.

firstplay Ereignis

Änderung gilt für VJS8/BCP7

Die firstplay Veranstaltung wurde entfernt. Dies war ein Legacy-Event, das ausgelöst wurde, als ein play Ereignis zum ersten Mal ausgelöst wurde. Es gibt jedoch eine bessere Möglichkeit, das erste play Ereignis für eine bestimmte Quelle mit der folgenden one() Methode zu verknüpfen:

// Each time the source is about to change, listen for the first play event.
player.on('sourceset', () => {
  player.one('play', callback);
});

Sonstige Umzüge

  • [BCP7] Die fullscreenControl und techOrder JSON-Konfigurationen werden nicht mehr unterstützt. Verwenden Sie stattdessen fullscreen_control Und tech_order bzw.
  • [VJS8] Die Möglichkeit aria-* role, und type Attribute über das Argument props von createEl Methoden festzulegen, wurde entfernt
  • [VJS8] Verbleibende Referenzen und Logik im Zusammenhang mit Flash und SWF-Dateien entfernt
  • [VJS8] Fallbacks für fehlende CSS-Flexbox-Unterstützung entfernen
  • [VJS8] IE-spezifischer Code entfernt

Plugins

Alle Brightcove-Plugins wurden für die neue Version des Players aktualisiert. Wenn Sie ein manuelles Update durchführen, finden Sie in der folgenden Liste die neuen Versionsnummern, die in der Plugin-Registrierung verfügbar sind.

Plugin Beschreibung registry_id Player 6 Plugin-Version Player 7 Plugin-Version
Adobe Analytics Player-Plugin @brightcove/videojs-bc-aa 1.x 2.x
AirPlay-Unterstützung @brightcove/videojs-bc-airplay 1.x 2.x
Google Analytics @brightcove/videojs-bc-ga 1.x 2.x
Google-Tag-Manager @brightcove/videojs-bc-gtm 1.x 2.x
Unterstützung von Wiedergabelisten @brightcove/videojs-bc-playlist-ui 3.x 4.x
Tealium-Analytik @brightcove/videojs-bc-tealium 1.x 2.x
Chromecast @brightcove/
videojs-bc-chromecast-receiver
2.x 3.x
Benutzerdefinierte Endscreens @brightcove/
videojs-bc-custom-endscreen
3.x 4.x
DRM-Unterstützung @brightcove/videojs-bc-drm 5.x Nicht erforderlich für Brightcove Player 7
und sollte entfernt werden
Freilauf-Anzeigen @brightcove/videojs-bc-freewheel 3.x 4.x
Google IMA3-Anzeigen @brightcove/videojs-bc-ima3 4.x Keine Änderung
Kollective eCDN-Unterstützung @brightcove/videojs-bc-kollective 1.x 2.x
Overlays @brightcove/videojs-bc-overlay 2.x Keine Änderung
Bild-im-Bild alias "Floating Player" @brightcove/videojs-bc-pip 1.x 2.x
Playlist-Endbildschirm @brightcove/
videojs-bc-playlist-endscreen
1.x 2.x
Qualitätsauswahlmenü @brightcove/videojs-bc-quality-menu 1.x 2.x
Soziales Teilen @brightcove/videojs-bc-social 3.x 4.x
Brightcove SSAI-Unterstützung @brightcove/videojs-bc-ssai 1.x 2.x
Thumbnail-Suche @brightcove/videojs-bc-thumbnails 1.x 2.x

Einschränkungen

Die folgenden Einschränkungen gelten für Brightcove Player 7:

  • Der automatische Aktualisierungsmodus ist für Upgrades/Downgrades von Player v7 erforderlich.
    • Vergewissern Sie sich, dass Ihr Player im automatischen Update-Modus ist, bevor Sie auf Version 7 aktualisieren oder ein Downgrade durchführen
    • Nach dem Upgrade/Downgrade Ihres Players passen Sie die zugehörigen Plugin-Versionen an