DRM-X 6.0 logo de pomba e ramo de oliveiraDRM-X 6.0Documentação
◎ Português

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.

Ver MarkdownExemplos onlineAtualizado em 2026-10-26

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.

  1. Espectador

    Entra no seu serviço e solicita um vídeo.

  2. Seu backend

    Verifica a compra, a assinatura ou outra permissão do usuário para assistir.

  3. DRM-X

    Aplica as regras escolhidas e retorna a configuração e a autorização de reprodução.

  4. Player

    Usa a autorização recebida para solicitar a licença DRM necessária para a reprodução.

Sua infraestrutura decide o acesso; DRM-X aplica a política assinada. Mídia criptografada e licenças DRM seguem caminhos de entrega separados.
API

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.

CampoSignificadoRegra de integração
contentIdReferência do conteúdo publicadoResolva a partir do seu catálogo de confiança após a verificação de direitos.
subjectO seu identificador de visualizador estávelDerivado da sessão autenticada, não de um usuário fornecido pelo cliente ID.
drmSystemwidevine, playready, fairplay ou wiseplayCoincidir os DRM selecionados com os recursos reprodutor.
sessionIdIdentidade desta tentativa de reproduçãoGerar um novo valor imprevisível para cada tentativa.
contentTypevod ou liveUse o tipo registrado para o conteúdo.
playbackModestreaming no contrato v1A reprodução offline requer uma extensão posterior do contrato.
licensePolicyTemplate / licensePolicyUma política ou política personalizada nomeadaSelecione no seu servidor; não forneça ambos. Veja regras de política.
platformCapabilitiesPlataforma, sistemas DRM, tipos manifestos e dicas de dispositivosEnviar 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 respostaComo usá-lo
contractVersionVerifique se a versão do contrato retornado é suportada pela sua integração.
manifestUrl / manifestUrlsCarregar o manifesto autorizado selecionado ou uma variante compatível devolvida.
expiresAtA expiração desta autorização limitada.
drmLeia 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.
releaseUse seu url, method e authorizationScheme para liberar a sessão quando a reprodução terminar.
policyHonra maximumHeight e allowedTrackTypes. O provedor ainda executa a política assinada.
tracksLeia á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.