Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Inhoudsversleuteling
De packager moet de inhoud versleutelen. Elke versleutelingsindeling die gebruikmaakt van AES-128-sleutels die worden gebruikt in de CTR-modus of CBC-modus, wordt toegestaan door de nalevingsregels.
Indelingen op basis van MP4 worden aanbevolen. CMAF is de geprefereerde MP4-gebaseerde indeling voor PlayReady-clients, Windows 10 en Xbox One.
Microsoft ondersteunt de twee gemeenschappelijke versleutelingsschema's die brede acceptatie van de industrie hebben: de cbcs-AES-CBC en cenc AES-CTR beveiligingsschema's. Zie ISO/IEC FDIS 23001-7:2016 "Information technology – MPEG systems technologies – Part 7: Common encryption in ISO base media file format files"
Zie Inhoudsversleuteling en -levering voor meer informatie
Een PlayReady-header invoegen in de inhoud
De packager moet de PlayReady Header die deze heeft gegenereerd, invoegen in de inhoud. Deze wordt meestal ingevoegd in de koptekst van de inhoudsbestanden of in het manifest van streamingassets.
Deze header bevat standaardwaarden voor informatie die nodig is voor een PlayReady-client om een licentie aan te vragen voor dit specifieke inhoudsstuk. Een PlayReady-client moet bijvoorbeeld weten welke sleutel-id's (KID's) in de asset worden gebruikt, zodat deze de sleutelwaarden kan aanvragen. Het moet ook het adres weten van een licentieserver die deze licentie levert. Optioneel moet u weten welke webpagina aan de gebruiker moet worden weergegeven voor het geval een licentieaanvraag wordt geweigerd door de licentieserver (de gebruiker kan worden omgeleid naar een betalingspagina).
Hier volgt een voorbeeld van een PlayReady-header
<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>
Wanneer een PlayReady-client beveiligde inhoud moet afspelen, wordt er een licentie aangevraagd voor de inhoud als deze nog geen inhoud heeft. Om de licentieaanvraag te initiëren, kan de app-ontwikkelaar de app hebben ingericht met vastgelegde of dynamische waarden voor de KID-matrix, LA_URL en het gedrag in het geval van een weigering van een licentieaanvraag. De app heeft de standaardwaarden voor KID of LA_URL overschreven. Als de ontwikkelaar dat niet heeft, wordt verwacht dat de client de licentieaanvraag uitvoert op basis van de standaardwaarden in de inhoudskop zelf.
Voor MP4 ISO-bestanden raadt Microsoft aan de ISO-indelingsspecificatie te volgen en de PlayReady-header in te voegen in een pssh-vak.
Voorbeeld van een MP4-bestand met een PlayReady-object
In de volgende afbeelding ziet u een gesegmenteerd MP4-bestand met een PlayReady-object dat een PlayReady-header bevat:
Dit is de HEX-weergave van dit bestand:
De volgende afbeelding toont een MP4-bestand met segmenten en een PlayReady-object dat een PlayReady-header bevat, en een ander PlayReady-object dat een PlayReady Embedded-licentieopslag bevat.
Voor adaptieve streamingassets raadt Microsoft aan de PlayReady-header in het manifest van de asset in te voegen.
Voorbeeld van een MPEG-DASH-manifest met een PlayReady-header
<?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>