DRM do PlayReady
Este tópico descreve como adicionar conteúdo de mídia protegido pelo PlayReady ao seu aplicativo UWP (Plataforma Universal do Windows).
O DRM do PlayReady permite que os desenvolvedores criem aplicativos UWP capazes de fornecer conteúdo do PlayReady ao usuário enquanto impõem as regras de acesso definidas pelo provedor de conteúdo. Esta seção descreve as alterações feitas no DRM do Microsoft PlayReady para Windows 10 e como modificar seu aplicativo UWP do PlayReady para dar suporte às alterações feitas da versão anterior do Windows 8.1 para a versão do Windows 10.
Tópico | Descrição |
---|---|
Hardware DRM | Este tópico fornece uma visão geral de como adicionar o DRM (gerenciamento de direitos digitais) baseado em hardware do PlayReady ao seu aplicativo UWP. |
Streaming adaptável com PlayReady | Este artigo descreve como adicionar streaming adaptável de conteúdo multimídia com proteção de conteúdo do Microsoft PlayReady a um aplicativo UWP (Plataforma Universal do Windows). Atualmente, esse recurso oferece suporte à reprodução de conteúdo Http Live Streaming (HLS) e Dynamic Streaming over HTTP (DASH). |
Novidades no DRM do PlayReady
A lista a seguir descreve os novos recursos e as alterações feitas no DRM do PlayReady para Windows 10.
Adicionado gerenciamento de direitos digitais de hardware (HWDRM).
O suporte à proteção de conteúdo baseado em hardware permite a reprodução segura de conteúdo de alta definição (HD) e ultra-alta definição (UHD) em várias plataformas de dispositivos. O material de chave (incluindo chaves privadas, chaves de conteúdo e qualquer outro material de chave usado para derivar ou desbloquear essas chaves) e amostras de vídeo compactadas e descompactadas descriptografadas são protegidas aproveitando a segurança do hardware. Quando o DRM de hardware está sendo usado, nenhum ativador desconhecido (reproduzir para desconhecido / reproduzir para desconhecido com downres) tem significado, pois o pipeline HWDRM sempre conhece a saída que está sendo usada. Para obter mais informações, consulte DRM de hardware.
O PlayReady não é mais um componente da estrutura appX, mas sim um componente do sistema operacional in-box. O namespace foi alterado de Microsoft.Media.PlayReadyClient para Windows.Media.Protection.PlayReady.
Os seguintes cabeçalhos que definem os códigos de erro do PlayReady agora fazem parte do SDK (Software Development Kit) do Windows: Windows.Media.Protection.PlayReadyErrors.h e Windows.Media.Protection.PlayReadyResults.h.
Fornece aquisição proativa de licenças não persistentes.
As versões anteriores do DRM do PlayReady não davam suporte à aquisição proativa de licenças não persistentes. Esse recurso foi adicionado a esta versão. Isso pode diminuir o tempo para o primeiro quadro. Para obter mais informações, consulte Adquirir proativamente uma licença não persistente antes da reprodução.
Fornece aquisição de várias licenças em uma mensagem.
Permite que o aplicativo cliente adquira várias licenças não persistentes em uma mensagem de aquisição de licença. Isso pode diminuir o tempo para o primeiro quadro adquirindo licenças para várias partes do conteúdo enquanto o usuário ainda está navegando em sua biblioteca de conteúdo; Isso evita um atraso na aquisição da licença quando o usuário seleciona o conteúdo a ser reproduzido. Além disso, permite que fluxos de áudio e vídeo sejam criptografados para chaves separadas, permitindo um cabeçalho de conteúdo que inclui vários identificadores de chave (KIDs); Isso permite que uma única aquisição de licença adquira todas as licenças para todos os fluxos em um arquivo de conteúdo, em vez de ter que usar lógica personalizada e várias solicitações de aquisição de licença para obter o mesmo resultado.
Adicionado suporte à expiração em tempo real ou licença de duração limitada (LDL).
Fornece a capacidade de definir a expiração em tempo real das licenças e fazer a transição suave de uma licença expirada para outra licença (válida) no meio da reprodução. Quando combinado com a aquisição de várias licenças em uma mensagem, isso permite que um aplicativo adquira várias LDLs de forma assíncrona enquanto o usuário ainda está navegando na biblioteca de conteúdo e só adquira uma licença de duração mais longa depois que o usuário tiver selecionado o conteúdo para reprodução. A reprodução começará mais rapidamente (porque uma licença já está disponível) e, como o aplicativo terá adquirido uma licença de duração mais longa quando o LDL expirar, continuará a reprodução sem problemas até o final do conteúdo sem interrupção.
Adicionadas cadeias de licenças não persistentes.
Adicionado suporte para restrições baseadas em tempo (incluindo expiração, expiração após a primeira reprodução e expiração em tempo real) em licenças não persistentes.
Adicionado suporte à política HDCP Tipo 1 (versão 2.2 no Windows 10).
Consulte Coisas a considerar para obter mais informações.
Miracast agora está implícito como uma saída.
Adicionada parada segura.
A parada segura fornece os meios para um dispositivo PlayReady declarar com confiança a um serviço de streaming de mídia que a reprodução de mídia foi interrompida para qualquer parte do conteúdo. Esse recurso garante que seus serviços de streaming de mídia forneçam imposição e relatórios precisos de limitações de uso em diferentes dispositivos para uma determinada conta.
Adicionada separação de licenças de áudio e vídeo.
Faixas separadas evitam que o vídeo seja decodificado como áudio; permitindo uma proteção de conteúdo mais robusta. Os padrões emergentes estão exigindo chaves separadas para faixas de áudio e visual.
Adicionado MaxResDecode.
Esse recurso foi adicionado para limitar a reprodução de conteúdo a uma resolução máxima, mesmo quando estiver de posse de uma chave mais capaz (mas não de uma licença). Ele dá suporte a casos em que vários tamanhos de fluxo são codificados com uma única chave.
As seguintes novas interfaces, classes e enumerações foram adicionadas ao DRM do PlayReady:
- Interface IPlayReadyLicenseAcquisitionServiceRequest
- Interface IPlayReadyLicenseSession
- Interface IPlayReadySecureStopServiceRequest
- Classe PlayReadyLicenseSession
- Classe PlayReadySecureStopIterable
- Classe PlayReadySecureStopIterator
- Enumerador PlayReadyHardwareDRMFeatures
Um novo exemplo foi criado para demonstrar como usar os novos recursos do DRM do PlayReady. O exemplo pode ser baixado do Navegador de Exemplos de Código.
Aspectos a considerar
- O DRM do PlayReady agora dá suporte ao HDCP Tipo 1 (com suporte no HDCP versão 2.1 ou posterior). O PlayReady carrega uma política de restrição de tipo HDCP na licença para o dispositivo impor. No Windows 10, essa política imporá que o HDCP 2.2 ou posterior esteja envolvido. Esse recurso pode ser habilitado em sua licença do SDK do PlayReady Server v3.0 (o servidor controla essa política na licença usando o GUID de Restrição de Tipo HDCP). Para obter mais informações, consulte as regras de conformidade e robustez do PlayReady.
- O Windows Media Video (também conhecido como VC-1) não é suportado no DRM de hardware (consulte Substituir DRM de hardware).
- O DRM do PlayReady agora dá suporte ao padrão de compactação de vídeo HEVC /H.265 (Codificação de Vídeo de Alta Eficiência). Para dar suporte ao HEVC, seu aplicativo deve usar o conteúdo do Common Encryption Scheme (CENC) versão 2, que inclui deixar os cabeçalhos de fatia do conteúdo em branco. Consulte ISO/IEC 23001-7 Tecnologia da informação – Tecnologias de sistemas MPEG – Parte 7: Criptografia comum em arquivos de formato de arquivo de mídia base ISO (versão de especificação ISO/IEC 23001-7:2015 ou posterior é necessária.) para obter mais informações. A Microsoft também recomenda usar o CENC versão 2 para todo o conteúdo do HWDRM. Além disso, alguns DRM de hardware suportarão HEVC e outros não (consulte Substituir DRM de hardware).
- Para aproveitar determinados novos recursos do PlayReady 3.0 (incluindo, mas não se limitando a, SL3000 para clientes baseados em hardware, aquisição de várias licenças não persistentes em uma mensagem de aquisição de licença e restrições baseadas em tempo em licenças não persistentes), o servidor PlayReady deve ser a versão de lançamento do Microsoft PlayReady Server Software Development Kit v3.0.2769 ou posterior.
- Dependendo da Política de Proteção de Saída especificada na licença de conteúdo, a reprodução de mídia pode falhar para os usuários finais se a saída conectada não suportar esses requisitos. A tabela a seguir lista o conjunto de erros comuns que ocorrem como resultado. Para obter mais informações, consulte as regras de conformidade e robustez do PlayReady.
Erro | Valor | Descrição |
---|---|---|
ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP | 0xC0262513 | A Política de Proteção de Saída da licença exige que o monitor ative o HDCP, mas o HDCP não pôde ser ativado. |
MF_E_POLICY_UNSUPPORTED | 0xC00D7159 | A Política de Proteção de Saída da licença exige que o monitor ative o HDCP Tipo 1, mas o HDCP Tipo 1 não pôde ser ativado. |
DRM_E_TEE_OUTPUT_PROTECTION_REQUIREMENTS_NOT_MET | 0x8004CD22 | Esse código de erro ocorre apenas ao ser executado em DRM de hardware. A Política de Proteção de Saída da licença exige que o monitor ative o HDCP ou reduza a resolução efetiva do conteúdo, mas o HDCP não pôde ser ativado e a resolução efetiva do conteúdo não pôde ser reduzida porque o DRM de hardware não dá suporte à redução da resolução do conteúdo. No DRM do software, o conteúdo é reproduzido. Consulte Considerações sobre o uso de DRM de hardware. |
ERROR_GRAPHICS_OPM_NOT_SUPPORTED | 0xc0262500 | O driver gráfico não dá suporte à Proteção de Saída. Por exemplo, o monitor está conectado por meio de VGA ou um driver gráfico apropriado para a saída digital não está instalado. No último caso, o driver típico instalado é o Microsoft Basic Display Adapter e a instalação de um driver gráfico apropriado resolverá o problema. |
Proteção de saída
A seção a seguir descreve o comportamento ao usar o DRM do PlayReady para Windows 10 com políticas de proteção de saída em uma licença do PlayReady.
O DRM do PlayReady dá suporte aos níveis de proteção de saída contidos na Especificação de Direitos de Mídia Extensíveis do Microsoft PlayReady. Esse documento pode ser encontrado no pacote de documentação que acompanha os produtos licenciados do PlayReady.
Observação
Os valores permitidos para níveis de proteção de saída que podem ser definidos por um servidor de licenciamento são regidos pelas Regras de Conformidade do PlayReady.
O DRM do PlayReady permite a reprodução de conteúdo com políticas de proteção de saída somente em conectores de saída, conforme especificado nas Regras de Conformidade do PlayReady. Para obter mais informações sobre os termos do conector de saída especificados nas Regras de Conformidade do PlayReady, consulte Termos Definidos para Regras de Conformidade e Robustez do PlayReady.
Esta seção se concentra em cenários de proteção de saída com o DRM do PlayReady para Windows 10 e o DRM de Hardware do PlayReady para Windows 10, que também está disponível em alguns clientes Windows. Com o HWDRM do PlayReady, todas as proteções de saída são impostas de dentro da implementação do TEE do Windows (consulte DRM de hardware). Como resultado, alguns comportamentos diferem de quando se usa o SWDRM do PlayReady (DRM de software):
- Suporte para OPL (Nível de Proteção de Saída) para Vídeo Digital Não Compactado 270: o HWDRM do PlayReady para Windows 10 não dá suporte à resolução para baixo e imporá que o HDCP (Proteção de Conteúdo Digital de Alta Largura de Banda) esteja envolvido. Recomenda-se que o conteúdo de alta definição para HWDRM tenha um OPL maior que 270 (embora não seja obrigatório). Além disso, você deve definir a restrição de tipo HDCP na licença (HDCP versão 2.2 ou posterior).
- Ao contrário do SWDRM, com o HWDRM, as proteções de saída são aplicadas em todos os monitores com base no monitor menos capaz. Por exemplo, se o usuário tiver dois monitores conectados em que um dá suporte a HDCP e o outro não, a reprodução falhará se a licença exigir HDCP, mesmo que o conteúdo esteja sendo renderizado apenas no monitor que dá suporte a HDCP. No SWDRM, o conteúdo será reproduzido desde que esteja sendo renderizado apenas no monitor compatível com HDCP.
- Não há garantia de que o HWDRM seja usado pelo cliente e seguro, a menos que as seguintes condições sejam atendidas pelas chaves de conteúdo e licenças:
- A licença usada para a chave de conteúdo de vídeo deve ter um nível de segurança mínimo de 3000.
- O áudio deve ser criptografado para uma chave de conteúdo diferente do vídeo, e a licença usada para áudio deve ter um nível de segurança mínimo de 2000. Alternativamente, o áudio pode ser deixado em claro.
- Todos os cenários SWDRM exigem que o nível mínimo de segurança da licença do PlayReady usada para a chave de conteúdo de áudio e/ou vídeo seja menor ou igual a 2000.
Níveis de proteção de saída
A tabela a seguir descreve os mapeamentos entre várias OPLs na licença do PlayReady e como o DRM do PlayReady para Windows 10 os impõe.
Vídeo
OPL | Vídeo digital compactado | Vídeo digital não compactado | TV analógica | |
---|---|---|---|---|
Qualquer | HDMI, DVI, DisplayPort, MHL | Componente, Compósito | ||
100 | N/A\* | Conteúdo de passes | Conteúdo de passes | |
150 | N/A\* | Passa o conteúdo quando CGMS-A CopyNever está ativado ou se CGMS-A não pode ser ativado | ||
200 | Passa o conteúdo quando CGMS-A CopyNever está ativado | |||
250 | Tenta envolver o HDCP, mas transmite conteúdo independentemente do resultado | N/A\* | ||
270 | SWDRM: Tentativas de envolver o HDCP. Se o HDCP não for ativado, o PC restringirá a resolução efetiva a 520.000 pixels por quadro e passará o conteúdo | HWDRM: Passa conteúdo com HDCP. Se o HDCP não for ativado, a reprodução nas portas HDMI/DVI será bloqueada | ||
300 |
**Quando a restrição de tipo HDCP NÃO está definida:** Passa conteúdo com HDCP. Se o HDCP não for ativado, a reprodução nas portas HDMI/DVI será bloqueada. **Quando a restrição de tipo HDCP É definida**: Passa o conteúdo com HDCP 2.2 e o tipo de fluxo de conteúdo definido como 1. Se o HDCP não for ativado ou o tipo de fluxo de conteúdo não puder ser definido como 1, a reprodução nas portas HDMI/DVI será bloqueada. |
|||
400 | Windows 10 nunca passa conteúdo de vídeo digital compactado para saídas, independentemente do valor OPL subsequente. Para obter mais informações sobre conteúdo de vídeo digital compactado, consulte as Regras de Conformidade para Produtos PlayReady. | N/A\* | ||
500 |
* Nem todos os valores para níveis de proteção de saída podem ser definidos por um servidor de licenciamento. Para obter mais informações, consulte Regras de conformidade do PlayReady.
Áudio
OPL | Áudio digital compactado | Áudio digital não compactado | Áudio analógico ou USB |
---|---|---|---|
HDMI, DisplayPort, MHL | HDMI, DisplayPort, MHL | Qualquer | |
100 | Conteúdo de passes | Conteúdo de passes | Conteúdo de passes |
150 | NÃO passa conteúdo | ||
200 | |||
250 | Transmite conteúdo quando o HDCP está ativado em HDMI, DisplayPort ou MHL, ou quando o SCMS está ativado e definido como CopyNever | ||
300 | Transmite conteúdo quando o HDCP está ativado em HDMI, DisplayPort ou MHL |
Miracast
O DRM do PlayReady permite que você reproduza conteúdo pela saída Miracast assim que o HDCP 2.0 ou posterior estiver ativado. No Windows 10, no entanto, o Miracast é considerado uma saída digital . Para obter mais informações sobre cenários Miracast, consulte as Regras de Conformidade do PlayReady. A tabela a seguir descreve os mapeamentos entre várias OPLs na licença do PlayReady e como o DRM do PlayReady os impõe nas saídas do Miracast.
OPL | Áudio digital compactado | Áudio digital não compactado | Vídeo digital compactado | Vídeo digital não compactado |
---|---|---|---|---|
100 | Transmite conteúdo quando o HDCP 2.0 ou posterior está ativado. Se não conseguir se envolver, NÃO passa o conteúdo | Transmite conteúdo quando o HDCP 2.0 ou posterior está ativado. Se não conseguir se envolver, NÃO passa o conteúdo | N/A\* | Transmite conteúdo quando o HDCP 2.0 ou posterior está ativado. Se não conseguir se envolver, NÃO passa o conteúdo |
150 | NÃO passa conteúdo | N/A\* | ||
200 | ||||
250 | Transmite conteúdo quando o HDCP 2.0 ou posterior está ativado. Se não conseguir se envolver, NÃO passa o conteúdo | |||
270 | N/A\* | |||
300 | Transmite conteúdo quando o HDCP 2.0 ou posterior está ativado. Se não conseguir se envolver, NÃO passa o conteúdo | NÃO passa conteúdo |
**Quando a restrição de tipo HDCP NÃO está definida:** Transmite conteúdo quando o HDCP 2.0 ou posterior está ativado. Se não conseguir se envolver, NÃO passa conteúdo. **Quando a restrição de tipo HDCP É definida:** Passa conteúdo com HDCP 2.2 e tipo de fluxo de conteúdo definido como 1. Se o HDCP não for ativado ou o tipo de fluxo de conteúdo não puder ser definido como 1, ele NÃO passará o conteúdo. |
|
400 | N/A\* | Windows 10 nunca passa conteúdo de vídeo digital compactado para saídas, independentemente do valor OPL subsequente. Para obter mais informações sobre conteúdo de vídeo digital compactado, consulte as Regras de Conformidade para Produtos PlayReady. | N/A\* | |
500 |
* Nem todos os valores para níveis de proteção de saída podem ser definidos por um servidor de licenciamento. Para obter mais informações, consulte Regras de conformidade do PlayReady.
Restrições de saída explícitas adicionais
A tabela a seguir descreve a implementação do DRM do PlayReady para Windows 10 de restrições explícitas de proteção de saída de vídeo digital.
Cenário | GUID | Se... | Então... |
---|---|---|---|
Tamanho máximo de decodificação de resolução efetiva | 9645E831-E01D-4FFF-8342-0A720E3E028F | A saída conectada é: saída de vídeo digital, Miracast, HDMI, DVI, etc. |
Passa o conteúdo quando restrito a:
|
Restrição de tipo HDCP | ABB2C6F1-E663-4625-A945-972D17B231E7 | A saída conectada é: saída de vídeo digital, Miracast, HDMI, DVI, etc. | Transmite conteúdo com HDCP 2.2 e o tipo de fluxo de conteúdo definido como 1. Se o HDCP 2.2 não for ativado ou o tipo de fluxo de conteúdo não puder ser definido como 1, ele NÃO passará conteúdo. O nível de proteção de saída de vídeo digital não compactado de um valor maior ou igual a 271 também deve ser especificado |
A tabela a seguir descreve a implementação do DRM do PlayReady para Windows 10 de restrições explícitas de proteção de saída de vídeo analógico.
Cenário | GUID | Se... | Então... | |
---|---|---|---|---|
Monitor de computador analógico | D783A191-E083-4BAF-B2DA-E69F910B3772 | A saída conectada é: VGA, DVI–analógico, etc. | SWDRM: O PC restringirá a resolução efetiva a 520.000 epx por quadro e passará o conteúdo | HWDRM: NÃO passa conteúdo |
Componente analógico | 811C5110-46C8-4C6E-8163-C0482A15D47E | A saída conectada é: componente | SWDRM: O PC restringirá a resolução efetiva a 520.000 epx por quadro e passará o conteúdo | HWDRM: NÃO passa conteúdo |
Saídas de TV analógicas | 2098DE8D-7DDD-4BAB-96C6-32EBB6FABEA3 | A TV analógica OPL é inferior a 151 | O CGMS-A deve ser acionado | |
225CD36F-F132-49EF-BA8C-C91EA28E4369 | A TV analógica OPL é inferior a 101 e a licença não contém 2098DE8D-7DDD-4BAB-96C6-32EBB6FABEA3 | O envolvimento CGMS-A deve ser tentado, mas o conteúdo pode ser reproduzido independentemente do resultado | ||
Controle automático de ganho e faixa de cor | C3FD11C6-F8B7-4D20-B008-1DB17D61F2DA | Passar conteúdo com resolução menor ou igual a 520.000 px para saída de TV analógica | Define AGC apenas para vídeo componente e modo PAL quando a resolução é inferior a 520.000 px e define as informações de AGC e faixa de cores para NTSC quando a resolução é inferior a 520.000 px, de acordo com a tabela 3.5.7.3. in Regras de Compliance | |
Saída somente digital | 760AE755-682A-41E0-B1B3-DCDF836A7306 | A saída conectada é analógica | Não passa conteúdo |
Observação
Ao usar um dongle adaptador como "Mini DisplayPort para VGA" para reprodução, Windows 10 vê a saída como saída de vídeo digital e não pode impor políticas de vídeo analógico.
A tabela a seguir descreve a implementação do DRM do PlayReady para Windows 10 que permite a reprodução em outras circunstâncias.
Cenário | GUID | Se... | Então... | |
---|---|---|---|---|
Saída desconhecida | 786627D8-C2A6-44BE-8F88-08AE255B01A7 | Se a saída não puder ser razoavelmente determinada ou o OPM não puder ser estabelecido com o driver gráfico | SWDRM: Passa o conteúdo | HWDRM: NÃO passa conteúdo |
Saída desconhecida com constrição | B621D91F-EDCC-4035-8D4B-DC71760D43E9 | Se a saída não puder ser razoavelmente determinada ou o OPM não puder ser estabelecido com o driver gráfico | SWDRM: O PC restringirá a resolução efetiva a 520.000 epx por quadro e passará o conteúdo | HWDRM: NÃO passa conteúdo |
Pré-requisitos
Antes de começar a criar seu aplicativo UWP protegido pelo PlayReady, o seguinte software precisa ser instalado em seu sistema:
- Windows 10.
- Se você estiver compilando qualquer um dos exemplos para o DRM do PlayReady para aplicativos UWP, deverá usar o Microsoft Visual Studio 2015 ou posterior para compilar os exemplos. Você ainda pode usar o Microsoft Visual Studio 2013 para compilar qualquer um dos exemplos do DRM do PlayReady para aplicativos da Windows Store 8.1.
Guia de migração de aplicativo UWP do PlayReady
Esta seção inclui informações sobre como migrar seus aplicativos existentes da PlayReady Windows 8.x Store para o Windows 10.
O namespace para aplicativos UWP do PlayReady no Windows 10 foi alterado de Microsoft.Media.PlayReadyClient para Windows.Media.Protection.PlayReady. Isso significa que você precisará pesquisar e substituir o namespace antigo pelo novo em seu código. Você ainda estará fazendo referência a um arquivo winmd. Faz parte do windows.media.winmd no sistema operacional Windows 10. Ele está em windows.winmd como parte do SDK do Windows do TH. Para UWP, ele é referenciado em windows.foundation.univeralappcontract.winmd.
Para reproduzir conteúdo de alta definição (HD) protegido pelo PlayReady (1080p) e conteúdo UHD (ultra-alta definição), você precisará implementar o DRM de hardware do PlayReady. Para obter informações sobre como implementar o DRM de hardware do PlayReady, consulte DRM de hardware.
Alguns conteúdos não são suportados no DRM de hardware. Para obter informações sobre como desabilitar o DRM de hardware e habilitar o DRM de software, consulte Substituir DRM de hardware.
Em relação ao gerenciador de proteção de mídia, verifique se o código tem as seguintes configurações, caso ainda não tenha:
var mediaProtectionManager = new Windows.Media.Protection.MediaProtectionManager();
mediaProtectionManager.Properties["Windows.Media.Protection.MediaProtectionSystemId"] =
'{F4637010-03C3-42CD-B932-B48ADF3A6A54}'
var cpsystems = new Windows.Foundation.Collections.PropertySet();
cpsystems["{F4637010-03C3-42CD-B932-B48ADF3A6A54}"] =
"Windows.Media.Protection.PlayReady.PlayReadyWinRTTrustedInput";
mediaProtectionManager.Properties["Windows.Media.Protection.MediaProtectionSystemIdMapping"] = cpsystems;
mediaProtectionManager.Properties["Windows.Media.Protection.MediaProtectionContainerGuid"] =
"{9A04F079-9840-4286-AB92-E65BE0885F95}";
Adquira proativamente uma licença não persistente antes da reprodução
Esta seção descreve como adquirir licenças não persistentes de forma proativa antes do início da reprodução.
Nas versões anteriores do DRM do PlayReady, as licenças não persistentes só podiam ser adquiridas reativamente durante a reprodução. Nesta versão, você pode adquirir licenças não persistentes proativamente antes do início da reprodução.
Crie proativamente uma sessão de reprodução em que a licença não persistente possa ser armazenada. Por exemplo:
var cpsystems = new Windows.Foundation.Collections.PropertySet(); cpsystems["{F4637010-03C3-42CD-B932-B48ADF3A6A54}"] = "Windows.Media.Protection.PlayReady.PlayReadyWinRTTrustedInput"; // PlayReady var pmpSystemInfo = new Windows.Foundation.Collections.PropertySet(); pmpSystemInfo["Windows.Media.Protection.MediaProtectionSystemId"] = "{F4637010-03C3-42CD-B932-B48ADF3A6A54}"; pmpSystemInfo["Windows.Media.Protection.MediaProtectionSystemIdMapping"] = cpsystems; var pmpServer = new Windows.Media.Protection.MediaProtectionPMPServer( pmpSystemInfo );
Vincule essa sessão de reprodução à classe de aquisição de licença. Por exemplo:
var licenseSessionProperties = new Windows.Foundation.Collections.PropertySet(); licenseSessionProperties["Windows.Media.Protection.MediaProtectionPMPServer"] = pmpServer; var licenseSession = new Windows.Media.Protection.PlayReady.PlayReadyLicenseSession( licenseSessionProperties );
Crie uma solicitação de serviço de licença. Por exemplo:
var laSR = licenseSession.CreateLAServiceRequest();
Execute a aquisição da licença usando a solicitação de serviço criada na etapa 3. A licença será armazenada na sessão de reprodução.
Vincule a sessão de reprodução à fonte de mídia para reprodução. Por exemplo:
licenseSession.configureMediaProtectionManager( mediaProtectionManager ); videoPlayer.msSetMediaProtectionManager( mediaProtectionManager );
Consultar recursos de proteção
A partir do Windows 10, versão 1703, você pode consultar recursos de DRM de HW, como codecs de decodificação, resolução e HDCP (proteções de saída). As consultas são executadas com o método IsTypeSupported que usa uma cadeia de caracteres que representa os recursos para os quais o suporte é consultado e uma cadeia de caracteres que especifica o sistema de chaves ao qual a consulta se aplica. Para obter uma lista de valores de cadeia de caracteres com suporte, consulte a página de referência da API para IsTypeSupported. O exemplo de código a seguir ilustra o uso desse método.
using namespace Windows::Media::Protection;
ProtectionCapabilities^ sr = ref new ProtectionCapabilities();
ProtectionCapabilityResult result = sr->IsTypeSupported(
L"video/mp4; codecs=\"avc1.640028\"; features=\"decode-bpp=10,decode-fps=29.97,decode-res-x=1920,decode-res-y=1080\"",
L"com.microsoft.playready");
switch (result)
{
case ProtectionCapabilityResult::Probably:
// Queue up UHD HW DRM video
break;
case ProtectionCapabilityResult::Maybe:
// Check again after UI or poll for more info.
break;
case ProtectionCapabilityResult::NotSupported:
// Do not queue up UHD HW DRM video.
break;
}
Adicionar parada segura
Esta seção descreve como adicionar parada segura ao seu aplicativo UWP.
A parada segura fornece os meios para um dispositivo PlayReady declarar com confiança a um serviço de streaming de mídia que a reprodução de mídia foi interrompida para qualquer parte do conteúdo. Esse recurso garante que seus serviços de streaming de mídia forneçam imposição e relatórios precisos de limitações de uso em diferentes dispositivos para uma determinada conta.
Há dois cenários principais para enviar um desafio de parada segura:
- Quando a apresentação de mídia é interrompida porque o fim do conteúdo foi atingido ou quando o usuário interrompe a apresentação de mídia em algum lugar no meio.
- Quando a sessão anterior termina inesperadamente (por exemplo, devido a uma falha no sistema ou aplicativo). O aplicativo precisará consultar, na inicialização ou no desligamento, se há sessões de parada segura pendentes e enviar desafios separados de qualquer outra reprodução de mídia.
Para obter um exemplo de implementação de parada segura, consulte o arquivo securestop.cs no exemplo do PlayReady localizado no Navegador de Exemplo de Código.
Usar o DRM do PlayReady no Xbox One
Para usar o DRM do PlayReady em um aplicativo UWP no Xbox One, primeiro você precisará registrar sua conta do Partner Center que está usando para publicar o aplicativo para obter autorização para usar o PlayReady. É possível fazer isso de duas formas:
- Peça permissão ao seu contato na Microsoft.
- Solicite autorização enviando sua conta do Partner Center e o nome da empresa para pronxbox@microsoft.com.
Depois de receber a autorização, você precisará adicionar um adicional <DeviceCapability>
ao manifesto do aplicativo. Você precisará adicioná-lo manualmente porque atualmente não há nenhuma configuração disponível no Designer de Manifesto do Aplicativo. Siga estas etapas para configurá-lo:
Com o projeto aberto no Visual Studio, abra o Gerenciador de Soluções e clique com o botão direito do mouse em Package.appxmanifest.
Selecione Abrir com..., escolha Editor XML (Texto) e clique em OK.
Entre as
<Capabilities>
tags, adicione o seguinte<DeviceCapability>
:<DeviceCapability Name="6a7e5907-885c-4bcb-b40a-073c067bd3d5" />
Salve o arquivo.
Por fim, há uma última consideração ao usar o PlayReady no Xbox One: em kits de desenvolvimento, há um limite de SL150 (ou seja, eles não podem reproduzir conteúdo SL2000 ou SL3000). Os dispositivos de varejo podem reproduzir conteúdo com níveis de segurança mais altos, mas para testar seu aplicativo em um kit de desenvolvimento, você precisará usar o conteúdo SL150. Você pode testar esse conteúdo de uma das seguintes maneiras:
- Use conteúdo de teste coletado que exija licenças SL150.
- Implemente a lógica para que apenas determinadas contas de teste autenticadas possam adquirir licenças SL150 para determinado conteúdo.
Use a abordagem que faz mais sentido para sua empresa e seu produto.