Crie uma sessão de reprodução
Solicitar e consumir o DRM-X Universal Playback Session Contract com autenticação, confiável Content IDs, e autorização limitada.
Como a reprodução é autorizada
Seu backend decide quem pode assistir. DRM-X fornece a autorização de reprodução. O player usa essa autorização para solicitar uma licença DRM.
- Espectador
Entra no seu serviço e solicita um vídeo.
- Seu backend
Verifica a compra, a assinatura ou outra permissão do usuário para assistir.
- DRM-X
Aplica as regras escolhidas e retorna a configuração e a autorização de reprodução.
- Player
Usa a autorização recebida para solicitar a licença DRM necessária para a reprodução.
Criar uma Sessão Universal de Reprodução#
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"
}
}
Uma resposta bem sucedida do Contrato v1 inclui o manifesto autorizado, variantes manifestas disponíveis, uma DRM-licença específica URL, de curta duração DRM License Token ou autorização proxy do cliente, uma rota de liberação, a altura máxima licenciada, e faixas permitidas. Cache-Control: no-store.
Use uma sessão imprevisível ID para cada tentativa de reprodução real. A reutilização de um ID nos dispositivos derrota a contagem de fluxos simultâneos.
Exemplo de resposta bem-sucedida
Este exemplo usa URLs de demonstração não funcionais e um token de substituição. Consulte os descritores aninhados; os aliases de compatibilidade são incluídos para integrações 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"]
}
Autenticação e campos de requisição confiáveis#
Chame isto API da sua infra- estrutura com um cliente do projecto API que tem license-tokens:create. Use o ambiente UUID como siteId. O seu visualizador autenticado chama o seu ponto final; o seu ponto final fornece os campos de confiança abaixo.
| Campo | Significado | Regra de integração |
|---|---|---|
contentId | Referência do conteúdo publicado | Resolva a partir do seu catálogo de confiança após a verificação de direitos. |
subject | O seu identificador de visualizador estável | Derivado da sessão autenticada, não de um usuário fornecido pelo cliente ID. |
drmSystem | widevine, playready, fairplay ou wiseplay | Coincidir os DRM selecionados com os recursos reprodutor. |
sessionId | Identidade desta tentativa de reprodução | Gerar um novo valor imprevisível para cada tentativa. |
contentType | vod ou live | Use o tipo registrado para o conteúdo. |
playbackMode | streaming no contrato v1 | A reprodução offline requer uma extensão posterior do contrato. |
licensePolicyTemplate / licensePolicy | Uma política ou política personalizada nomeada | Selecione no seu servidor; não forneça ambos. Veja regras de política. |
platformCapabilities | Plataforma, sistemas DRM, tipos manifestos e dicas de dispositivos | Enviar capacidades explícitas com novas integrações. Eles descrevem o cliente; eles não sobrepõem a política de licença. |
Consuma os descritores de resposta#
Use os descritores do Contrato aninhado v1. Não construa URLs de licença de palpites ou substitua URLs manifestos registrados por entradas reprodutor.
| Campo de resposta | Como usá-lo |
|---|---|
contractVersion | Verifique se a versão do contrato retornado é suportada pela sua integração. |
manifestUrl / manifestUrls | Carregar o manifesto autorizado selecionado ou uma variante compatível devolvida. |
expiresAt | A expiração desta autorização limitada. |
drm | Leia system, licenseServerUrl, drmLicenseToken, tokenType e o opcional fairPlayCertificateUrl. Um proxy de token do cliente pode substituir a autorização voltada para o navegador por sua própria sessão limitada. |
release | Use seu url, method e authorizationScheme para liberar a sessão quando a reprodução terminar. |
policy | Honra maximumHeight e allowedTrackTypes. O provedor ainda executa a política assinada. |
tracks | Leia áudio/subtítulo capacidade de seleção de idioma e o padrão de tag-linguagem. |
Devolva a sua resposta reprodutor com Cache-Control: no-store. Nunca envie o projeto Access Key para o navegador. Restrinja os cabeçalhos de autorização para as rotas de licença e certificado devolvidos.
Lidar com erros e reservas de lançamento#
Inspeccionar a HTTP status e legível por máquina code. Manter o requestId para solução de problemas e respeito retryable; um direito negado ou uma política inválida precisa de uma decisão corrigida, não de um ciclo de repetição. referência de erro da sessão de reprodução.
Libere a reserva no Stop, substituição de reprodução, erros de terminal e desligamento da aplicação. Uma nova tentativa de reprodução obtém uma nova sessão 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 a URL de liberação e o esquema de autorização retornados, com o mesmo DRM License Token. Não é necessário corpo de solicitação. Uma liberação repetida e autenticada retorna HTTP 200 com released false e code license_session_not_active. Uma autorização expirada ou inválida pode falhar antes da liberação; obtenha nova autorização para uma nova tentativa de reprodução. Repita falhas temporárias do serviço com espera progressiva e limite de tentativas.
Este contrato público descreve o streaming. Os endpoints offline do cliente e as licenças persistentes vinculadas a dispositivos têm fluxos separados; não reutilize esta resposta de streaming como licença offline.
DRM-X 6.0