Crea una sesión de reproducción
Request and consume the DRM-X Universal Playback Session Contract with authentication, trusted Content IDs, and bounded authorization.
Cómo se autoriza la reproducción
Su backend decide quién puede ver el contenido. DRM-X proporciona la autorización de reproducción. El reproductor la utiliza para solicitar una licencia DRM.
- Espectador
Inicia sesión en su servicio y solicita un vídeo.
- Su backend
Comprueba la compra, la suscripción u otro permiso del usuario para ver el contenido.
- DRM-X
Aplica las reglas seleccionadas y devuelve la configuración y la autorización de reproducción.
- Reproductor
Utiliza la autorización recibida para solicitar la licencia DRM necesaria para reproducir el contenido.
Crear una sesión de reproducción universal #
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"
}
}
Una respuesta exitosa de Contrato v1 incluye el manifiesto autoritativo, las variantes de manifiesto disponibles, una licencia DRM- específica URL, una autorización proxy de corta duración DRM License Token o de cliente, una ruta de liberación, la altura máxima licenciada, y las pistas permitidas. Devuélvalo con Cache-Control: no-store.
Usar una sesión impredecible ID para cada intento de reproducción real. Reutilizar un ID a través de dispositivos derrota el conteo de corriente simultánea.
Ejemplo de respuesta correcta
Este ejemplo utiliza URL de muestra no operativas y un token de marcador de posición. Lea los descriptores anidados; los alias de compatibilidad se incluyen para integraciones anteriores.
{
"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"]
}
Autenticación y campos de solicitud de confianza #
Llame a este API de su backend con un proyecto API cliente que tiene license-tokens:create. Utilice el medio ambiente UUID como siteId. Su espectador autenticado llama su punto final; su punto final proporciona los campos de confianza a continuación.
| Campo | Significado | Regla de integración |
|---|---|---|
contentId | La referencia del contenido publicado | Resolver desde su catálogo de confianza después del cheque de derechos. |
subject | Su identificador de visualización estable | Derivado de la sesión autenticada, no un usuario suministrado por el cliente ID. |
drmSystem | widevine, playready, fairplay, o wiseplay | Coincide con las capacidades seleccionadas DRM a las reproductor. |
sessionId | Identidad de este intento de reproducción | Generar un nuevo valor impredecible para cada intento. |
contentType | vod o live | Utilice el tipo registrado para el contenido. |
playbackMode | streaming en Contrato v1 | La reproducción sin línea requiere una prórroga posterior del contrato. |
licensePolicyTemplate / licensePolicy | Una política o política personalizada nombrada | Seleccione en su servidor; no provea ambos. Ver reglas de política. |
platformCapabilities | Plataforma, DRM sistemas, tipos de manifiesto, e indicios de dispositivo | Enviar capacidades explícitas con nuevas integraciones. Describen al cliente; no anulan la política de licencia. |
Consumir los descriptores de respuesta #
Utilice los descriptores de Contrato anidado v1. No construya URLs de licencias de adivinanzas o reemplace URLs de manifiesto registrados con entradas reproductor.
| Campo de respuesta | Cómo utilizarlo |
|---|---|
contractVersion | Verifique que la versión del contrato devuelto es compatible con su integración. |
manifestUrl / manifestUrls | Cargue el manifiesto autorizado seleccionado o una variante compatible devuelta. |
expiresAt | La expiración de esta autorización consolidada. |
drm | Lea system, licenseServerUrl, drmLicenseToken, tokenType, y el opcional fairPlayCertificateUrl. Un proxy de token del cliente puede reemplazar la autorización del navegador con su propia sesión atada. |
release | Utilice su url, method, y authorizationScheme para liberar la sesión cuando termina la reproducción. |
policy | Honor maximumHeight y allowedTrackTypes. El proveedor aún hace cumplir la política firmada. |
tracks | Lea la capacidad de selección de audio/subtítulos y el estándar de etiquetas de idioma. |
Regrese su reproductor respuesta con Cache-Control: no-store. Nunca reenvíe el proyecto Access Key al navegador. Restringir los encabezados de autorización a la licencia devuelta y las rutas de certificado.
Errores de mano y reservas de liberación #
Inspeccione el estado HTTP y legible por máquina code. Retenga el requestId para la solución de problemas y respeto retryable; un derecho negado o una política inválida necesita una decisión corregida, no un bucle de reingreso. Ver la referencia de error playback session.
Libere la reserva en Stop, reemplazo de reproducción, errores terminales y cierre de aplicaciones. Un nuevo intento de reproducción consigue una nueva sesión 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"}
Use la URL de liberación y el esquema de autorización devueltos, con el mismo DRM License Token. No se requiere cuerpo de solicitud. Una liberación repetida y autenticada devuelve HTTP 200, released false y code license_session_not_active. Una autorización caducada o no válida puede fallar antes de liberar la sesión; obtenga una nueva autorización para un nuevo intento de reproducción. Reintente los fallos temporales del servicio con espera progresiva y un límite de intentos.
Este contrato público describe la reproducción en streaming. Los endpoints de uso sin conexión del cliente y las licencias persistentes vinculadas a dispositivos tienen flujos independientes; no reutilice esta respuesta de streaming como licencia sin conexión.
DRM-X 6.0