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:
-
Beginnen Sie mit dem Einfache Beispiel-App.
-
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);
-
Fakultativ: Wenn Sie Laufzeitbeschränkungen verwenden möchten, müssen Sie ein JWT erstellen und es mit der Kataloganforderung übergeben.
- Erstellen Sie Ihr JWT. Einzelheiten finden Sie im Überblick: Dokument „Brightcove Playback Restrictions“
- Ü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:
-
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();
-
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:
-
Beginnen Sie mit dem Einfache Beispiel-App.
-
Erstellen Sie eine Instanz von
BCOVPlaybackService
und setzen Sie den Richtlinienschlüssel aufnil
.let playbackService = BCOVPlaybackService(accountId: kViewControllerAccountID, policyKey: nil)
-
Fakultativ: Wenn Sie Laufzeitbeschränkungen verwenden möchten, müssen Sie ein JWT erstellen und es mit der Kataloganforderung übergeben.
- Erstellen Sie Ihr JWT. Einzelheiten finden Sie im Überblick: Dokument „Brightcove Playback Restrictions“
- Ü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