Bild in Bild mit den nativen SDKs

In diesem Thema erfahren Sie, wie Sie den Picture-in-Picture-Modus mithilfe der Brightcove Native Player-SDKs in Ihren Anwendungen implementieren.

Überblick

Der Bild-in-Bild-Modus (PIP) ermöglicht Benutzern Multitasking auf ihren Geräten. Mit dieser Funktion können Sie Apps erstellen, bei denen ein kleines Videowiedergabefenster an einer Ecke des Bildschirms angeheftet ist, während der Benutzer andere Aufgaben ausführt.

Bild im Bildmodus
Bild im Bildmodus

Merkmale

Die Bild-in-Bild-Funktionalität der Brightcove Native SDKs unterstützt die folgenden Funktionen:

  • Wenn ein Benutzer ein Bild im Bildmodus durch Klicken auf das PIP-Symbol in der Steuerleiste eingibt, kann ein Entwickler programmgesteuert in den PIP-Modus wechseln.
  • Der Benutzer kann das PIP-Fenster um die Ecken des Bildschirms ziehen, um es an der bequemsten Stelle zu platzieren.
  • Der Benutzer kann das Video im PIP-Fenster anhalten und wiedergeben oder vollständig entfernen. Der Benutzer kann das Video auch wieder auf das In-App-Erlebnis maximieren.
  • Der PIP-Modus funktioniert über der App, dem Gerätehintergrund und anderen Anwendungen.

Unterstützte Versionen

Der Bild-in-Bild-Modus wird mit den folgenden Versionen unterstützt:

Gerätebetriebssystemversion

  • Android: Oreo 8.0+ (API-Level 26+)
  • iOS: 10.0+

Native SDK-Version

  • Android: Brightcove Native SDK für Android Version 6.1.0+
  • iOS: Brightcove Native SDK für iOS Version 6.4.4 und höher

Android-Implementierung

Die folgenden Themen helfen Ihnen beim Einstieg in die Bild-in-Bild-Funktion:

Weitere Informationen finden Sie unter Android Anleitung zur Bild-in-Bild-Unterstützung.

Verwenden von BrightcovePlayer

Der einfachste Weg, um mit der Verwendung von Bild in Bild zu beginnen, besteht darin, Ihre Aktivität zu verlängern BrightcovePlayer. Gehen Sie dazu folgendermaßen vor:

  1. In deiner style.xml Datei, aktivieren Sie die Bild-in-Bild-Schaltfläche, indem Sie den folgenden Code hinzufügen:
    <style name="BrightcoveControlBar" parent="BrightcoveControlBarDefault">
        <item name="brightcove_picture_in_picture">true</item>
    </style>
  2. In deiner AndroidManifest.xml Datei, Bild-in-Bild-Unterstützung erklären für die Aktivität, indem Sie Folgendes hinzufügen:
    <activity android:name="VideoActivity"
      android:resizeableActivity="true"
      android:supportsPictureInPicture="true"
      android:configChanges=
          "screenSize|smallestScreenSize|screenLayout|orientation"
      ...
    

    Dies ist ein wichtiger Schritt. Wenn Sie es nicht deklarieren, wenn ein Benutzer die Bild-in-Bild-Schaltfläche im Brightcove Media Controller drückt, und IllegalStateException wird geworfen:

    java.lang.IllegalStateException: enterPictureInPictureMode: Current activity does not support picture in picture

Wenn Sie in den Bild-im-Bild-Modus wechseln, wird die Größe der Aktivität selbst geändert, wobei alle Aktivitätskomponenten im Bild-im-Bild-Fenster erhalten bleiben. Um dies zu vermeiden und eine einfachere Implementierung zu ermöglichen, wechselt die Brightcove-Videoansicht automatisch in den Vollbildmodus, um die Breite und Höhe des übergeordneten Layouts anzupassen und nur das Video im Bild-in-Bild-Fenster anzuzeigen. Sobald Sie diesen Modus verlassen, kehrt die Brightcove-Videoansicht in ihren ursprünglichen Zustand zurück.

Wenn Sie in Ihrer App kein Bild-in-Bild möchten, können Sie die Bild-in-Bild-Schaltfläche deaktivieren, indem Sie den folgenden Code in Ihr style.xml Datei:

<style name="BrightcoveControlBar" parent="BrightcoveControlBarDefault">
    <item name="brightcove_picture_in_picture">false</item>
</style>

Verwenden einer regulären Aktivität

