다음을 통해 공유


PlayReady용 MP4 기반 콘텐츠를 패키지하는 방법

콘텐츠 암호화

패키지는 콘텐츠를 암호화해야 합니다. CTR 모드 또는 CBC 모드에서 사용되는 AES-128 키를 사용하는 암호화 형식은 준수 규칙에서 허용됩니다.

MP4 기반 형식을 사용하는 것이 좋습니다. CMAF는 PlayReady 클라이언트, Windows 10 및 Xbox One 기본 MP4 기반 형식입니다.

Microsoft는 'cbcs' AES-CBC 및 'cenc' AES-CTR 보호 체계와 같은 광범위한 업계 수용을 포함하는 두 가지 일반적인 암호화 체계를 지원합니다. ISO/IEC FDIS 23001-7:2016 "정보 기술 – MPEG 시스템 기술 – 7부: ISO 기본 미디어 파일 형식 파일의 일반적인 암호화" 참조

자세한 내용은 콘텐츠 암호화 및 배달을 참조하세요.

콘텐츠에 PlayReady 헤더 삽입

패키지는 콘텐츠에 생성된 PlayReady 헤더를 삽입해야 합니다. 일반적으로 콘텐츠 파일의 헤더 또는 스트리밍 자산의 매니페스트에 삽입됩니다.

이 헤더에는 PlayReady 클라이언트가 이 특정 콘텐츠 조각에 대한 라이선스를 요청하는 데 필요한 정보의 기본값이 포함됩니다. 예를 들어 PlayReady 클라이언트는 키 값을 요청할 수 있도록 자산에 사용되는 KID(키 ID)를 알고 있어야 합니다. 또한 이 라이선스를 제공할 라이선스 서버의 주소를 알고 있어야 합니다. 필요에 따라 라이선스 서버에서 라이선스 요청이 거부될 경우 사용자에게 렌더링할 웹 페이지를 알아야 합니다(사용자가 결제 페이지로 이동될 수 있음).

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. 개발자가 그렇지 않은 경우 클라이언트는 콘텐츠 헤더 자체에 있는 기본값에 따라 라이선스 요청을 수행해야 합니다.

MP4 ISO 파일의 경우 ISO 형식 사양을 따르고 PlayReady 헤더를 'pssh' 상자에 삽입하는 것이 좋습니다.

PlayReady 개체를 포함하는 MP4 파일의 예

다음 그림에서는 PlayReady 헤더가 포함된 PlayReady 개체가 있는 분할된 MP4 파일을 보여 줍니다.

PlayReady Header in MP4

이 파일의 HEX 보기는 다음과 같습니다.

PlayReady Object Hex Dump

다음 그림에서는 PlayReady 헤더가 포함된 PlayReady 개체가 있는 분할된 MP4 파일과 PlayReady Embedded 라이선스 Microsoft Store 포함된 다른 PlayReady 개체를 보여 줍니다.

PlayReady Header and ELS in MP4

적응 스트리밍 자산의 경우 자산 매니페스트에 PlayReady 헤더를 삽입하는 것이 좋습니다.

PlayReady 헤더를 포함하는 MPEG-DASH 매니페스트의 예

<?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>

참고 항목

지원되는 형식

PlayReady 테스트 서버 콘텐츠