Wiedergabebeschränkungen mit den nativen SDKs

In diesem Thema erfahren Sie, wie Sie Wiedergabeeinschränkungen mit den nativen SDKs von Brightcove verwenden können.

Einleitung

Standardmäßig kommunizieren die nativen SDKs mit der Brightcove-Wiedergabe-API, um Ihre Video- und Wiedergabelisteninhalte abzurufen. Ein neues System zur Verwaltung von Wiedergaberechten und -beschränkungen sitzt vor der Playback-API und bietet Wiedergabeberechtigungen mithilfe von DRM-Lizenzen.

Sie können Wiedergaberechte mit oder ohne DRM verwenden, aber wenn Sie Laufzeitbeschränkungen verwenden möchten, müssen Sie ein JSON Web Token (JWT) verwenden.

License Keys Protection bietet ein zusätzliches Maß an Sicherheit, wenn Dynamic Delivery mit DRM-geschützten oder HTTP Live Streaming Encryption (HLSe)-Inhalten verwendet wird. Lizenzanfragen können mit einem signierten JSON Web Token (JWT) authentifiziertwerden.

Der JWT wird verwendet, wenn die Videolizenz angefordert wird, nachdem das Video in den Player geladen und die Quelle ausgewählt wurde.

Weitere Informationen zu dieser Funktion finden Sie im Folgenden:

Voraussetzungen

Zur Verwendung von Wiedergabeeinschränkungen benötigen Sie die folgenden Versionen der nativen Brightcove-SDKs:

  • Android: Natives SDK für Android Version 6.11.0 oder höher
  • iOS: Natives SDK für iOS Version 6.7.0 oder höher

Ergänzungen

Weitere Funktionen zur Verwendung von Wiedergabebeschränkungen sind:

  • Android: Natives SDK für iOS Version 7.1.3 behebt Unterstützung für Live HLSe License Keys Protection
  • iOS: Natives SDK für iOS Version 6.10.5 bietet Unterstützung für den Schutz von Live HLSe-Lizenzschlüsseln

Wie funktioniert das?

Die Wiedergabebeschränkungen beziehen sich auf die gesamte Lösung:

  • Wiedergaberechte
  • Lizenzschlüsselschutz

Wiedergaberechte

Standardmäßig stellen die nativen SDKs eine Anforderung an die Wiedergabe-API, wenn sie einen Richtlinienschlüssel hat. Das SDK sendet die Anfrage an den folgenden Endpunkt und ruft Ihre Inhalte ab:

edge.api.brightcove.com

Um die Wiedergaberechte mit Ihrer Playback-API-Anfrage zu überprüfen, müssen Sie den Policy Key nicht angeben. Wenn kein Policy Key vorhanden ist, sendet das SDK die Anfrage an diesen Endpunkt:

edge-auth.api.brightcove.com

Wenn alle Prüfungen im Zusammenhang mit den Wiedergaberechten erfolgreich sind, wird Ihr Inhalt zurückgegeben.

Lizenzschlüsselschutz

Der DRM- oder HLSe-Inhaltsschutz verwendet Lizenz-/Schlüsselanforderungen, die jede Stream-Anforderung mithilfe eines JSON Web Token (JWT) schützen können.

Ihre Anfragen an die Playback-API enthalten den Policy Key, und die SDKs senden die Anfrage an den folgenden Endpunkt:

edge.api.brightcove.com

Android: Verwenden von Wiedergaberechten

Gehen Sie folgendermaßen vor, um Playback-API-Anfragen zu stellen, bei denen die Wiedergaberechte geprüft werden:

  1. Beginnen Sie mit dem Einfache Beispiel-App.

  2. Verwenden Sie das Katalogerstellungsmuster ohne den Richtlinienschlüssel.

    Catalog catalog = new Catalog.Builder(eventEmitter, account).build();

    Wenn Sie der Brightcove-Beispiel-App folgen, wird die Konto-ID wie hier gezeigt abgerufen:

    String account = getString(R.string.account);
  3. Fakultativ: Wenn Sie Laufzeitbeschränkungen verwenden möchten, müssen Sie ein JWT erstellen und es mit der Kataloganforderung übergeben.

    1. Erstellen Sie Ihr JWT. Einzelheiten finden Sie im Überblick: Dokument „Brightcove Playback Restrictions“
    2. Übergeben Sie Ihr JWT mit der Kataloganforderung, indem Sie das JWT in der einstellen HttpRequestConfig. Einzelheiten finden Sie im Android: Verwenden des Abschnitts License Keys Protection.

Android: Verwenden des Lizenzschlüsselschutzes