Wenn Sie eine Aktivität verwenden, die sich nicht erstreckt BrightcovePlayer, müssen Sie zusätzlich zur Unterstützung von Bild-in-Bild-Unterstützung, wie im vorherigen Abschnitt erwähnt, einige zusätzliche Schritte ausführen:

  1. Öffne das MainActivity.java Datei.
  2. In dem onCreate Methode der Aktivität, registrieren Sie die Aktivität bei Brightcove PictureInPictureManager:
    PictureInPictureManager.getInstance().registerActivity(Activity, BrightcoveVideoView)
  3. In dem onDestroy -Methode, heben Sie die Registrierung der Aktivität auf:
    PictureInPictureManager.getInstance().unregisterActivity(Activity)
  4. Überschreiben Sie die onPictureInPictureModeChanged Aktivitätsmethode und Aufruf onPictureInPictureModeChanged() Methode wie unten gezeigt:
    @Override
      public void onPictureInPictureModeChanged (boolean isInPictureInPictureMode, Configuration newConfig) {
         super.onPictureInPictureModeChanged(isInPictureInPictureMode, newConfig);
         PictureInPictureManager.getInstance().onPictureInPictureModeChanged(isInPictureInPictureMode, newConfig);
      }
  5. Überschreiben Sie schließlich die onUserLeaveHint() Aktivitätsmethode und Aufruf onUserLeaveHint() Wie nachfolgend dargestellt:
    @Override
      public void onUserLeaveHint () {
         super.onUserLeaveHint();
         PictureInPictureManager.getInstance().onUserLeaveHint();
      }

Nachdem Sie diese Schritte ausgeführt haben, wird die Bild-in-Bild-Schaltfläche automatisch im Brightcove Media Controller angezeigt. Sie können Bild in Bild auch programmgesteuert wie folgt auslösen:

PictureInPictureManager.getInstance().enterPictureInPictureMode()

Bild in Bild anpassen

Sie können das Verhalten und die Darstellung des Bild-im-Bild-Fensters über die PictureInPictureManager. Sie können beispielsweise das Seitenverhältnis des Fensters ändern oder Untertitel für Ihre Videos aktivieren/deaktivieren.

Android Oreo bietet nativ drei Parameter, die angepasst werden können:

Benutzeraktionen

Brightcove fügt RemoteAction standardmäßig ein hinzu, das die Play/Pause Videoereignisse verarbeitet und die entsprechenden Symbole festlegt. Dies bedeutet, dass die Standardeinstellung RemoteAction wird der Liste der von Ihnen festgelegten Remote-Aktionen wie folgt hinzugefügt:

setUserActions

Beachten Sie, dass Sie nur eine begrenzte Anzahl von Aktionen festlegen können. Um das zu bekommen maximale Anzahl von Aktionen , rufen Sie Folgendes auf:

Activity.getMaxNumPictureInPictureActions()

Untertitel

Sie können Closed Captions aktivieren/deaktivieren, wenn Sie ein Video im Bild-in-Bild-Modus abspielen, indem Sie Folgendes im inPictureInPictureManager.

setClosedCaptionsEnabled(boolean)

Untertitel sind auf Smartphones standardmäßig deaktiviert, auf Tablets jedoch aktiviert. Um die Größe der Closed Captions während der Wiedergabe im Bild-in-Bild-Modus zu reduzieren, rufen Sie Folgendes auf, um einen Wert zwischen 0 und 1.0f.

setClosedCaptionsReductionScaleFactor(float)

Standardmäßig ist die Größe der Untertitel im Bild-im-Bild-Modus 0.5f oder 50 % der Originalgröße. Schließlich, um das Bild im Bildmodus einzugeben, wenn die Aktivität onUserLeaveHint() aufgerufen wird, setzen Sie Folgendes auf true:

setOnUserLeaveEnable(boolean)

Parameter

Um das aktuelle Bild in Bildparametern abzurufen, können Sie Folgendes aufrufen:

PictureInPicture.getBrightcovePictureInPictureParams()

Dieser Aufruf gibt das BrightcovePictureInPictureParams Objekt zurück, das die Getter für alle zuvor besprochenen Parameter enthält.

iOS-Implementierung

Um mit Bild in Bild zu beginnen, fügen Sie hinzu showPictureInPictureButton zu BCOVPUIPlayerViewOptions. Bei Einstellung auf "true" wird den Player-Steuerelementen auf unterstützten Geräten eine Bild-in-Bild-Schaltfläche hinzugefügt.

Bild in Bild ist eines der neue Funktionen mit iOS 14.

Weitere Einzelheiten finden Sie unter:

Ein Codebeispiel finden Sie im Einfache Videowiedergabe-App.

Einschränkungen

Android

  • Bild-in-Bild funktioniert nur auf Geräten mit Android Oreo oder höher
  • Es wird derzeit nicht für Android TV unterstützt
  • Videos mit Anzeigen werden nicht unterstützt
  • 360-Videos werden nicht unterstützt

iOS

  • Picture in Picture wird von den serverseitigen Anzeigen (SSAI) von Brightcove unterstützt, aber PIP wird nicht von clientseitigen Anzeigen, einschließlich IMA, FreeWheel oder Pulse, unterstützt.
  • 360-Videos werden nicht unterstützt

Bekannte Probleme

Android

  • Wir haben festgestellt, dass Widevine-geschützte Videos, die im Bild-in-Bild-Modus abgespielt werden, auf dem Pixel C mit Android 8.0 transparent oder schwarz werden. Das Problem ist auf demselben Gerät mit Android 8.1 nicht reproduzierbar.