Créer une session de lecture
Request and consume the DRM-X Universal Playback Session Contract with authentication, trusted Content IDs, and bounded authorization.
Comment la lecture est autorisée
Votre backend décide qui peut regarder le contenu. DRM-X fournit l’autorisation de lecture. Le lecteur l’utilise pour demander une licence DRM.
- Spectateur
Se connecte à votre service et demande une vidéo.
- Votre backend
Vérifie l’achat, l’abonnement ou toute autre autorisation d’accès de l’utilisateur.
- DRM-X
Applique les règles choisies et renvoie la configuration ainsi que l’autorisation de lecture.
- Lecteur
Utilise l’autorisation reçue pour demander la licence DRM nécessaire à la lecture.
Créer une session de lecture universelle #
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"
}
}
Une réponse réussie au contrat v1 comprend le manifeste faisant autorité, les variantes disponibles, DRM-licence spécifique URL, une courte durée de vie DRM License Token ou l'autorisation de procuration du client, un itinéraire de libération, la hauteur maximale autorisée et les voies autorisées. Cache-Control: no-store.
Utilisez une session imprévisible ID pour chaque tentative de lecture réelle. La réutilisation d'un ID à travers les appareils va à l'encontre du comptage simultané du flux.
Exemple de réponse réussie
Cet exemple utilise des URL fictives non fonctionnelles et un jeton de remplacement. Consultez les descripteurs imbriqués ; les alias de compatibilité sont inclus pour les anciennes intégrations.
{
"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"]
}
Authentification et champs de requête de confiance#
Appelez ce API de votre serveur avec un client de projet API qui a license-tokens:create. Utilisez l'environnement UUID comme siteId. Votre visionneur authentifié appelle votre terminal; votre terminal fournit les champs de confiance ci-dessous.
Consommez les descripteurs de réponse#
Utilisez les descripteurs de contrat v1 imbriqués. Ne construisez pas d'URL de licence à partir de devines ou remplacez les URLs manifestes enregistrées par lecteur entrées.
| Champ de réponse | Comment l'utiliser |
|---|---|
contractVersion | Vérifiez que la version du contrat retourné est supportée par votre intégration. |
manifestUrl / manifestUrls | Chargez le manifeste sélectionné faisant autorité ou une variante compatible retournée. |
expiresAt | L'expiration de cette autorisation limitée. |
drm | Lire system, licenseServerUrl, drmLicenseToken, tokenType et l'option fairPlayCertificateUrl. Un proxy jeton du client peut remplacer l'autorisation face au navigateur par sa propre session délimitée. |
release | Utilisez ses url, method et authorizationScheme pour libérer la session lorsque la lecture prend fin. |
policy | Honor maximumHeight et allowedTrackTypes. Le fournisseur applique toujours la politique signée. |
tracks | Lisez la capacité de sélection de la langue audio/sous-titre et la norme de langue-tag. |
Retournez votre réponse lecteur avec Cache-Control: no-store. Ne transmettez jamais le projet Access Key dans le navigateur. Limitez les en-têtes d'autorisation aux itinéraires de licence et de certificat retournés.
Gérer les erreurs et les réservations de libération#
Inspectez l'état HTTP et la machine-readable code. Conservez le requestId pour le dépannage et le respect retryable ; un droit refusé ou une police invalide a besoin d'une décision corrigée, pas d'une boucle de réessayer. Consultez la référence d'erreur de session playback .
Relâchez la réservation sur Stop, le remplacement de la lecture, les erreurs de terminal et l'arrêt de l'application. Une nouvelle tentative de lecture obtient une nouvelle session 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"}
Utilisez l’URL de libération et le schéma d’autorisation renvoyés, avec le même DRM License Token. Aucun corps de requête n’est nécessaire. Une libération répétée et authentifiée renvoie HTTP 200 avec released false et code license_session_not_active. Une autorisation expirée ou invalide peut échouer avant la libération ; obtenez une nouvelle autorisation pour une nouvelle tentative de lecture. Réessayez les erreurs temporaires du service avec un délai progressif et un nombre limité de tentatives.
Ce contrat public décrit le streaming. Les endpoints hors ligne du client et les licences persistantes liées à un appareil utilisent des workflows distincts ; ne réutilisez pas cette réponse de streaming comme licence hors ligne.
DRM-X 6.0