Das Native SDK für Android unterstützt derzeit den Schlüssel-/Lizenzschutz für HLSe- und Widevine-DASH-Quellen. Sie geben Ihr Autorisierungstoken als Teil der Brightcove-Kataloganforderung für ein einzelnes Video oder eine Playlist an.

Gehen Sie folgendermaßen vor, um eine Brightcove-Kataloganforderung zu senden:

  1. Erstellen Sie ein HttpRequestConfig Objekt und setzen Sie das Brightcove-Autorisierungstoken auf den Wert Ihres JSON-Web-Tokens.

    HttpRequestConfig httpRequestConfig = new HttpRequestConfig.Builder()
      .setBrightcoveAuthorizationToken("your jwt")
      .build();
    
  2. Verwenden Sie eine der folgenden Katalogmethoden für Ihr HttpRequestConfig Objekt:

    Verwenden Sie für eine Videoanfrage eine der folgenden Möglichkeiten:

    findVideoByID(String, HttpRequestConfig, VideoListener)
    
    findVideoByReferenceID(String, HttpRequestConfig, VideoListener)
    

    Verwenden Sie für eine Playlist-Anfrage eine der folgenden Möglichkeiten:

    findPlaylistByID(String, HttpRequestConfig, PlaylistListener)
    
    findPlaylistByReferenceID(String, HttpRequestConfig, PlaylistListener)
    

    Die Details der Token-Nutzung für den Erwerb von HLSe- und Widevine-Lizenzen werden vom SDK gehandhabt.

Codebeispiel

Hier ist ein Beispiel, das zeigt, wie Sie Ihr Autorisierungstoken übergeben, wenn Sie eine Kataloganfrage stellen:

String myToken = "your jwt";
HttpRequestConfig httpRequestConfig = new HttpRequestConfig.Builder()
  .setBrightcoveAuthorizationToken(myToken)
  .build();
...

Catalog catalog = new Catalog.Builder(eventEmitter, account)
  .setPolicy(getString(R.string.policy))
  .build();
catalog.findVideoByReferenceID(videoReferenceId, httpRequestConfig, new VideoListener(){...});

Offline-Wiedergabe

Der OfflineCatalog findVideo requestPurchaseLicense und die requestRentalLicense Methoden verwenden alle ein HttpRequestConfig als Argument.

Hier ist ein Beispiel:

private HttpRequestConfig httpRequestConfig;
private String myToken = "your jwt";
...
HttpRequestConfig.Builder httpRequestConfigBuilder = new HttpRequestConfig.Builder();
httpRequestConfigBuilder.setBrightcoveAuthorizationToken(myToken);
httpRequestConfig = httpRequestConfigBuilder.build();
playlist.findPlaylist(catalog, httpRequestConfig, new PlaylistListener() {
    @Override
    public void onPlaylist(Playlist playlist) {
        videoListAdapter.setVideoList(playlist.getVideos());
        onVideoListUpdated(false);
        brightcoveVideoView.addAll(playlist.getVideos());
    }

    @Override
    public void onError(String error) {
        String message = showToast("Failed to find playlist[%s]: %s", playlist.displayName, error);
        Log.w(TAG, message);
        onVideoListUpdated(true);
    }
});

Einzelheiten finden Sie im Beispiel-App für die Offline-Wiedergabe.

Schutz von Lizenzschlüsseln mit Lieferregeln

Um den License Keys Protection mit Delivery Rules HttpRequestConfig.Builder zu kombinieren, konfigurieren Sie das wie folgt:

  • Festlegen des Brightcove-Autorisierungs-Tokens (JWT)
  • Legen Sie die Konfig-ID der Lieferregel fest

Die resultierende Builder-Konfiguration würde wie folgt aussehen:

HttpRequestConfig httpRequestConfig = new HttpRequestConfig.Builder()
  .addQueryParameter(HttpRequestConfig.KEY_DELIVERY_RULE_CONFIG_ID, "your rules id")
  .setBrightcoveAuthorizationToken("your jwt")
  .build();

Antworten

Die folgenden Antworten sind mit dem Schutz von Lizenzschlüsseln verbunden:

  • 200 - Lizenz darf fortgesetzt werden
  • 401 - Die Lizenzlieferung darf nicht fortgesetzt werden

iOS: Verwenden von Wiedergaberechten

