Microsoft PlayReady를 사용하는 DASH 콘텐츠 보호
일반 암호화(ISO/IEC 23001-7) 및 Microsoft PlayReady를 사용하여 HTTP(ISO/IEC 23009-1)를 통한 동적 적응 스트리밍의 라이브 및 주문형 프로필에 대한 콘텐츠 보호를 구현합니다.
현재 버전
현재 버전은 2018년 2월 15일
자세한 내용은 변경 기록 참조하세요.
추상
ISO/IEC 23009-1 ISO 기본 미디어 파일 형식 주문형 및 라이브 DASH 프로필은 ISO/IEC 23001-7, "ISO 기본 미디어 파일 형식 파일의 일반 암호화" 사양과 함께 사용할 수 있습니다. Microsoft PlayReady는 ISO/IEC 23001-7 및 ISO/IEC 23009-1을 모두 지원합니다. 이 사양에서는 라이브 및 주문형 적응 스트리밍 시나리오 모두에 대해 ISO/IEC 14496-12 미디어 표현용 Microsoft PlayReady 사용을 알리는 ISO/IEC 23009-1 미디어 프레젠테이션 설명 파일을 만드는 방법을 자세히 설명합니다.
법적 고지
© 2018 Microsoft Corporation. 모든 권한이 예약되어 있습니다. 이 문서는 "as-is"으로 제공됩니다. URL 및 기타 인터넷 웹 사이트 참조를 포함하여 이 문서에 포함된 정보는 예고 없이 변경될 수 있습니다. 사용할 위험이 있습니다.
이 문서는 Microsoft 제품의 지적 재산권에 대한 법적 권리를 제공하지 않습니다. 이 문서를 복사하여 내부 참조 용도로 사용할 수 있습니다. 이 문서에서는 알림을 제거할 수 없습니다.
콘텐츠
절 | 타이틀 |
---|---|
1 | 소개 |
1.1 | 범위 |
1.2 | 규칙 |
1.3 | 용어, 약어 및 약어 |
1.4 | 참조 |
1.5 | 변경 기록 |
2 | PlayReady DASH 콘텐츠 보호 체계 |
2.1 | DASH ContentProtection 설명자 요소 |
2.2 | 구현 권장 사항 및 요구 사항 |
3 | 미디어 프레젠테이션 설명 예제 |
3.1 | 초기화 세그먼트 또는 미디어 콘텐츠 올바른 PRO |
3.2 | MPD PlayReady 개체 포함 |
테이블
테이블 | 타이틀 |
---|---|
표 1 | 암호화 상자 추적 |
표 2 | KID 표현 예제 |
1. 소개
HTTP 표준 [DASH]을 통한 MPEG의 동적 적응 스트리밍은 HTTP 서버에서 HTTP 클라이언트로 미디어 콘텐츠를 배달하기 위한 형식을 지정합니다. DASH에서 미디어 콘텐츠의 프레젠테이션은 MPD(미디어 프레젠테이션 설명) 파일로 설명됩니다. MPD는 미디어 프레젠테이션 내에서 이러한 리소스에 대한 컨텍스트와 함께 세그먼트에 대한 리소스 식별자를 제공합니다.
DASH에서 미디어 프레젠테이션은 기간의 시간 순서로 구성됩니다([DASH], 섹션 5.3.2). 마침표 내에서 미디어 콘텐츠는 Adapt Sets([DASH], 섹션 5.3.3)라는 상호 교환 가능한 인코딩된 버전 집합으로 정렬됩니다. 각 적응 집합은 미디어 콘텐츠 구성 요소의 결과물 인코딩 버전인 표현([DASH], 섹션 5.3.5)으로 구성됩니다.
ContentProtection Descriptor 요소는 암호화 체계를 나타내기 위해 적응 집합 또는 표현과 연결될 수 있으며 DRM 라이선스 취득을 사용하도록 하나 이상의 ContentProtection 설명자 요소를 추가할 수 있습니다([DASH], 섹션 5.8.4.1).
1.1 범위
ISO/IEC 23009-1 DASH 미디어 프레젠테이션 설명 파일에서 Microsoft PlayReady를 콘텐츠 보호 스키마로 사용하는 방법입니다.
1.2 규칙
이 문서의 키워드 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" 및 "OPTIONAL"은 [RFC2119]에 설명된 대로 해석되어야 합니다. 다음과 같습니다.
"MUST", "REQUIRED" 및 "SHALL"은 정의가 사양의 절대 요구 사항임을 의미합니다.
"반드시 안 돼요"와 "하지 말아야 한다"는 것은 정의가 사양의 절대 금지임을 의미합니다.
"SHOULD" 및 "RECOMMENDED"는 특정 항목을 무시하는 타당한 이유가 있을 수 있음을 의미하지만, 다른 과정을 선택하기 전에 전체 의미를 이해하고 신중하게 평가해야 합니다.
"안 됨" 및 "권장 안 함"은 특정 동작이 허용되는 유효한 이유가 있을 수 있음을 의미하지만, 이 레이블에 설명된 동작을 구현하기 전에 전체 의미를 이해하고 사례를 신중하게 평가해야 합니다.
"MAY" 및 "OPTIONAL"은 항목이 실제로 선택 사항임을 의미합니다.
맨 위로
1.3 용어, 약어 및 약어
1.3.1 용어
학기 | 묘사 |
---|---|
적응 집합 | DASH에서는 하나 또는 여러 미디어 콘텐츠 구성 요소의 서로 교환 가능한 인코딩된 버전 집합입니다. |
콘텐츠 보호(CP) | 클라이언트 디바이스에 배달된 후 보호된 리소스를 보호하는 프로세스입니다. |
포함된 라이선스 | PlayReady 개체(PRO)에 저장된 라이선스입니다. |
ELS(Embedded License Store) | 포함된 라이선스를 저장하기 위한 PlayReady 개체(PRO)의 레코드입니다. |
GUID(Globally Unique Identifier) | 하이픈으로 구분된 32자 16진수 문자열로 표현되며 일반적으로 128비트 정수로 저장되는 고유 참조 번호입니다. |
초기화 세그먼트 | 미디어 세그먼트에 캡슐화된 미디어 스트림을 표시하는 데 필요한 메타데이터를 포함하는 DASH 세그먼트입니다. ISO Media의 경우 파일 헤더입니다. |
키 식별자(KID) | 콘텐츠, 라이선스 또는 기타 중요한 정보를 보호하는 키를 고유하게 식별하는 UUID입니다. PLAYReady의 경우 GUID로 저장됩니다. |
키 회전 | 미디어와 연결된 암호화 키에 대한 주기적인 변경 내용입니다. 일반적으로 이 의미 |
리프 라이선스 | 루트 라이선스의 콘텐츠 키를 사용하여 콘텐츠 키가 암호화된 라이선스입니다. |
면허 | 정책 및 암호화된 콘텐츠 키를 포함하는 PlayReady 데이터 구조입니다. |
라이선스 취득 URL(LAURL) | 라이선스 취득 PlayReady 웹 서비스 URL입니다. |
라이선스 체인 | 라이선스 체인은 루트 라이선스와 리프 라이선스로 구성됩니다. 리프 라이선스에는 여러 루트 라이선스가 있을 수 있으며 루트 라이선스에는 여러 리프 라이선스가 있을 수 있습니다. 각 쌍에 대해 라이선스 체인이 있습니다. |
라이브 프로필 | ISO 기본 미디어 파일 형식 라이브 프로필([DASH]의 섹션 8.4 참조). 라이브 프로필은 라이브 인코딩에 최적화되어 있으며, 템플릿 생성 URL을 사용하여 인코딩된 직후 각 영화 세그먼트를 요청할 수 있습니다. |
미디어 프레젠테이션 | ISO/IEC 23009-1에 정의된 대로 미디어 프레젠테이션으로 다운로드하고 렌더링할 수 있는 메타데이터 및 미디어 데이터의 컬렉션입니다. |
MPD(미디어 프레젠테이션 설명) | ISO/IEC 23009-1에 정의된 미디어 프레젠테이션에 대한 공식 XML 문서 설명입니다. |
미디어 세그먼트 | 미디어 형식을 준수하고 다른 미디어 세그먼트 및/또는 초기화 세그먼트와 결합된 재생을 가능하게 하는 DASH 세그먼트입니다. |
동영상 상자('moov') | ISO 기본 미디어 파일 형식에서 하위 상자가 미디어 프레젠테이션에 대한 메타데이터를 정의하는 상자 [ISOBFF]입니다. |
동영상 조각 상자('moof') | ISO 기본 미디어 파일 형식에서 동영상 조각 상자는 미디어 프레젠테이션을 시간[ISOBFF]으로 확장하고 DASH 미디어 세그먼트에 포함됩니다. |
주문형 프로필 | ISO 기본 미디어 파일 형식 주문형 프로필([DASH]의 섹션 8.3 참조). 주문형 프로필은 주문형 콘텐츠에 대한 기본 지원을 제공합니다. 각 표현은 단일 세그먼트로 제공되며, 하위 세그먼트는 적응 집합의 표현에 맞게 정렬되고, 하위 세그먼트는 영화 세그먼트에 해당하는 스트림 액세스 지점으로 시작합니다. |
마침표 | 미디어 프레젠테이션의 간격입니다. |
PlayReady 개체(PRO) | 선택적으로 PRH 및 ELS 레코드를 포함하여 가변 수의 레코드를 포함하는 이진 개체입니다. 이러한 레코드에는 라이선스 및 라이선스 취득과 관련된 정보가 포함됩니다([PRO]참조). |
보호 시스템 특정 헤더 상자('pssh') | ISO 기본 미디어 파일 형식에서 보호 시스템 특정 헤더 상자에는 특정 콘텐츠 보호 시스템에서 라이선스를 획득하고 미디어 콘텐츠의 암호를 해독하는 데 필요한 메타데이터가 포함되어 있습니다[ISOBFF]. |
표시 | 정의된 기간 동안 미디어 콘텐츠 구성 요소 대체 옵션 중 하나(예: ISO 미디어 파일) 중 하나입니다. MPD Representation 요소([DASH], 섹션 5.3.5)로 설명됩니다. |
PlayReady 헤더(PRH) | 하나 이상의 키 ID 및 라이선스 취득 URL을 포함하여 미디어 콘텐츠의 암호를 해독하는 데 필요한 메타데이터가 포함된 PRO(PlayReady 개체)의 레코드입니다([PRH]참조). |
루트 라이선스 | 리프 라이선스에서 콘텐츠 키를 암호화하는 데 콘텐츠 키를 사용하는 라이선스 |
세그먼트 | DASH에서는 HTTP-URL 및 선택적 바이트 범위가 있는 미디어 리소스를 참조하는 MPD의 요소입니다. |
세그먼트 인덱스 | ISO 미디어 'sidx' 상자로 정의된 MPD와 분리된 미디어 세그먼트 내의 시간 범위-바이트 범위 인덱스 매핑입니다. |
SAP(스트림 액세스 지점) | 앞으로 해당 위치의 표현 데이터만 사용하여 미디어 세그먼트 재생을 가능하게 하는 표현의 위치입니다. |
하위 세그먼트 | DASH에서 이 단위는 세그먼트 인덱스로 인덱싱된 미디어 세그먼트 내의 단위입니다. 영화 세그먼트는 DASH 주문형 프로필에서 하위 세그먼트로 처리되지만 DASH 라이브 프로필의 세그먼트로 처리됩니다. |
암호화 추적 상자 | ISO 기본 미디어 파일 형식에서 트랙 암호화 상자('tenc')는 트랙 [CENC], [ISOBFF]에 대한 기본 암호화 매개 변수를 설명합니다. |
UUID | [X.667]에 지정된 대로 숫자 또는 문자열로 표현되는 수학 고유 식별자입니다. |
VOD(주문형 비디오) | 주문형 비디오 콘텐츠를 선택하고 시청할 수 있도록 하는 시스템입니다. DASH 라이브 프로필과 DASH 주문형 프로필은 VOD 프레젠테이션에 모두 사용할 수 있습니다. |
1.3.2 약어 및 약어
애버. | 의미 |
---|---|
CP | 콘텐츠 보호 |
대시 | HTTP를 통한 동적 적응 스트리밍 |
ELS | 포함된 라이선스 저장소 |
GUID | 전역적으로 고유 식별자 |
꼬마 | 키 식별자 |
월계수 | 라이선스 취득 URL |
MPD | 미디어 프레젠테이션 설명 |
PRH | PlayReady 헤더 |
프로 | PlayReady 개체 |
수액 | 스트림 액세스 지점 |
UUID | 범용 고유 식별자 |
VOD | 주문형 비디오 |
1.4 참조
1.4.1 표준 참조
코드 | 표준 참조 |
---|---|
[CENC] | ISO/IEC FDIS 23001-7:2016 "정보 기술 – MPEG 시스템 기술 – 7부: ISO 기본 미디어 파일 형식 파일의 일반 암호화", https://www.iso.org/standard/68042.html |
[DASH] | ISO/IEC 23009-1:2014, Second Edition, "Information Technology — DASH(HTTP)를 통한 동적 적응 스트리밍) - 1부: 미디어 프레젠테이션 설명 및 세그먼트 형식", http://standards.iso.org/ittf/PubliclyAvailableStandards/c065274_ISO_IEC_23009-1_2014.zip |
[EME] | "암호화된 미디어 확장", W3C 권장 사항 2017년 9월 18일https://www.w3.org/TR/encrypted-media/ |
[PRH] | "Microsoft PlayReady 헤더" |
[PRO] | "Microsoft PlayReady 개체 |
[RFC2119] | "요구 사항 수준을 나타내기 위해 RFC에서 사용할 키 |
[RFC3629] | "UTF-8, ISO 10646의 변환 형식", F. Yergeau, 2003년 11월, http://tools.ietf.org/html/rfc3629 |
[RFC4122] | "UUID(유니버설 고유 IDentifier) URN 네임스페이스", P. Leach, M. Mealling, R. Salz, 2005년 7월,http://www.ietf.org/rfc/rfc4122.txt |
[X.667] | "정보 기술 – 개방형 시스템 상호 연결 – OSI 등록 기관 운영 절차: UUID(유니버설 고유 식별자) 생성 및 등록 및 ASN.1 개체 식별자 구성 요소로 사용" Series X ITU-T 권장 사항http://www.itu.int/rec/T-REC-X.667-201210-I/en |
1.4.2 정보 참조
코드 | 정보 참조 |
---|---|
[CPSID] | DASH 산업 포럼, "보호 시스템별 식별자",http://dashif.org/identifiers/content_protection/ |
[DASHIF] | DASH 산업 포럼, "구현 지침: DASH-IF 상호 운용성 지점", 2017년 9월 7일, 버전 4.1,https://dashif.org/docs/DASH-IF-IOP-v4.3.pdf |
[ISOBFF] | ISO/IEC 14496-12, Fourth Edition(수정된 버전 2012-09-15), "정보 기술 – 시청각 개체 코딩 – 12부: ISO 기본 미디어 파일 형식"http://standards.iso.org/ittf/PubliclyAvailableStandards/c061988_ISO_IEC_14496-12_2012.zip |
맨 위로
1.5 변경 기록
버전 | 날짜 | 세부 정보 |
---|---|---|
버전 1.3 | 2018년 2월 15일 | 16 바이트 초기화 벡터(16 바이트 EV)에 대한 지원을 명확히 합니다. |
버전 1.2 | 2014년 10월 8일 | 1) CENC 2판 변경 내용 2) DASH MPD ContentProtection 설명자 요소와 관련된 변경 내용 3) 용어 추가 및 설명에 대한 용어 변경 4) 최신 버전을 참조하기 위한 규범적 및 정보 참조 변경 5) ISOBFF 상자, PRO 및 PlayReady 라이선스에서 KID 표현 및 엔디언을 명확히 합니다. |
버전 1.1 | 2013년 2월 18일 | PlayReady SystemID 표현을 명확히 합니다. PlayReady SystemID는 9a04f079-9840-4286-ab92-e65be0885f95입니다. Big endian 표현 = {0x9A, 0x04, 0xF0, 0x79, 0x98, 0x40, 0x42, 0x86, 0xAB, 0x92, 0xE6, 0x5B, 0xE0, 0x88, 0x5F, 0x95}. Little endian representation = {0x79, 0xF0, 0x04, 0x9A, 0x40, 0x98, 0x86, 0x42, 0xAB, 0x92, 0xE6, 0x5B, 0xE0, 0x88, 0x5F, 0x95}. |
버전 1.0 | 2012년 7월 17일 | 초기 버전 |
2. PlayReady DASH 콘텐츠 보호 체계
Microsoft PlayReady는 새로운 ISO/IEC 23009-1 [DASH] 및 ISO/IEC 23001-7 [CENC] 표준을 지원합니다. 이 사양에서는 주문형([DASH], 섹션 8.3) 및 라이브([DASH], 섹션 8.4) 적응 스트리밍 시나리오 모두에 대해 ISO 기본 미디어 파일 형식 미디어 표현용 Microsoft PlayReady 사용을 알리는 DASH 미디어 프레젠테이션 설명 파일을 만드는 방법을 자세히 설명합니다.
이 사양의 핵심인 네 가지 시나리오는 VOD 또는 미디어의 라이브 프레젠테이션입니다.
단일 키로 암호화됨
일부 콘텐츠가 암호화되고 일부 콘텐츠가 명확한 위치
포함된 리프 라이선스가 없는 키 회전 사용
포함된 리프 라이선스를 사용하여 키 회전 사용
2.1 DASH ContentProtection 설명자 요소
DASH는 ISO Media([DASH] 섹션 5.3.7.2-Table 9, 5.8.5.2 및 5.8.4.1에 대한 두 가지 유형의 ContentProtection 설명자 요소를 정의합니다.
-
@schemeIdUri=”urn:mpeg:dash:mp4protection:2011” @value=”<scheme>”
-
@schemeIdUri=”urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx” @value=”DRMNAME version”
첫 번째 설명자 형식은 암호화된 각 ISO 미디어 트랙의 보호 체계 정보 상자('schi')에 포함된 암호화 체계의 4개 문자 코드("4CC")를 나타냅니다. 이 설명자 유형은 항상 존재하므로 플레이어는 콘텐츠가 암호화되어 있음을 인식하고 다운로드하여 재생하기 전에 암호화 체계의 암호를 해독할 수 있는지 확인할 수 있습니다.
두 번째 설명자 형식은 연결된 적응 집합에 대한 라이선스 및 암호 해독 키를 제공할 수 있는 특정 DRM 시스템의 UUID 문자열을 나타냅니다. DASH 산업 포럼, DVB 및 DECE와 같은 애플리케이션 사양은 적응 집합의 모든 표현을 제한하여 MPD의 표현 수준에서 ContentProtection 설명자를 제한하여 원활한 적응 전환이 가능하도록 동일한 키와 라이선스를 공유합니다. UUID 문자열은 파일 또는 DASH 초기화 세그먼트의 동영상 상자('moov')에 있을 수 있는 ISO 미디어 보호 시스템 특정 정보 상자('pssh')에 지정된 SystemID 필드와 같습니다.
참고 'pssh' 상자에는 콘텐츠 보호 시스템을 고유하게 식별하는 UUID [X.667] SystemID가 포함되어 있습니다. PlayReady SystemID는 9a04f079-9840-4286-ab92-e65be0885f95입니다.
DRM 시스템의 SystemID 값은 다음에서 등록됩니다. https://dashif.org/identifiers/content_protection/
각 AdaptationSet 요소는 여러 DRM 시스템에 라이선스를 사용할 수 있음을 나타내기 위해 여러 DRM 설명자를 나열할 수 있습니다. 각 DRM 시스템은 자체 네임스페이스에 요소와 특성을 지정하고 SystemID를 사용하여 설명자에서 선택적 또는 필수 요소로 만들 수 있습니다.
일반 암호화의 두 번째 버전([CENC] 섹션 11)은 상호 운용성을 향상시키기 위해 모든 DRM ContentProtection 설명자에서 사용할 수 있는 선택적 cenc:pssh 요소를 지정합니다. 또한 모든 시스템에 필요한 라이선스를 식별하기 위해 mp4protection 설명자에 포함하는 데 권장되는 cenc:default_KID 특성을 지정합니다. cenc:pssh 요소에는 완전한 'pssh' 상자 구조가 포함되어 있으므로 웹 브라우저 [EME]의 EME(암호화된 미디어 확장) API에서 동일하게 처리됩니다.
DRM 시스템은 다음에서 라이선스 취득 정보를 제공할 수 있습니다.
- MPD의 ContentProtection 설명자에 있는 cenc:pssh 요소
- 파일 또는 초기화 세그먼트의 'moov' 상자에 있는 'pssh' 상자
- 위의 두 항목 모두(이 경우 cenc:pssh 요소가 우선합니다).
워크플로에 따라 인코딩 또는 패키징 중에 적응 집합의 모든 파일에 'pssh' 상자에 라이선스 취득 정보를 포함하는 것이 더 효율적일 수 있습니다. 또는 스트리밍 프레젠테이션이 제공될 때 MPD에 cenc:pssh 요소를 포함하는 것이 더 효율적일 수 있습니다. 라이브 스트리밍의 경우 첫 번째 초기화 세그먼트 및 'pssh' 상자가 수백만 명의 시청자에게 동시에 배달될 때 많은 동시 라이선스 요청을 트리거하는 대신 MPD에서 cenc:pssh를 사용하여 초기 라이선스 취득을 사용하도록 설정하는 것이 좋습니다. MPD의 라이선스 취득 정보를 사용하면 다른 스트리밍 서비스에서 별도의 미디어 파일을 만들고 관리하지 않고도 다른 라이선스 서버를 사용하고 시간이 지남에 따라 변경할 수 있습니다.
PlayReady의 경우 PlayReady 개체(PRO) [PRO]를 cenc:pssh 요소, mspr:pro 요소 또는 'pssh' 상자에 포함하여 라이선스 획득을 활성화할 수 있습니다. mspr:pro 요소는 Microsoft PlayReady에서 정의되며 PRO [PRO] 정보만 포함하며 'pssh' 및 cenc:pssh에 포함된 상자 구조는 포함되지 않습니다. mspr:pro 및 cenc:pssh를 모두 포함하면 Silverlight 기반 플레이어를 비롯한 이전 플레이어와 HTML5 브라우저에서 보호된 DASH 프레젠테이션을 재생하는 스크립트를 사용하는 웹 페이지를 비롯한 새 플레이어를 사용할 수 있습니다.
참고 이 사양 전체에서 'mspr'은 xmlns:mspr="urn:microsoft:playready"로 정의된 'urn:microsoft:playready'입니다.
맨 위로
2.1.1 초기화 세그먼트 또는 미디어 콘텐츠에서 올바른 PRO
올바른 PRO를 포함하는 초기화 세그먼트가 있거나 미디어 콘텐츠에 올바른 PRO가 있는 PlayReady 'pssh' 상자가 포함된 경우 PlayReady 콘텐츠 보호 시스템별 식별자 [CPSID]가 있는 다음 ContentProtection 설명자 요소를 MPD의 AdaptSet 요소에서 사용하여 PlayReady 라이선스의 가용성을 나타내야 합니다.
<ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95" value=”MSPR 2.0”/>
PlayReady는 일반 암호화 [CENC] 표준을 지원합니다. 라이선스 취득 메타데이터가 초기화 세그먼트 또는 미디어 콘텐츠 'pssh'에 저장되면 PlayReady ContentProtection 설명자 요소가 있어야 합니다.
다음 ContentProtection Descriptor 요소는 보호된 각 적응 집합에 있어야 하며, 단일 인스턴스는 'cenc' 체계를 지원하는 모든 DRM에 대한 암호화 체계를 나타냅니다.
<ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc"/>
2.1.2 MPD에 PlayReady 개체 포함
PlayReady 개체 [PRO]가 PlayReady ContentProtection 설명자 요소에 포함되어야 하는 여러 상황이 있습니다. 예를 들어:
PlayReady 'pssh' 상자가 없는 프레젠테이션
PlayReady 'pssh' 상자에 있는 PRO를 재정의해야 하는 프레젠테이션
PlayReady를 콘텐츠 보호 체계로 식별하고 ContentProtection 설명자 요소에 PRO를 포함하려면 다음과 같이 이전 버전과의 호환성을 위해 [CENC] 및 mspr:pro 구문에 따라 cenc:pssh 구문을 모두 사용하는 것이 좋습니다.
<ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95" value=”MSPR 2.0”>
<cenc:pssh>
<!-- *base64-encoded PlayReady ‘pssh’ complete box* -->
</cenc:pssh>
<mspr:pro>
<!-- *base64-encoded PlayReady Object* -->
</mspr:pro>
</ContentProtection>
PlayReady 'pssh' 상자와 PRO를 PlayReady ContentProtection 설명자 요소에 포함할 때는 다음 규칙을 따라야 합니다.
cenc:pssh 또는 mspr:pro PlayReady ContentProtection 설명자 요소에 포함된 경우:
PRO가 미디어 콘텐츠의 보호 시스템 특정 헤더('pssh') 상자에 포함된 경우 그런 다음 cenc:pssh 또는 mspr:pro 모두에 포함된 PRO의 KID base64로 인코딩된 문자열 값([PRO]의 KID 태그 값)은 'pssh' 상자에 포함된 해당 PRO의 KID base64로 인코딩된 문자열 값과 동일합니다.
PlayReady 'pssh'를 포함하는 표현에 대한 초기화 세그먼트 있는 경우 해당 표현의 cenc:pssh 또는 mspr:pro 모두에 포함된 PRO의 KID base64로 인코딩된 문자열 값은 초기화 세그먼트의 'pssh' 상자에 포함된 해당 PRO의 KID base64로 인코딩된 문자열 값과 동일해야 합니다. 초기화 세그먼트는 HTTP 응답 본문에 포함된 저장된 미디어 콘텐츠 파일의 파일 헤더 복사본일 수 있지만 동적으로 생성되어 파일로 저장되지 않을 수도 있습니다.
미디어 콘텐츠에 LAURL이 포함된 PRO가 있는 PlayReady 'pssh' 상자가 포함되어 있고, LAURL이 ContentProtection 설명자 요소에 포함된 PRO의 LAURL과 다른 경우 ContentProtection 설명자 요소 LAURL이 우선합니다.
맨 위로
2.1.3 MPD의 암호화 상자 필드 추적 포함
공통 암호화는 각 영화 세그먼트에서 키 식별자(KID)를 사용하여 각 미디어 샘플을 암호화하는 데 사용되는 키를 나타냅니다(또는 사용되지 않음). 암호화 상자 추적('tenc')의 default_KID 같은 일부 정보는 필요한 라이선스를 결정하기 위해 MPD에 신호를 보낼 때 유용합니다.
암호화되지 않은 미디어 프레젠테이션 기간과 암호화된 마침표가 있을 수 있습니다. 미디어 파일 및 스트림에는 암호화된 섹션과 암호화되지 않은 섹션이 모두 포함될 수 있습니다. 또한 KID(키 식별자)는 기간에서 기간으로 또는 섹션에서 섹션으로 변경됩니다. 트랙 섹션의 주요 변경 내용은 각 영화 세그먼트의 ISO 미디어 샘플 그룹 및 샘플 그룹 설명 상자를 사용하여 신호를 전송합니다. 샘플 그룹에 대한 자세한 내용과 샘플 보조 정보를 가리키는 'saio' 및 'saiz' 상자를 사용하여 초기화 벡터 및 하위 샘플 암호화 범위에 대한 액세스는 [CENC]을 참조하세요.
일반 암호화 정보에 대한 기본 설정은 ISO 파일 헤더 및 초기화 세그먼트의 트랙 상자('trak')에 저장된 각 트랙의 트랙 암호화 상자('tenc')([ISOBFF] 및 [CENC]) 에 인코딩됩니다. default_KID 필드의 키 추적 상자에서 기본 키 식별자(KID)는 미디어 프레젠테이션 적응 집합과 연결된 ContentProtection 설명자 요소에서도 전달되어야 합니다. cenc:default_KID 부모 AdaptSet 요소에서 참조하는 미디어 세그먼트의 암호를 해독할 수 있는 라이선스를 식별하는 데 사용할 수 있습니다.
Common Encryption ContentProtection Descriptor 요소에 KID(기본 키 식별자)를 포함하려면 [CENC]에 지정된 다음 cenc:default_KID 특성을 사용합니다.
<ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="da9b5994-600c-2ad0-f96d-f12725780978"/>
'tenc'의 default_KID 필드는 16바이트의 큰 엔디안 배열이며 위에서 Common Encryption ContentProtection Descriptor 요소의 cenc:default_KID 특성에 UUID 문자열로 저장되도록 정의됩니다.
ContentProtection Descriptor 요소가 여러 트랙을 참조하고 서로 다른 'tenc' 상자에 다른 기본 키 식별자를 사용하는 경우 cenc:default_KID 특성은 서로 다른 default_KID 값의 공백으로 구분된 목록을 저장해야 합니다.
cenc:default_KID 특성은 PlayReady ContentProtection 설명자 요소에도 포함될 수 있습니다.
아래 표 1에는 ISO 미디어 트랙 암호화 상자('tenc')에 지정된 필드가 나열되어 있습니다(섹션 9.2, [CENC]참조). Table 1 아래의 요소는 공통 암호화의 첫 번째 버전(mspr:IsEncrypted, mspr:IV_size 및 mspr:kid)에 대한 "mspr" 네임스페이스에 정의되지만 사용되지 않고 두 번째 버전의 Common Encryption [CENC]에 지정된 cenc:default_KID 기능적으로 대체되는. 암호화 상자 추적('tenc')의 IV_size 및 IsEncrypted 필드는 암호 해독 중에 사용되지만 MPD ContentProtection 설명자 요소에는 필요하지 않습니다.
참고 KID 값 mspr:kid는 big endian UUID를 저장하도록 정의된 'tenc' default_KID 바이트 배열의 base64로 인코딩된 little endian GUID 해석입니다. 암호화 상자 추적의 모든 필드는 MPD에 복사될 수 있지만 라이선스 취득을 위해 노출하려면 default_KID만 필요합니다.
표 1 – 암호화 상자 필드 추적
요소 | 기본 | 설명 |
---|---|---|
default_IsEncrypted | 1 | 샘플 그룹의 샘플 암호화 상태를 나타내는 플래그입니다. 허용되는 값은 0(암호화되지 않음) 및 1(암호화됨)입니다. |
default_IV_size | 8 | IV(초기화 벡터) 필드의 크기(바이트)입니다. - PlayReady 버전 1, 2, 3은 0 및 8을 지원합니다. - PlayReady 버전 4 이상은 0, 8 및 16을 지원합니다. default_IsEncrypted =1이면 default_IV_size 0으로 설정하면 안 됩니다. 일부 PlayReady 사용 플레이어가 16 바이트 초기화 벡터를 지원하는 것은 아니므로 서비스가 PlayReady 버전 1/2/3 플레이어에 도달해야 하는 경우 암호화된 콘텐츠에 8개 default_IV_size 사용하는 것이 좋습니다. |
default_KID | 없음 | 연결된 샘플의 암호를 해독하는 데 필요한 키를 고유하게 식별하는 16비트(128비트) 키 식별자입니다. 키 식별자는 [CENC]에 따라 UUID로 처리됩니다. PlayReady Header [PRH]의 KID와 달리 'tenc' default_KID 순서가 지정된 큰 엔디안 바이트를 포함하는 16바이트 배열로 저장되고, 128비트 정수는 이진(섹션 6.2) 및 [X.667]에 지정된 숫자(섹션 6.3) UUID 표현과 동일합니다. |
참고: 트랙 암호화 상자의 default_KID 형식은 cenc:pssh, mspr:pro 및 mspr:kid에서 PRO에 포함된 KID 값의 형식과 다릅니다. 자세한 내용은 섹션 2.2.5, [CENC], [PRO] 섹션을 참조하세요.
PlayReady를 콘텐츠 보호 체계로 식별하고 MPD에 암호화 상자 추적 필드를 포함하려면 다음 구문을 사용합니다.
<ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95" value=”MSPR 2.0”>
<mspr:IsEncrypted>1</mspr:IsEncrypted>
<mspr:IV_size>8</mspr:IV_size>
<mspr:kid>2ptZlGAMKtD5bfEnJXgJeA==</mspr:kid>
</ContentProtection>
Common Encryption ContentProtection 설명자 요소에 cenc:default_KID 특성을 포함하고 PlayReady ContentProtection 설명자 요소의 암호화 상자 추적 필드에 다음 규칙을 따라야 합니다.
Common Encryption ContentProtection 설명자 요소의 cenc:default_KID 특성에 있는 KID 문자열은 해당 트랙에 대한 추적 암호화 상자의 default_KID UUID와 동일해야 합니다.
PlayReady ContentProtection 설명자 요소의 mspr:IsEncrypted, mspr:IV_size 및/또는 mspr:kid 값은 해당 트랙에 대한 트랙 암호화 상자의 default_IsEncrypted, default_IV_size 또는 default_KID 필드에 있는 값과 동일해야 합니다.
Mspr:pro 및 cenc:pssh가 Track Encryption Box 필드가 있는 PlayReady ContentProtection 설명자 요소(섹션 2.1.2 참조)에 포함된 경우:
mspr:pro 및 cenc:pssh 요소에 PRO에 포함된 KID는 해당 트랙의 트랙 암호화 상자에 있는 default_KID 동일해야 합니다.
PlayReady ContentProtection Descriptor elementShall의 common Encryption ContentProtection 설명자 요소 및 mspr:kid 값의 cenc:default_KID 특성의 KID는 해당 트랙의 트랙 암호화 상자에 있는 default_KID 동일합니다.
참고 트랙 암호화 상자의 default_KID 16바이트 빅 엔디안 바이트 배열로 저장된 이진 또는 숫자 UUID로 해석되고, cenc:default_KID UUID 하이픈 처리된 문자열로, PRO 및 mspr:kid의 little endian 바이트 순서 GUID 표현으로 인코딩된 base64 문자열로 해석됩니다. 그러나 모두 동일한 UUID의 대체 표현이어야 합니다. 섹션 2.2.5를 참조하세요.
맨 위로
2.2 구현 권장 사항 및 요구 사항
PlayReady 개체 (PRO) [PRO] 인코딩 된 미디어 보호 시스템 특정 헤더 상자에 포함 될 수 있습니다 ('pssh') [ISOBFF], 초기화 세그먼트 또는 MPD 자체에 인코딩.
영화 상자('moov') 또는 영화 조각 상자('moof')에 'pssh' 상자를 삽입할 수 있습니다. 예를 들어 초기화 세그먼트를 사용할 수 있도록 'moov' 상자에 'pssh' 상자를 삽입할 수 있습니다([DASH], 섹션 5.3.9.5.2). 키 회전을 위해 KID에서 인덱싱한 리프 라이선스를 전달하기 위해 각 'moof' 상자에 'pssh' 상자를 삽입할 수 있습니다.
샘플 그룹 및 샘플 보조 정보는 해당 정보를 참조하는 모든 영화 세그먼트 내에 저장되어야 합니다. 샘플 그룹 설명 상자('sgdp')는 샘플 그룹화 상자('sbgp')가 있는 경우 각 'moof' 상자에 있어야 합니다. 샘플 보조 정보 오프셋 상자('saio') 및 샘플 보조 정보 크기 상자('saiz')는 샘플 보조 정보에 대한 유효한 포인터가 있는 트랙 암호화 상자('tenc')를 포함하는 모든 트랙의 각 영화 세그먼트에 있어야 합니다.
2.2.1 일반
PlayReady ContentProtection 설명자 요소는 적응 집합 또는 해당 표현과 연결될 수 있지만 원활한 적응 비트 전송률 전환 및 DASH 애플리케이션 사양 준수를 위해 PlayReady ContentProtection 설명자 요소는 Representation 요소가 아닌 AdaptSet 요소에 포함되어야 합니다. 이렇게 하면 적응 집합의 모든 세그먼트에 단일 라이선스 및 암호 해독기 구성을 사용할 수 있습니다.
PlayReady ContentProtection 설명자를 포함하는 것이 좋으며, MPD에 "cenc" 값이 있는 DASH MP4 ContentProtection 설명자를 포함해야 합니다.
이렇게 하면 "cenc"가 가능하고 애플리케이션 또는 MPD 또는 초기화 세그먼트의 'pssh'에서 라이선스 취득 정보를 가질 수 있는 DRM이 콘텐츠가 Common Encrypted임을 식별하고, 필요한 라이선스(default_KID 사용)를 식별하고, 라이선스를 획득하고, 미디어의 암호를 해독할 수 있습니다.
사용자 인식을 위해 PlayReady ContentProtection 설명자의 UUID 외에도 이름 및 버전이 "MSPR 2.0"인 @value 특성을 포함하는 것이 좋습니다. 예를 들어:
<ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="da9b5994-600c-2ad0-f96d-f12725780978"/>
<ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95" value=”MSPR 2.0”/>
2.2.2 PRO 위치 우선 순위
클라이언트 애플리케이션이 MPD에서 PRO를 찾으면 초기화 세그먼트에 포함된 PRO보다 우선합니다(2.2.3의 추가 초기화 세그먼트 PRO 요구 사항 참조).
클라이언트 애플리케이션이 MPD에서 PRO를 찾으면 해당 PRO에 포함된 권한 관리 헤더가 미디어 콘텐츠의 'moov' 상자에 있는 'pssh' 상자에 포함된 PRO의 권한 관리 헤더보다 우선합니다.
클라이언트 애플리케이션이 초기화 세그먼트에서 PRO를 찾으면 미디어 콘텐츠의 'moov' 상자 헤더에 있는 'pssh' 상자에 포함된 PRO보다 우선합니다(2.2.3의 추가 초기화 세그먼트 PRO 요구 사항 참조).
2.2.3 PRO를 포함할 위치
PRO는 MPD 또는 초기화 세그먼트에 있어야 합니다. 그것은 둘 다에 있을 수 있습니다. MPD에서는 PlayReady 콘텐츠 보호 설명자(레거시 플레이어의 경우 mspr:pro)의 mspr:pro 요소와 cenc:pssh 요소 모두에 있어야 합니다.
초기화 세그먼트 또는 MPD의 PRO에는 Rights Management 헤더가 포함될 수 있습니다.
초기화 세그먼트를 사용하는지 여부에 관계없이 초기화 세그먼트를 다운로드하지 않고 Rights Management Header 정보를 가져올 수 있도록 MPD에 올바른 PRO를 포함하는 것이 좋습니다.
2.2.4 MPD PRO에 포함할 내용
PRO에는 Rights Management 헤더 및/또는 ELS(Embedded License Store)가 포함될 수 있습니다.
MPD PRO에는 Rights Management 헤더가 포함되어 있는 것이 좋습니다.
DRM 도메인 또는 라이선스 체인 스키마의 일부로 필요하지 않은 경우 ELS를 포함하지 않는 것이 좋습니다.
2.2.5 KID 바이트 순서
PlayReady의 키 식별자(KID)는 GUID(DWORD, WORD, WORD, 8-BYTE 배열)로 형식이 지정된 바이트 배열에 작은 엔디안 바이트 순서로 저장되며, 이 배열은 BASE64가 PRO의 문자열로 스토리지용으로 인코딩됩니다. PlayReady 라이선스 서버와 PlayReady 에코시스템의 PlayReady 클라이언트는 모두 PRO 및 PlayReady 라이선스의 KID가 [GUID]의 작은 엔드디안 바이트 순서 표현이라고 예상합니다.
해당 KID는 [X.667]에 지정된 대로 UUID 문자열([X.667] 섹션 6.4) 또는 큰 엔디안 바이트 순서 이진(섹션 6.2) 또는 숫자(섹션 6.3)로 UUID를 포함하는 바이트 배열로 나타낼 수 있습니다. 일반 암호화 [CENC] 및 DASH는 cenc:default_KID 특성(6.4 문자열), 암호화 상자 추적('tenc') 및 'seig' 샘플 그룹 설명 상자('sgpd')(6.2 이진 또는 6.3 숫자 바이트 배열)에서 이러한 표현을 사용합니다.
따라서 변경 사항이 없는 한 클라이언트는 PLAYReady 라이선스와 일치하기 위해 KID 바이트 배열의 엔디언을 변환해야 합니다.
cenc:default_KID 특성 및 [ISOBFF] 상자의 KID를 PlayReady KID로 변환하려면 다음 샘플 코드를 사용합니다.
// Create a PlayReady GUID from the KID value in ISOBFF box.
// Since the PlayReady Server always runs on an Intel processor,
// this will be a little endian representation.
// e.g. KID in Track Encryption Box is:
// {f81d4fae-7dec-11d0-a765-00a0c91e6bf6}
byte[] tencKidBytes = new byte[] {
0xf8, 0x1d, 0x4f, 0xae,
0x7d, 0xec,
0x11, 0xd0,
0xa7, 0x65,
0x00, 0xa0, 0xc9, 0x1e, 0x6b, 0xf6
};
Byte[] prKidBytes = new byte[16];
// Swap the endianness of the GUID value:
// - Reverse bytes 0 to 3,
// - swap bytes 4 and 5,
// - swap bytes 6 and 7, and
// - copy bytes 8-15 as-is without swapping
ConvertEndianness(tencKidBytes, prKidBytes);
Guid prKid = new Guid(prKidBytes);
void ConvertEndianness(byte[] original, byte[] guidBytes)
{
System.Array.Copy(original, guidBytes, 16);
Swap(ref guidBytes, 0, 3);
Swap(ref guidBytes, 1, 2);
Swap(ref guidBytes, 4, 5);
Swap(ref guidBytes, 6, 7);
}
void Swap(ref byte[] bytes, int pos1, int pos2)
{
byte temp = bytes[pos1];
bytes[pos1] = bytes[pos2];
bytes[pos2] = temp;
}
표 2 – KID 표현 예제
KID 매개 변수 | 형식 | 표현 |
---|---|---|
KID | UUID BE 16진수 | f81d4fae7dec11d0a76500a0c91e6bf6 [X.667]의 섹션 6.3 |
cenc:default_KID 특성 | 하이픈이 있는 UUID 16진수 문자열 | "f81d4fae-7dec-11d0-a765-00a0c91e6bf6" [X.667] 섹션 6.4 |
ISOBFF 상자에서 KID | UUID BE 바이트 배열 | 16진수 표현은 { 0xf8, 0x1d, 0x4f, 0xae, 0x7d, 0xec, 0x11, 0xd0, 0xa7, 0x65, 0x00, 0xa0, 0xc9, 0x1e, 0x6b, 0xf6 } [X.667]의 섹션 6.2 |
PRO |
GUID LE 바이트 배열의 Base64 문자열 | "rk8d+Ox90BGnZQCgyR5r9g==" (Base64 인코딩 전 데이터의 16진수 표현은 { 0xae, 0x4f, 0x1d, 0xf8, 0xec, 0x7d, 0xd0, 0x11, 0xa7, 0x65, 0x00, 0xa0, 0xc9, 0x1e, 0x6b, 0xf6 }입니다. |
mspr:kid | 'tenc' 상자에 default_KID 바이트 배열의 Base64 문자열 | "+B1Prn3sEdCnZQCgyR5r9g==" (Base64 인코딩 전 데이터의 16진수 표현은 { 0xf8, 0x1d, 0x4f, 0xae, 0x7d, 0xec, 0x11, 0xd0, 0xa7, 0x65, 0x00, 0xa0, 0xc9, 0x1e, 0x6b, 0xf6 }입니다. |
PlayReady 라이선스 |
GUID LE 바이트 배열 | 16진수 표현은 { 0xae, 0x4f, 0x1d, 0xf8, 0xec, 0x7d, 0xd0, 0x11, 0xa7, 0x65, 0x00, 0xa0, 0xc9, 0x1e, 0x6b, 0xf6 } |
맨 위로
3. 미디어 프레젠테이션 설명 예제
3.1 초기화 세그먼트 또는 미디어 콘텐츠의 올바른 PRO
위의 섹션 2.1.1을 참조하세요.
<?xml version="1.0" encoding="utf-8"?>
<MPD
xmlns="urn:mpeg:DASH:schema:MPD:2011"
xmlns:cenc="urn:mpeg:cenc:2013"
minBufferTime="PT2.00S"
profiles="urn:mpeg:dash:profile:isoff-live:2011"
type="static">
<Period>
<AdaptationSet mimeType="audio/mp4">
<ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="0b630844-cb17-496a-9700-3702e1d23ee2"/>
<ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95" value=”MSPR 2.0”>
</ContentProtection>
<Representation bandwidth="134878" id="audio">
<SegmentList duration="4000" timescale="1000">
<Initialization sourceURL="audio/init.mp4"/>
<SegmentURL media="audio/seg-0000.m4f"/>
<SegmentURL media="audio/seg-0001.m4f"/>
<SegmentURL media="audio/seg-0002.m4f"/>
</SegmentList>
</Representation>
</AdaptationSet>
</Period>
</MPD>
3.2 MPD에 PlayReady 개체(PRO) 포함
위의 섹션 2.1.2를 참조하세요.
<?xml version="1.0" encoding="utf-8"?>
<MPD
xmlns="urn:mpeg:DASH:schema:MPD:2011"
xmlns:cenc="urn:mpeg:cenc:2013"
xmlns:mspr="urn:microsoft:playready"
minBufferTime="PT4.00S"
profiles="urn:mpeg:dash:profile:isoff-live:2011"
type="static">
<Period>
<AdaptationSet mimeType="audio/mp4">
<ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="0b630844-cb17-496a-9700-3702e1d23ee2"/>
<ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95" value=”MSPR 2.0”>
<cenc:pssh>AAAAAJoE8HmYQEKGq5LmW+CIX5UAAALq6gIAAAEAAQDgAjwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AUgBBAGgAagBDAHgAZgBMAGEAawBtAFgAQQBEAGMAQwA0AGQASQArADQAZwA9AD0APAAvAEsASQBEAD4APABDAEgARQBDAEsAUwBVAE0APgBxAGgASwBXAEgASgBhAEwAMAAxAEkAPQA8AC8AQwBIAEUAQwBLAFMAVQBNAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AcABsAGEAeQByAGUAYQBkAHkALgBkAHkAbgBkAG4AcwAuAG8AcgBnAC8AYwBvAG4AdABvAHMAbwBzAHMAcAByAC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPAAvAEwAQQBfAFUAUgBMAD4APABEAFMAXwBJAEQAPgBpAEsARwBsAFcARwA0AEQAWABVAHEANAB3AGIAVwBnAFIATgBMAFIASgBnAD0APQA8AC8ARABTAF8ASQBEAD4APAAvAEQAQQBUAEEAPgA8AC8AVwBSAE0ASABFAEEARABFAFIAPgA=</cenc:pssh>
<mspr:pro>6gIAAAEAAQDgAjwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AUgBBAGgAagBDAHgAZgBMAGEAawBtAFgAQQBEAGMAQwA0AGQASQArADQAZwA9AD0APAAvAEsASQBEAD4APABDAEgARQBDAEsAUwBVAE0APgBxAGgASwBXAEgASgBhAEwAMAAxAEkAPQA8AC8AQwBIAEUAQwBLAFMAVQBNAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AcABsAGEAeQByAGUAYQBkAHkALgBkAHkAbgBkAG4AcwAuAG8AcgBnAC8AYwBvAG4AdABvAHMAbwBzAHMAcAByAC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPAAvAEwAQQBfAFUAUgBMAD4APABEAFMAXwBJAEQAPgBpAEsARwBsAFcARwA0AEQAWABVAHEANAB3AGIAVwBnAFIATgBMAFIASgBnAD0APQA8AC8ARABTAF8ASQBEAD4APAAvAEQAQQBUAEEAPgA8AC8AVwBSAE0ASABFAEEARABFAFIAPgA=</mspr:pro>
</ContentProtection>
<Representation bandwidth="134878" id="audio">
<SegmentList duration="4000" timescale="1000">
<Initialization sourceURL="audio/init.mp4"/>
<SegmentURL media="audio/seg-0000.m4f"/>
<SegmentURL media="audio/seg-0001.m4f"/>
<SegmentURL media="audio/seg-0002.m4f"/>
</SegmentList>
</Representation>
</AdaptationSet>
</Period>
</MPD>