Übermitteln von Widevine-Lizenzen an Azure Media Services mithilfe von castLabs
Übersicht
In diesem Artikel wird beschrieben, wie Sie mithilfe von Azure Media Services (AMS) einen Stream übermitteln, der von AMS mit PlayReady- und Widevine-DRMs dynamisch verschlüsselt wird. Die PlayReady-Lizenz stammt vom Media Services PlayReady-Lizenzserver, und die Widevine-Lizenz wird vom castLabs -Lizenzserver übermittelt.
Für die Wiedergabe von durch CENC (PlayReady und/oder Widevine) geschützten Streaminginhalten können Sie Azure Media Playerverwenden. Ausführliche Informationen dazu finden Sie in der AMP-Dokumentation (in englischer Sprache).
In der folgenden Abbildung ist eine allgemeine Azure Media Services- und castLabs-Integrationsarchitektur dargestellt.
Typisches System-Setup
- Medieninhalte werden in AMS gespeichert.
- Schlüssel-IDs der Inhaltsschlüssel werden in castLabs und AMS gespeichert.
- castLabs sowie AMS verfügen über eine integrierte Tokenauthentifizierung. In den folgenden Abschnitten werden Authentifizierungstoken erörtert.
- Wenn ein Kunde das Streaming eines Videos anfordert, wird der Inhalt mit CENC (Common Encryption, allgemeine Verschlüsselung) dynamisch verschlüsselt und von AMS dynamisch in Smooth Streaming und DASH verpackt. Wir stellen auch eine elementare Streamverschlüsselung per PlayReady M2TS für das HLS-Streamingprotokoll bereit.
- Die PlayReady-Lizenz wird vom AMS-Lizenzserver abgerufen und die Widevine-Lizenz vom castLabs-Lizenzserver.
- Abhängig von der Plattform des Kunden ruft Media Player automatisch die entsprechende Lizenz ab.
Generierung von Authentifizierungstoken zum Abrufen einer Lizenz
castLabs sowie AMS unterstützen das für die Autorisierung einer Lizenz verwendete JWT (JSON Web Token)-Tokenformat.
JWT-Token in AMS
In der folgenden Tabelle wird das in AMS verwendete JWT-Token beschrieben.
Issuer (Aussteller) | Ausstellerzeichenfolge aus dem ausgewählten Secure Token Service (STS) |
---|---|
Zielgruppe | Zielgruppenzeichenfolge aus dem verwendeten STS |
Ansprüche | Eine Sammlung von Ansprüchen |
NotBefore | Beginn der Gültigkeit des Tokens |
Läuft ab | Ende der Gültigkeit des Tokens |
SigningCredentials | Der Schlüssel, der vom PlayReady-Lizenzserver, dem castLabs-Lizenzserver und STS gemeinsam genutzt wird. Kann ein symmetrischer oder asymmetrischer Schlüssel sein. |
JWT-Token in castLabs
In der folgenden Tabelle wird das in castLabs verwendete JWT-Token beschrieben.
Name | BESCHREIBUNG |
---|---|
optData | Eine JSON-Zeichenfolge, die Informationen über Sie enthält. |
crt | Eine JSON-Zeichenfolge mit Angaben zum Medienobjekt, den zugehörigen Lizenzinformationen und Wiedergaberechten. |
iat | Aktuelles Datum und aktuelle Uhrzeit in der Epoche. |
jti | Ein eindeutiger Bezeichner des Tokens (jedes Token kann im castLabs-System nur einmal verwendet werden). |
Setup einer Beispiellösung
Die Beispiellösung besteht aus zwei Projekten:
- Einer Konsolenanwendung, mit der DRM-Einschränkungen für ein bereits eingefügtes Medienobjekt für PlayReady und Widevine festgelegt werden können.
- Einer Webanwendung, die Token ausgibt und als SEHR VEREINFACHTE Version eines STS aufgefasst werden kann.
So verwenden Sie die Konsolenanwendung
Ändern Sie die Datei "app.config", und richten Sie die AMS-Anmeldeinformationen, die castLabs-Anmeldeinformationen, die STS-Konfiguration und den gemeinsam verwendeten Schlüssel ein.
Laden Sie ein Medienobjekt in AMS hoch.
Rufen Sie die UUID aus dem hochgeladenen Medienobjekt ab, und ändern Sie die Zeile 32 in der Datei "Program.cs":
var objIAsset = _context.Assets.Where(x => x.Id == "nb:cid:UUID:dac53a5d-1500-80bd-b864-f1e4b62594cf").FirstOrDefault();
Verwenden Sie zur Benennung des Medienobjekts im castLabs-System eine AssetId (Zeile 44 in der Datei "Program.cs").
Für die AssetId für castLabsmüssen Sie eine eindeutige alphanumerische Zeichenfolge festlegen.
Führen Sie das Programm aus.
So verwenden Sie die Webanwendung (STS)
- Ändern Sie die Datei "Web.config", und richten Sie die Anbieter-ID für castLabs, die STS-Konfiguration und den gemeinsam verwendeten Schlüssel ein.
- Stellen Sie die Datei auf Azure-Websites bereit.
- Navigieren Sie zu der Website.
Wiedergeben eines Videos
Ein durch allgemeine Verschlüsselung (PlayReady und/oder Widevine) verschlüsseltes Video können Sie mit dem Azure Media Player wiedergeben. Wenn Sie die Konsolenanwendung ausführen, werden die Inhaltsschlüssel-ID und die Manifest-URL ausgegeben.
Öffnen Sie eine neue Registerkarte, und starten Sie Ihre STS-Anwendung: http://[Ihr_STS_Name].azurewebsites.net/api/token/assetid/[Ihre_CastLabs-AssetID]/contentkeyid/[Inhaltsschlüssel-ID].
Wechseln Sie zu Azure Media Player.
Fügen Sie die Streaming-URL ein.
Klicken Sie auf das Kontrollkästchen Erweiterte Optionen .
Wählen Sie in der Dropdownliste Schutz die Option „PlayReady and/or Widevine“ aus.
Fügen Sie im Textfeld "Token" das Token ein, das Sie vom STS abgerufen haben.
Für den castLabs-Lizenzserver ist das Präfix "Bearer=" vor dem Token nicht erforderlich. Entfernen Sie dieses Präfix vor dem Übermitteln des Tokens.
Aktualisieren Sie den Player.
Das Video sollte wiedergegeben werden.
Zusätzliche Hinweise
- Widevine ist ein von Google Inc. bereitgestellter Dienst, der den Vertragsbedingungen und der Datenschutzrichtlinie von Google, Inc. unterliegt.