DRM-X 6.0 logo de la colombe et de la branche d'oliveDRM-X 6.0Documentation
◎ Français

Créer une session de lecture

Request and consume the DRM-X Universal Playback Session Contract with authentication, trusted Content IDs, and bounded authorization.

Voir le MarkdownExemples en ligneMis à jour le 2026-10-26

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.

  1. Spectateur

    Se connecte à votre service et demande une vidéo.

  2. Votre backend

    Vérifie l’achat, l’abonnement ou toute autre autorisation d’accès de l’utilisateur.

  3. DRM-X

    Applique les règles choisies et renvoie la configuration ainsi que l’autorisation de lecture.

  4. Lecteur

    Utilise l’autorisation reçue pour demander la licence DRM nécessaire à la lecture.

Votre moteur décide de l'accès; DRM-X applique la politique signée. Les licences de médias chiffrés et DRM suivent des chemins de livraison séparés.
API

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.

ChampSignificationRègle d'intégration
contentIdLa référence de contenu publiéeRésoudre à partir de votre catalogue de confiance après la vérification des droits.
subjectVotre identifiant de visionneur stableDérivé de la session authentifiée, pas d'un utilisateur fourni par le client ID.
drmSystemwidevine, playready, fairplay ou wiseplayCorrespond à la sélection DRM à la lecteur capacités.
sessionIdIdentité de cette tentative de lectureGénérer une nouvelle valeur imprévisible pour chaque tentative.
contentTypevod ou liveUtilisez le type enregistré pour le contenu.
playbackModestreaming dans Contrat v1La lecture hors ligne nécessite une extension ultérieure du contrat.
licensePolicyTemplate / licensePolicyUne politique désignée ou une politique sur les douanesSélectionnez sur votre serveur; ne fournissez pas les deux. Voir les règles de politique .
platformCapabilitiesPlate-forme, systèmes DRM, types de manifestes et conseils d'appareilEnvoyer des capacités explicites avec de nouvelles intégrations. Ils décrivent le client; ils ne remplacent pas la politique de licence.

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éponseComment l'utiliser
contractVersionVérifiez que la version du contrat retourné est supportée par votre intégration.
manifestUrl / manifestUrlsChargez le manifeste sélectionné faisant autorité ou une variante compatible retournée.
expiresAtL'expiration de cette autorisation limitée.
drmLire 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.
releaseUtilisez ses url, method et authorizationScheme pour libérer la session lorsque la lecture prend fin.
policyHonor maximumHeight et allowedTrackTypes. Le fournisseur applique toujours la politique signée.
tracksLisez 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.