Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Criptografia de Conteúdo
O empacotador precisa criptografar o conteúdo. Qualquer formato de criptografia que use chaves AES-128 usadas no modo CTR ou no modo CBC é permitido pelas Regras de Conformidade.
Formatos baseados em MP4 são recomendados. CMAF é o formato baseado em MP4 preferencial para clientes PlayReady, Windows 10 e Xbox One.
A Microsoft dá suporte aos dois esquemas comuns de criptografia, que têm ampla aceitação no setor: os esquemas de proteção "cbcs" AES-CBC e "cenc" AES-CTR. Consulte ISO/IEC FDIS 23001-7:2016 "Tecnologia da informação – tecnologias de sistemas MPEG – Parte 7: criptografia comum em arquivos de formato de arquivo de mídia base ISO"
Para obter mais informações, consulte Criptografia e Entrega de Conteúdo
Inserindo um cabeçalho PlayReady no conteúdo
O empacotador precisa inserir o Cabeçalho PlayReady gerado no conteúdo. Normalmente, ele é inserido no cabeçalho dos arquivos de conteúdo ou no manifesto dos ativos de streaming.
Esse cabeçalho inclui valores padrão para informações necessárias para um cliente PlayReady solicitar uma licença para esta parte de conteúdo específica. Por exemplo, um cliente PlayReady precisa saber quais KIDs (IDs de chave) são usadas no ativo para que ele possa solicitar os valores de chave. Ele também precisa saber o endereço de um servidor de licença que entregará essa licença. Opcionalmente, ele precisa saber qual página da Web será renderizada ao usuário caso uma solicitação de licença seja recusada pelo servidor de licença (o usuário pode ser direcionado para uma página de pagamento).
Aqui está um exemplo de um cabeçalho PlayReady
<WRMHEADER xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader" version="4.3.0.0">
<DATA>
<PROTECTINFO>
<KIDS>
<KID ALGID="AESCTR" VALUE="PV1LM/VEVk+kEOB8qqcWDg=="></KID>
</KIDS>
</PROTECTINFO>
<LA_URL>http://rm.contoso.com/rightsmanager.asmx</LA_URL>
<LUI_URL>http://www.contoso.com/pay/</LUI_URL>
</DATA>
</WRMHEADER>
Quando um cliente PlayReady precisar reproduzir conteúdo protegido, ele solicitará uma licença para o conteúdo se ainda não tiver nenhuma. Para iniciar a solicitação de licença, o desenvolvedor do aplicativo pode ter provisionado o aplicativo com valores codificados ou dinâmicos para a matriz KID, LA_URL e o comportamento em caso de negação de solicitação de licença. O aplicativo substituiu os valores padrão de KID ou LA_URL. Se o desenvolvedor não tiver feito isso, espera-se que o cliente faça a solicitação de licença com base nos valores padrão encontrados no próprio cabeçalho de conteúdo.
Para arquivos ISO MP4, a Microsoft recomenda seguir a especificação de formato ISO e inserir o cabeçalho PlayReady dentro de uma caixa 'pssh'.
Exemplo de um arquivo MP4 que contém um objeto PlayReady
A figura a seguir mostra um arquivo MP4 segmentado com um objeto PlayReady que contém um cabeçalho PlayReady:
Aqui está a exibição HEX deste arquivo:
A figura a seguir mostra um arquivo MP4 segmentado com um objeto PlayReady que contém um cabeçalho PlayReady e outro objeto PlayReady que contém um Repositório de Licenças PlayReady Embedded:
Para ativos de streaming adaptativo, a Microsoft recomenda inserir o cabeçalho PlayReady no manifesto do ativo.
Exemplo de um manifesto MPEG-DASH que contém um cabeçalho PlayReady
<?xml version="1.0" encoding="utf-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" profiles="urn:mpeg:dash:profile:isoff-live:2011" type="static" xmlns:cenc="urn:mpeg:cenc:2013" xmlns:mspr="urn:microsoft:playready" mediaPresentationDuration="PT10M56.907S" minBufferTime="PT4S">
<Period>
<AdaptationSet id="1" group="1" profiles="ccff" bitstreamSwitching="true" segmentAlignment="true" contentType="video" mimeType="video/mp4" codecs="avc1.640028" maxWidth="1920" maxHeight="1080" startWithSAP="1">
<ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="10000000-1000-1000-1000-100000000001"/>
<ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95" value="2.0" cenc:default_KID="10000000-1000-1000-1000-100000000001">
<mspr:pro>PABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMwAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcAA6AC8ALwBlAHgAcABlAHIAaQBtAGUAbgB0AGEAbAAxAC4AYQB6AHUAcgBlAHcAZQBiAHMAaQB0AGUAcwAuAG4AZQB0AC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPwBjAGYAZwA9ACgAYwBrADoAVwAzADEAYgBmAFYAdAA5AFcAMwAxAGIAZgBWAHQAOQBXADMAMQBiAGYAUQA9AD0ALABjAGsAdAA6AEEARQBTADEAMgA4AEIAaQB0AEMAQgBDACkAPAAvAEwAQQBfAFUAUgBMAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAFMAPgA8AEsASQBEACAAQQBMAEcASQBEAD0AIgBBAEUAUwBDAEIAQwAiACAAVgBBAEwAVQBFAD0AIgBBAEEAQQBBAEUAQQBBAFEAQQBCAEEAUQBBAEIAQQBBAEEAQQBBAEEAQQBRAD0APQAiAD4APAAvAEsASQBEAD4APAAvAEsASQBEAFMAPgA8AC8AUABSAE8AVABFAEMAVABJAE4ARgBPAD4APAAvAEQAQQBUAEEAPgA8AC8AVwBSAE0ASABFAEEARABFAFIAPgA=</mspr:pro>
</ContentProtection>
<SegmentTemplate timescale="10000000" media="video/bbb_sunflower_1080p_60fps_normal_VIDEO$Number$.mp4" initialization="video/bbb_sunflower_1080p_60fps_normal_VIDEO0.mp4">
<SegmentTimeline>
<S d="83166700" />
<S d="79166700" />
<S d="80333300" />
<S d="73000000" />
</SegmentTimeline>
</SegmentTemplate>
<Representation id="video" bandwidth="10646158" width="1920" height="1080"/>
</AdaptationSet>
</Period>
</MPD>