Führen Sie die folgenden Schritte aus, um Playback-API-Anfragen zu stellen, bei denen die Wiedergaberechte geprüft werden:

  1. Beginnen Sie mit dem Einfache Beispiel-App.

  2. Erstellen Sie eine Instanz von BCOVPlaybackService und setzen Sie den Richtlinienschlüssel auf nil.

    let playbackService = BCOVPlaybackService(accountId: kViewControllerAccountID, policyKey: nil)
  3. Fakultativ: Wenn Sie Laufzeitbeschränkungen verwenden möchten, müssen Sie ein JWT erstellen und es mit der Kataloganforderung übergeben.

    1. Erstellen Sie Ihr JWT. Einzelheiten finden Sie im Überblick: Dokument „Brightcove Playback Restrictions“
    2. Übergeben Sie Ihr JWT mit der Kataloganforderung. Einzelheiten finden Sie unter iOS: Verwenden des Abschnitts License Keys Protection.

iOS: Verwenden des Lizenzschlüsselschutzes

Wenn Sie den Lizenzschlüsselschutz verwenden, müssen Sie die Methoden des Wiedergabedienstes nutzen, die es Ihnen ermöglichen, Ihr JSON-Web-Token (JWT) zu übergeben. Dies geschieht mit dem authToken Parameter.

Verwenden Sie für eine Videoanfrage eine der folgenden Möglichkeiten:

- (void)findVideoWithVideoID:(NSString *)videoID authToken:(NSString *)authToken parameters:(NSDictionary *)parameters completion:(void (^)(BCOVVideo *video, NSDictionary *jsonResponse, NSError *error))completionHandler;
- (void)findVideoWithReferenceID:(NSString *)referenceID authToken:(NSString *)authToken parameters:(NSDictionary *)parameters completion:(void (^)(BCOVVideo *video, NSDictionary *jsonResponse, NSError *error))completionHandler;

Verwenden Sie für eine Playlist-Anfrage eine der folgenden Möglichkeiten:

- (void)findPlaylistWithPlaylistID:(NSString *)playlistID authToken:(NSString *)authToken parameters:(NSDictionary *)parameters completion:(void (^)(BCOVPlaylist *playlist, NSDictionary *jsonResponse, NSError *error))completionHandler;
- (void)findPlaylistWithReferenceID:(NSString *)referenceID authToken:(NSString *)authToken parameters:(NSDictionary *)parameters completion:(void (^)(BCOVPlaylist *playlist, NSDictionary *jsonResponse, NSError *error))completionHandler;

Die Details der Token-Nutzung für den Erwerb von HLSe- und FairPlay-Lizenzen werden vom SDK gehandhabt.

Einzelheiten finden Sie im Wiedergabe-Autorisierungsdienst Abschnitt der Native SDK für iOS-Referenz.

Offline-Wiedergabe

Wenn Sie den Playback Authorization Service mit Offline Playback verwenden, gibt es eine neue Methode zum Erneuern einer FairPlay-Lizenz, die einen Autorisierungstoken akzeptiert:

// Request license renewal
    [BCOVOfflineVideoManager.sharedManager renewFairPlayLicense:offlineVideoToken
        video:video // recent video from Playback API or Playback Service class
        authToken: authToken
        Parameters: parameters
        completion:^(BCOVOfflineVideoToken offlineVideoToken, NSError *error)
    {
        // handle errors
    }];

Wenn die Lizenzverlängerung abgeschlossen ist, wird der Abschlussblock mit demselben Offline-Video-Token aufgerufen, das übergeben wurde. Ein NSError zeigt jedes aufgetretene Problem an (oder null, wenn kein Fehler vorliegt).

Einzelheiten finden Sie im Erneuern einer FairPlay-Lizenz Abschnitt der Native SDK für iOS-Referenz.

Schutz von Lizenzschlüsseln mit Lieferregeln

Um den Schutz von Lizenzschlüsseln mit Zustellungsregeln zu kombinieren, gehen Sie wie folgt vor:

  • Definieren Sie den Parameter für Ihre Lieferregel-ID
  • Übergeben Sie die Delivery Rules ID als Parameter mit dem Katalogaufruf an die Playback API
  • Übergeben Sie Ihr JSON Web Token (JWT) mit dem authToken Parameter

Hier ist ein Codebeispiel:

- (void)requestContentFromPlaybackService
  {
    NSDictionary *playbackAPIParameters = @{@"config_id":@"your rules id"};

    [self.playbackService findVideoWithVideoID:kViewControllerVideoID
      authToken:(NSString *)authToken
      parameters:playbackAPIParameters
      completion:^(BCOVVideo *video, NSDictionary *jsonResponse, NSError *error) {

      if (video)
      {
        [self.playbackController setVideos:@[ video ]];
      }
      else
      {
        NSLog(@"ViewController Debug - Error retrieving video playlist: `%@`", error);
      }
    }];
  }

Antworten

Die folgenden Antworten sind mit dem Schutz von Lizenzschlüsseln verbunden:

  • 200 - Lizenz darf fortgesetzt werden
  • 401 - Die Lizenzlieferung darf nicht fortgesetzt werden