Wiedergabesitzung erstellen
Fordern Sie den DRM-X Universal Playback Session Contract mit Authentifizierung, vertrauenswürdigen Content IDs und begrenzter Autorisierung an.
So wird die Wiedergabe autorisiert
Ihr Backend entscheidet, wer Inhalte ansehen darf. DRM-X stellt die Wiedergabeautorisierung bereit. Damit fordert der Player eine DRM-Lizenz an.
- Zuschauer
Meldet sich bei Ihrem Dienst an und fordert ein Video an.
- Ihr Backend
Prüft den Kauf, das Abonnement oder eine andere Zugriffsberechtigung des Nutzers.
- DRM-X
Wendet die gewählten Wiedergaberegeln an und gibt Konfiguration und Autorisierung zurück.
- Player
Fordert mit der erhaltenen Autorisierung die für die Wiedergabe benötigte DRM-Lizenz an.
Erstellen Sie eine universelle Playback-Sitzung#
POST https://api6.drm-x.com/api/v1/playback/environments/{siteId}/sessions
Accept: application/json
Content-Type: application/json
X-DRMX-Client-Id: {siteKey}
X-DRMX-Client-Secret: {accessKey}
{
"contentId": "course-12-lesson-4",
"contentType": "vod",
"drmSystem": "widevine",
"subject": "customer-user-1001",
"sessionId": "new-unpredictable-id-per-playback",
"playbackMode": "streaming",
"licensePolicyTemplate": "multi-tier-standard",
"useEnvironmentDefaults": true,
"applicationId": "customer-web",
"platformCapabilities": {
"clientPlatform": "web",
"drmSystems": ["widevine"],
"manifestTypes": ["dash"],
"maximumHeight": 2160,
"persistentState": false,
"sdkVersion": "1.2.0-beta.4"
}
}
Eine erfolgreiche Contract v1-Antwort enthält das autoritative Manifest, verfügbare Manifestvarianten, eine DRM-Sondergenehmigung URL, eine kurzlebige DRM License Token oder Kunden-Proxy-Autorisierung, eine Release-Route, die lizenzierte maximale Höhe und erlaubte Tracks. Cache-Control: no-store.
Verwenden Sie eine unvorhersehbare Sitzung ID für jeden realen Wiedergabeversuch. Wiederverwendung einer ID über Geräte hinweg besiegt die gleichzeitige Stromzählung.
Beispiel einer erfolgreichen Antwort
Dieses Beispiel verwendet nicht funktionsfähige Beispiel-URLs und einen Platzhalter-Token. Lesen Sie die verschachtelten Deskriptoren; Kompatibilitätsaliase sind für ältere Integrationen enthalten.
{
"contractVersion": 1,
"playbackMode": "streaming",
"sessionId": "c9006ed8-58c8-45db-9ed0-311d1047c210",
"contentId": "course-12-lesson-4",
"drmSystem": "widevine",
"manifestUrl": "https://media.example.test/course-12/manifest.mpd",
"manifestUrls": {"dash": "https://media.example.test/course-12/manifest.mpd"},
"expiresAt": "2026-10-26T12:10:00Z",
"drm": {
"system": "widevine",
"licenseServerUrl": "https://license6.drm-x.com/v1/licenses/widevine",
"drmLicenseToken": "REDACTED_EXAMPLE_ONLY",
"tokenType": "Bearer",
"fairPlayCertificateUrl": null
},
"release": {
"url": "https://license6.drm-x.com/v1/playback-sessions/release",
"method": "POST",
"authorizationScheme": "Bearer"
},
"policy": {"maximumHeight": 1080, "allowedTrackTypes": ["AUDIO", "SD", "HD"]},
"tracks": {"audioLanguageSelection": true, "subtitleLanguageSelection": true, "languageTagStandard": "BCP-47"},
"platformCapabilities": null,
"playerBranding": null,
"token": "REDACTED_EXAMPLE_ONLY",
"tokenType": "Bearer",
"licenseServerUrl": "https://license6.drm-x.com/v1/licenses/widevine",
"fairPlayCertificateUrl": null,
"releaseUrl": "https://license6.drm-x.com/v1/playback-sessions/release",
"maximumHeight": 1080,
"allowedTrackTypes": ["AUDIO", "SD", "HD"]
}
Authentifizierung und vertrauenswürdige Anfragefelder#
Rufen Sie diesen API aus Ihrem Backend mit einem Projekt API-Client auf, der license-tokens:create hat. Verwenden Sie die Umgebung UUID als siteId. Ihr authentifizierter Viewer ruft Ihren Endpunkt auf; Ihr Endpunkt liefert die vertrauenswürdigen Felder unten.
| Feld | Bedeutung | Integrationsregel |
|---|---|---|
contentId | Die veröffentlichte Inhaltsreferenz | Lösen Sie aus Ihrem vertrauenswürdigen Katalog nach der Berechtigungsprüfung. |
subject | Ihre stabile Viewer-Kennung | Ableiten von der authentifizierten Sitzung, nicht von einem Client bereitgestellten Benutzer ID. |
drmSystem | widevine, playready, fairplay oder wiseplay | Passen Sie die ausgewählten DRM zu den Player Fähigkeiten. |
sessionId | Identität dieses Wiedergabeversuchs | Generieren Sie einen neuen, unvorhersehbaren Wert für jeden Versuch. |
contentType | vod oder live | Verwenden Sie den Typ, der für den Inhalt registriert ist. |
playbackMode | streaming im Vertrag v1 | Die Offline-Wiedergabe erfordert eine spätere Vertragsverlängerung. |
licensePolicyTemplate / licensePolicy | Eine benannte Richtlinie oder eine benutzerdefinierte Richtlinie | Wählen Sie auf Ihrem Server aus; geben Sie nicht beide an. siehe policy rules. |
platformCapabilities | Plattform, DRM Systeme, manifeste Typen und Gerätehinweise | Senden Sie explizite Funktionen mit neuen Integrationen. Sie beschreiben den Client; sie überschreiben die Lizenzrichtlinie nicht. |
Verwenden Sie die Antwort-Deskriptoren#
Verwenden Sie die verschachtelten Contract v1-Deskriptoren. Konstruieren Sie keine Lizenz-URLs aus Vermutungen oder ersetzen Sie registrierte Manifest-URLs durch Player-Eingaben.
| Antwortfeld | Wie man es benutzt |
|---|---|
contractVersion | Stellen Sie sicher, dass die zurückgegebene Vertragsversion von Ihrer Integration unterstützt wird. |
manifestUrl / manifestUrls | Laden Sie das autoritativ ausgewählte Manifest oder eine zurückgegebene kompatible Variante. |
expiresAt | Der Ablauf dieser begrenzten Ermächtigung. |
drm | Lesen Sie system, licenseServerUrl, drmLicenseToken, tokenType und den optionalen fairPlayCertificateUrl. Ein Customer-Token-Proxy kann die Browser-zugewandte Autorisierung durch eine eigene begrenzte Sitzung ersetzen. |
release | Verwenden Sie seine url, method und authorizationScheme, um die Sitzung zu veröffentlichen, wenn die Wiedergabe endet. |
policy | Ehre maximumHeight und allowedTrackTypes. Der Anbieter setzt die unterschriebene Richtlinie weiterhin durch. |
tracks | Lesen Sie Audio-/Untertitel-Sprachauswahlfähigkeit und den Sprach-Tag-Standard. |
Geben Sie Ihre Player-Antwort mit Cache-Control: no-store zurück. leiten Sie das Projekt Access Key niemals an den Browser weiter. Beschränken Sie die Autorisierungs-Header auf die zurückgegebenen Lizenz- und Zertifikatsrouten.
Behandeln Sie Fehler und veröffentlichen Sie Reservierungen#
Inspektion der HTTP Status und maschinenlesbar code. Behalten Sie die requestId für Troubleshooting und Respekt retryable; Eine verweigerte Berechtigung oder ungültige Politik erfordert eine korrigierte Entscheidung, keine Wiederholungsschleife. Wiedergabesitzungsfehlerreferenz.
Veröffentlichen Sie die Reservierung auf Stop, Wiedergabeersatz, Terminalfehler und Anwendungsabschaltung. Ein neuer Wiedergabeversuch erhält eine neue Sitzung ID.
POST https://license6.drm-x.com/v1/playback-sessions/release
Authorization: Bearer REDACTED_EXAMPLE_ONLY
Accept: application/json
HTTP/1.1 200 OK
{"contractVersion":1,"released":true,"code":"license_session_released","requestId":"example-request-id"}
Verwenden Sie die zurückgegebene Freigabe-URL und das Autorisierungsschema mit demselben DRM License Token. Ein Anfragekörper ist nicht erforderlich. Eine authentifizierte wiederholte Freigabe liefert HTTP 200 mit released false und code license_session_not_active. Abgelaufene oder ungültige Autorisierung kann vor der Freigabe fehlschlagen; holen Sie für einen neuen Wiedergabeversuch eine neue Autorisierung ein. Wiederholen Sie vorübergehende Dienstfehler mit zunehmender Wartezeit und begrenzter Versuchszahl.
Dieser öffentliche Vertrag beschreibt Streaming. Kundeneigene Offline-Endpunkte und gerätegebundene dauerhafte Lizenzen haben eigene Abläufe. Verwenden Sie diese Streaming-Antwort nicht als Offline-Lizenz.
DRM-X 6.0