Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Шифрование содержимого
Упаковщику необходимо зашифровать содержимое. Любой формат шифрования, использующий ключи AES-128, используемые в режиме CTR или в режиме CBC, разрешены правилами соответствия требованиям.
Рекомендуется использовать форматы на основе MP4. CMAF — это предпочтительный формат MP4 для клиентов PlayReady, Windows 10 и Xbox One.
Корпорация Майкрософт поддерживает две распространенные схемы шифрования, которые получили широкое признание в отрасли — схемы защиты «cbcs» AES-CBC и «cenc» AES-CTR. См. статью ISO/IEC FDIS 23001-7:2016 "Информационные технологии — технологии MPEG systems — часть 7. Общее шифрование в файлах формата файлов базового носителя ISO"
Дополнительные сведения см. в разделе "Шифрование содержимого" и "Доставка"
Вставка заголовка PlayReady в содержимое
Упаковщику необходимо вставить заголовок PlayReady, который он создал, в контент. Обычно он вставляется в заголовок файлов содержимого или в манифест потоковых ресурсов.
Этот заголовок содержит значения по умолчанию для сведений, необходимых клиенту PlayReady для запроса лицензии для конкретной части содержимого. Например, клиент PlayReady должен знать, какие идентификаторы ключей (KID) используются в ресурсе, чтобы запросить значения ключей. Кроме того, необходимо знать адрес сервера лицензирования, который будет доставлять эту лицензию. При необходимости необходимо знать, какая веб-страница должна отображаться пользователю, если запрос на лицензию отклоняется сервером лицензирования (пользователь может быть направлен на страницу оплаты).
Ниже приведен пример заголовка 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>
Когда клиент PlayReady должен воспроизвести защищенное содержимое, он запросит лицензию на это содержимое, если у него ее еще нет. Чтобы инициировать запрос на лицензию, разработчик приложения, возможно, подготовил приложение с жесткими или динамическими значениями для массива KID, LA_URL и поведение в случае отказа в запросе лицензии. Приложение переопределило значения KID или LA_URL по умолчанию. Если разработчик не сделал этого, клиент должен выполнить запрос лицензии на основе значений по умолчанию, найденных в самом заголовке содержимого.
Для ISO-файлов MP4 корпорация Майкрософт рекомендует использовать спецификацию формата ISO и вставлять заголовок PlayReady в поле pssh.
Пример MP4-файла, содержащего объект PlayReady
На следующем рисунке показан сегментованный MP4-файл с объектом PlayReady, который содержит заголовок PlayReady:
Ниже приведено представление HEX этого файла:
На следующем рисунке показан сегментный MP4-файл с объектом PlayReady, который содержит заголовок PlayReady, а также другой объект PlayReady, содержащий хранилище лицензий PlayReady Embedded:
Для ресурсов адаптивной потоковой передачи корпорация Майкрософт рекомендует вставить заголовок PlayReady в манифест ресурса.
Пример манифеста MPEG-DASH, содержащего заголовок 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>