Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Implementieren des Inhaltsschutzes für Live- und On-Demand-Profile von dynamischem adaptivem Streaming über HTTP (ISO/IEC 23009-1) mit common Encryption (ISO/IEC 23001-7) und Microsoft PlayReady.
Aktuelle Version
Die aktuelle Version ist Version 1.3, die am 15. Februar 2018 veröffentlicht wurde.
Weitere Informationen finden Sie im Änderungsverlauf .
Abstrakt
Das ISO/IEC 23009-1 ISO Base Media File Format On-Demand- und Live-DASH-Profile können mit der SPEZIFIKATION ISO/IEC 23001-7 "Common Encryption in ISO base media file format files" verwendet werden. Microsoft PlayReady unterstützt sowohl ISO/IEC 23001-7 als auch ISO/IEC 23009-1. In dieser Spezifikation wird beschrieben, wie Sie eine ISO/IEC 23009-1 Media Presentation Description-Datei erstellen, die die Verwendung von Microsoft PlayReady für ISO/IEC 14496-12-Mediendarstellungen für adaptive Live- und On-Demand-Streamingszenarien signalisiert.
Rechtliche Hinweise
© 2018 Microsoft Corporation. Alle Rechte vorbehalten. Dieses Dokument wird "as-is" bereitgestellt. Die in diesem Dokument enthaltenen Informationen, einschließlich URL- und anderer Webseitenverweise, können sich ohne vorherige Ankündigung ändern. Sie tragen das Risiko, sie zu verwenden.
Dieses Dokument stellt Ihnen keine rechte Rechte an geistigem Eigentum in jedem Microsoft-Produkt zur Verfügung. Sie können dieses Dokument für Ihre internen Referenzzwecke kopieren und verwenden. Sie dürfen keine Benachrichtigungen aus diesem Dokument entfernen.
Inhalt
Tabellen
Tisch | Titel |
---|---|
Tabelle 1 | Track-Verschlüsselungsbox |
Tabelle 2 | KID-Darstellung (Beispiel) |
1. Einführung
Der Dynamic Adaptive Streaming over HTTP-Standard [DASH] von MPEG gibt Formate für die Übermittlung von Medieninhalten von HTTP-Servern an HTTP-Clients an. In DASH wird die Darstellung von Medieninhalten durch eine MPD-Datei (Media Presentation Description) beschrieben. Die MPD stellt Ressourcenbezeichner für Segmente zusammen mit dem Kontext für diese Ressourcen in einer Medienpräsentation bereit.
In DASH besteht eine Medienpräsentation aus einer Zeitabfolge von Perioden ([DASH], Abschnitt 5.3.2). Innerhalb eines Zeitraums werden Medieninhalte in einer Reihe austauschbarer codierter Versionen namens Adaptionssätze ([DASH], Abschnitt 5.3.3) angeordnet. Jeder Anpassungssatz besteht aus Repräsentationen ([DASH], Abschnitt 5.3.5) – codierte Versionen der Medieninhaltskomponenten.
Ein ContentProtection Descriptor-Element kann einem Anpassungssatz oder einer Darstellung zugeordnet werden, um das Verschlüsselungsschema anzugeben, und ein oder mehrere ContentProtection Descriptor-Elemente können hinzugefügt werden, um DRM-Lizenzerwerb ([DASH], Abschnitt 5.8.4.1) zu ermöglichen.
1.1 Bereich
Verwenden von Microsoft PlayReady als Inhaltsschutzschema in einer ISO/IEC 23009-1 DASH-Medienpräsentationsbeschreibungsdatei.
1.2 Konventionen
Die Schlüsselwörter "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" und "OPTIONAL" in diesem Dokument sind zu interpretieren, wie in [RFC2119] beschrieben. Das bedeutet:
"MUST", "REQUIRED" und "SHALL" bedeuten, dass die Definition eine absolute Anforderung der Spezifikation ist.
"DARF NICHT" und "NICHT" bedeuten, dass die Definition ein absolutes Verbot der Spezifikation ist.
"SHOULD" und "RECOMMENDED" bedeuten, dass es möglicherweise gültige Gründe gibt, ein bestimmtes Element zu ignorieren, aber die vollständigen Auswirkungen müssen verstanden und sorgfältig abgewogen werden, bevor Sie einen anderen Kurs auswählen.
"SOLLTE NICHT" und "NICHT EMPFOHLEN" bedeuten, dass es gültige Gründe geben kann, wenn das bestimmte Verhalten akzeptabel ist, aber die vollständigen Auswirkungen sollten verstanden werden und der Fall sorgfältig abgewogen werden, bevor sie ein Verhalten implementieren, das mit dieser Bezeichnung beschrieben wird.
"MAY" und "OPTIONAL" bedeutet, dass das Element wirklich optional ist.
1.3 Terminologie, Abkürzungen und Akronyme
1.3.1 Terminologie
Ausdruck | Beschreibung |
---|---|
Anpassungssatz | In DASH, einer Reihe austauschbarer codierter Versionen einer oder mehrerer Medieninhaltskomponenten. |
Inhaltsschutz (CP) | Der Prozess der Sicherung einer geschützten Ressource nach der Übermittlung an ein Clientgerät. |
Eingebettete Lizenz | Eine im PlayReady-Objekt (PRO) gespeicherte Lizenz. |
Eingebetteter Lizenzspeicher (ELS) | Ein Datensatz im PlayReady-Objekt (PRO) zum Speichern eingebetteter Lizenzen. |
GUID (Globally Unique Identifier) | Eine eindeutige Bezugsnummer, dargestellt als Bindestrich getrennt 32-stellige hexadezimale Zeichenfolge und in der Regel als 128-Bit-Ganzzahl gespeichert. |
Initialisierungssegment | Ein DASH-Segment mit Metadaten, die erforderlich sind, um die mediendatenströme darzustellen, die in Mediensegmenten gekapselt sind; im Fall von ISO Media, einem Dateiheader. |
Schlüsselbezeichner (KID) | Eine UUID, die einen Schlüssel zum Schutz von Inhalten, Lizenzen oder anderen vertraulichen Informationen eindeutig identifiziert; im Fall von PlayReady, gespeichert als GUID. |
Drehung der Taste | Regelmäßige Änderungen am Verschlüsselungsschlüssel, der Medien zugeordnet ist. In der Regel bedeutet dies |
Blattlizenz | Eine Lizenz, deren Inhaltsschlüssel mit einem Inhaltsschlüssel in einer Stammlizenz verschlüsselt wird. |
Lizenz | Eine PlayReady-Datenstruktur, die Richtlinien und einen verschlüsselten Inhaltsschlüssel enthält. |
Lizenzerwerbs-URL (LAURL) | Die URL des Webdiensts "Lizenzerwerb PlayReady". |
Lizenzkette | Eine Lizenzkette besteht aus einer Stammlizenz und einer Leaf-Lizenz. Eine Blattlizenz verfügt möglicherweise über mehrere Stammlizenzen, und eine Stammlizenz verfügt möglicherweise über mehrere Blattlizenzen. Für jedes Paar ist eine Lizenzkette vorhanden. |
Live-Profil | Das ISO Base-Mediendateiformat-Liveprofil (siehe Abschnitt 8.4 von [DASH]). Das Live-Profil ist für die Livecodierung optimiert, bei der jedes Filmsegment sofort angefordert werden kann, nachdem es mit einer generierten Vorlage-URL codiert wurde. |
Medienpräsentation | Sammlung von Metadaten und Mediendaten, die als Medienpräsentation heruntergeladen und gerendert werden können, wie in ISO/IEC 23009-1 definiert. |
Beschreibung der Medienpräsentation (MPD) | Formale XML-Dokumentbeschreibung einer in ISO/IEC 23009-1 definierten Medienpräsentation. |
Mediensegment | Ein DASH-Segment, das einem Medienformat entspricht und die Wiedergabe ermöglicht, möglicherweise in Kombination mit anderen Mediensegmenten und/oder einem Initialisierungssegment. |
Filmfeld ('moov') | Im ISO-Basismediendateiformat definieren die Unterfelder die Metadaten für eine Medienpräsentation [ISOBFF]. |
Filmfragmentfeld ('moof') | Im ISO-Basismediendateiformat erweitert das Filmfragment-Feld die Medienpräsentation in der Zeit [ISOBFF] und ist in einem DASH-Mediensegment enthalten. |
On Demand-Profil | Das ISO-Basismediendateiformat-Profil für Medien auf Abruf (siehe Abschnitt 8.3 von [DASH]). Das On Demand-Profil bietet grundlegende Unterstützung für On-Demand-Inhalte. Jede Darstellung wird als einzelnes Segment bereitgestellt, Teilsegmente werden über die Darstellungen eines Anpassungssatzes ausgerichtet, und Untersegmente beginnen mit einem Stream Access Point, der einem Filmsegment entspricht. |
Periode | Intervall einer Medienpräsentation. |
PlayReady-Objekt (PRO) | Ein binäres Objekt, das eine variable Anzahl von Datensätzen enthält, einschließlich optional PRH- und ELS-Datensätzen. Diese Datensätze enthalten Informationen zu Lizenzen und Lizenzerwerb (siehe [PRO]). |
Schutzsystemspezifische Kopfzeilenfeld ('pssh') | Im ISO-Basismediendateiformat enthält das Feld "Systemspezifischer Schutzsystem"-Header Metadaten, die von einem bestimmten Inhaltsschutzsystem benötigt werden, um eine Lizenz zu erwerben und den Medieninhalt zu entschlüsseln [ISOBFF]. |
Vertretung | Eine der Alternativen zur Medieninhaltskomponente während eines definierten Zeitraums, z. B. eine ISO-Mediendatei. Es wird durch ein MPD Representation-Element ([DASH], Abschnitt 5.3.5) beschrieben. |
PlayReady-Kopfzeile (PRH) | Ein Datensatz im PlayReady-Objekt (PRO), der Metadaten enthält, die zum Entschlüsseln des Medieninhalts erforderlich sind, einschließlich einer oder mehrerer Schlüssel-IDs und Lizenzerwerbs-URLs (siehe [PRH]). |
Stammlizenz | Eine Lizenz, deren Inhaltsschlüssel zum Verschlüsseln eines Inhaltsschlüssels in einer Leaf-Lizenz verwendet wird |
Abschnitt | In DASH verweist ein Element in einem MPD auf eine Medienressource mit einem HTTP-URL und einem optionalen Bytebereich. |
Segmentindex | Zeitbereichs-zu-Byte-Bereichsindexzuordnung innerhalb eines Mediensegments getrennt von der MPD, definiert als ISO Media 'sidx'-Feld. |
Stream-Zugangspunkt (SAP) | Die Position in einer Darstellung, die die Wiedergabe von Mediensegmenten nur mithilfe der Darstellungsdaten von dieser Position vorwärts ermöglicht. |
Untersegment | In DASH ist dies eine Einheit innerhalb eines Mediensegments, das von einem Segmentindex indiziert wird. Ein Filmsegment wird als Teilsegment in DASH On Demand Profile adressiert, aber ein Segment in DASH Live Profile. |
Feld "Verschlüsselung nachverfolgen" | Im ISO Base Media File Format beschreibt das Feld "Track Encryption" ('tenc') die Standardverschlüsselungsparameter für einen Track [CENC], [ISOBFF]. |
UUID | Ein mathematisch eindeutiger Bezeichner, der als Zahl oder Zeichenfolge dargestellt wird, wie in [X.667] angegeben |
Video On Demand (VOD) | System, mit dem der Endbenutzer Videoinhalte bei Bedarf auswählen und ansehen kann. Sowohl das DASH Live Profile als auch DASH On Demand Profile können für VOD-Präsentationen verwendet werden. |
1.3.2 Abkürzungen und Akronyme
Abkürzung | Bedeutung |
---|---|
CP | Inhaltsschutz |
STRICH | Dynamisches adaptives Streaming über HTTP |
ELS | Eingebetteter Lizenzspeicher |
Globale eindeutige Kennung (GUID) | Eindeutige globale Kennung |
KIND | Schlüsselbezeichner |
LAURL | Lizenzakquisitions-URL |
MPD | Beschreibung der Medienpräsentation |
PRH | PlayReady-Kopfzeile |
PROFI | PlayReady-Objekt |
SAFT | Stream-Zugriffspunkt |
UUID | Universell eindeutiger Bezeichner |
VOD (Video on Demand) | Video bei Bedarf |
1.4 Referenzen
1.4.1 Normative Referenzen
Programmcode | Normative Referenz |
---|---|
[CENC] | ISO/IEC FDIS 23001-7:2016 „Informationstechnologie – MPEG-Systemtechnologien – Teil 7: Gemeinsame Verschlüsselung im ISO-Basis-Medien-Dateiformat“, https://www.iso.org/standard/68042.html |
[DASH] | ISO/IEC 23009-1:2014, Second Edition, "Information technology — Dynamic Adaptive Streaming over HTTP (DASH) — Teil 1: Beschreibung und Segmentformate der Medienpräsentation", http://standards.iso.org/ittf/PubliclyAvailableStandards/c065274_ISO_IEC_23009-1_2014.zip |
[EME] | "Verschlüsselte Medienerweiterungen", W3C-Empfehlung 18. September 2017https://www.w3.org/TR/encrypted-media/ |
[PRH] | "Microsoft PlayReady Header, siehe PlayReady Header Specification |
[PRO] | "Microsoft PlayReady-Objekt, siehe PlayReady Header Specification |
[RFC2119] | "Schlüsselwörter für die Verwendung in RFCs zur Angabe von Anforderungsstufen ", S. Bradner, März 1997, http://www.ietf.org/rfc/rfc2119.txt |
[RFC3629] | "UTF-8, ein Transformationsformat von ISO 10646", F. Yergeau, November 2003, http://tools.ietf.org/html/rfc3629 |
[RFC4122] | "A Universally Unique IDentifier (UUID) URN Namespace", P. Leach, M. Mealling, R. Salz, Juli 2005,http://www.ietf.org/rfc/rfc4122.txt |
[X.667] | "Informationstechnologie – Open Systems Interconnection – Verfahren für den Betrieb von OSI-Registrierungsstellen: Generierung und Registrierung von Universally Unique Identifiers (UUIDs) und deren Verwendung als ASN.1-Objektbezeichnerkomponenten" Serie X ITU-T Empfehlunghttp://www.itu.int/rec/T-REC-X.667-201210-I/en |
1.4.2 Informationsreferenzen
Programmcode | Informationsreferenz |
---|---|
[CPSID] | DASH Industry Forum, "Schutz systemspezifische Bezeichner",http://dashif.org/identifiers/content_protection/ |
[DASHIF] | DASH Industry Forum, "Richtlinien für Implementierung: DASH-IF Interoperabilitätspunkte", 07. September 2017, Version 4.1,https://dashif.org/docs/DASH-IF-IOP-v4.3.pdf |
[ISOBFF] | ISO/IEC 14496-12, Fourth Edition (Korrigierte Version 2012-09-15), "Informationstechnologie – Codieren von audiovisuellen Objekten – Teil 12: ISO Base Media File Format",http://standards.iso.org/ittf/PubliclyAvailableStandards/c061988_ISO_IEC_14496-12_2012.zip |
1.5 Änderungsverlauf
Version | Datum | Einzelheiten |
---|---|---|
Version 1.3 | 15. Februar 2018 | Erläutern der Unterstützung für 16-Byte-Initialisierungsvektoren (16-Byte-IVs). |
Version 1.2 | 8. Oktober 2014 | 1) Änderungen für CENC 2. Auflage 2) Änderungen im Zusammenhang mit den DASH MPD ContentProtection Descriptor-Elementen 3) Änderungen der Terminologie für Ergänzungen und Klarstellungen 4) Änderungen an normativen und informativen Verweisen auf die neueste Version 5) Klären Sie die KID-Darstellung und Endianität in den ISOBFF-Feldern, PRO und PlayReady-Lizenz. |
Version 1.1 | 18. Februar 2013 | Erläutern sie die Darstellung von PlayReady SystemID. Die PlayReady SystemID ist 9a04f079-9840-4286-ab92-e65be0885f95. Big Endian representation = {0x9A, 0x04, 0xF0, 0x79, 0x98, 0x40, 0x42, 0x86, 0xAB, 0x92, 0xE6, 0x5B, 0xE0, 0x88, 0x5F, 0x95}. Kleine endische Darstellung = {0x79, 0xF0, 0x04, 0x9A, 0x40, 0x98, 0x86, 0x42, 0xAB, 0x92, 0xE6, 0x5B, 0xE0, 0x88, 0x5F, 0x95}. |
Version 1.0 | 17. Juli 2012 | Ursprüngliche Version |
2. PlayReady DASH Inhaltsschutzschema
Microsoft PlayReady unterstützt die neuen ISO/IEC 23009-1 [DASH] und ISO/IEC 23001-7 [CENC]-Standards. In dieser Spezifikation wird erläutert, wie Sie eine DASH-Medienpräsentationsbeschreibungsdatei erstellen, die die Verwendung von Microsoft PlayReady für Mediendateiformatdarstellungen im ISO Base Media File Format signalisiert, sowohl für Adaptive Streamingszenarien ([DASH], Abschnitt 8.3) als auch für Live([DASH]-Szenarien.
Die vier Szenarien, die den Fokus dieser Spezifikation haben, sind VOD- oder Livepräsentationen von Medien:
verschlüsselt mit einem einzelnen Schlüssel
Wo einige Inhalte verschlüsselt sind und sich einige Inhalte im Klaren befinden
mit Schlüsseldrehung ohne eingebettete Blattlizenzen
mit Schlüsseldrehung mit eingebetteten Blattlizenzen
2.1 DASH ContentProtection Descriptor-Elemente
DASH definiert zwei Typen von ContentProtection-Deskriptorelementen für ISO-Medien ([DASH] Abschnitte 5.3.7.2-Tabelle 9, 5.8.5.2 und 5.8.4.1):
- Mit
@schemeIdUri=”urn:mpeg:dash:mp4protection:2011” @value=”<scheme>”
- Mit
@schemeIdUri=”urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx” @value=”DRMNAME version”
Der erste Beschreibungstyp gibt den vierstellige Code ("4CC") des Verschlüsselungsschemas an, das im Informationsfeld für das Schutzschema ('schi') in jedem verschlüsselten ISO-Medientitel enthalten ist. Dieser Deskriptortyp MUSS immer vorhanden sein, damit die Spieler darauf aufmerksam gemacht werden, dass der Inhalt verschlüsselt ist, und kann bestimmen, ob sie das Verschlüsselungsschema entschlüsseln können, bevor sie versuchen, es herunterzuladen und wiederzugeben.
Der zweite Deskriptortyp gibt die UUID-Zeichenfolge für ein bestimmtes DRM-System an, das einen Lizenz- und Entschlüsselungsschlüssel für den zugehörigen Anpassungssatz bereitstellen kann. Anwendungsspezifikationen wie dasH Industry Forum, DVB und DECE schränken alle Darstellungen in einem Anpassungssatz ein, um denselben Schlüssel(n) und dieselbe Lizenz zu nutzen, um einen nahtlosen adaptiven Wechsel zu ermöglichen, was durch Einschränken von ContentProtection Descriptors von der Darstellungsebene der MPD erreicht wird. Die UUID-Zeichenfolge entspricht dem SystemID-Feld, das durch das ISO Media Protection System Specific Information Box ('pssh') angegeben wird, das in der Movie Box ('moov') einer Datei oder einem DASH Initialisierungssegment vorhanden sein kann.
Anmerkung Das Feld "pssh" enthält eine SystemID, eine UUID [X.667], die das Inhaltsschutzsystem eindeutig identifiziert. Die PlayReady SystemID ist 9a04f079-9840-4286-ab92-e65be0885f95.
SystemID-Werte für DRM-Systeme werden registriert unter: https://dashif.org/identifiers/content_protection/
Jedes AdaptationSet-Element KANN mehrere DRM-Deskriptoren auflisten, um anzugeben, dass Lizenzen für mehrere DRM-Systeme verfügbar sind. Jedes DRM-System kann Elemente und Attribute in ihrem eigenen Namespace angeben und sie mithilfe ihrer SystemID optional oder erforderlich in Deskriptoren machen.
Die zweite Ausgabe von Common Encryption ([CENC] Section 11) gibt ein optionales cenc:pssh-Element an, das von allen DRM ContentProtection Descriptors für eine verbesserte Interoperabilität verwendet werden kann. Außerdem wird ein cenc:default_KID-Attribut angegeben, das für die Aufnahme in den mp4protection Descriptor empfohlen wird, um die für alle Systeme erforderliche Lizenz an einem Ort zu identifizieren. Das Element cenc:pssh enthält eine vollständige "pssh"-Feldstruktur. Dies wird also identisch mit der EME-API (Encrypted Media Extension) in Webbrowsern (EME) verarbeitet.
DRM-Systeme können Lizenzerwerbsinformationen in:
- Ein cenc:pssh-Element in einem ContentProtection-Deskriptor in der MPD
- Ein Feld "pssh" im Feld "moov" einer Datei oder eines Initialisierungssegments
- Beide oben genannten Elemente (in diesem Fall hat das cenc:pssh-Element Vorrang)
Je nach Workflow kann es effizienter sein, Lizenzerwerbsinformationen in ein Feld "pssh" in jede Datei in einem Anpassungssatz während der Codierung oder Verpackung einzubetten; oder es kann effizienter sein, ein cenc:pssh-Element in eine MPD einzubetten, wenn eine Streamingpräsentation angeboten wird. Für Livestreaming ist es besser, cenc:pssh im MPD zu verwenden, um eine frühzeitige Lizenzerfassung zu ermöglichen, anstatt viele gleichzeitige Lizenzanforderungen zum Zeitpunkt des ersten Initialisierungssegments auszulösen und das Feld "pssh" gleichzeitig an möglicherweise Millionen von Zuschauern zu liefern. Lizenzerwerbsinformationen in der MPD ermöglichen es verschiedenen Streamingdiensten, unterschiedliche Lizenzserver zu verwenden, sie im Laufe der Zeit zu ändern usw. ohne separate Mediendateien zu erstellen und zu verwalten.
Bei PlayReady kann ein PlayReady-Objekt (PRO) [PRO] in einem cenc:pssh-Element, einem mspr:pro-Element oder einem Feld "pssh" enthalten sein, um den Lizenzerwerb zu aktivieren. Das element mspr:pro wird von Microsoft PlayReady definiert und enthält nur die PRO [PRO]-Informationen, nicht die Boxstruktur, die in 'pssh' und cenc:pssh enthalten ist. Sowohl mspr:pro als auch cenc:pssh ermöglichen alten Spielern, einschließlich eines Spielers, der auf Silverlight basiert, und neue Spieler, einschließlich Webseiten, die Skript verwenden, um geschützte DASH-Präsentationen in HTML5-Browsern zu spielen.
Anmerkung In dieser Spezifikation ist "mspr" "urn:microsoft:playready", definiert durch xmlns:mspr="urn:microsoft:playready".
2.1.1 Korrigieren von PRO im Initialisierungssegment oder Medieninhalt
Wenn ein Initialisierungssegment das richtige PRO enthält oder wenn der Medieninhalt ein PlayReady -Pssh-Feld mit dem richtigen PRO enthält, dann sollte das folgende ContentProtection Descriptor-Element mit systemspezifischem PlayReady Content Protection-Bezeichner [CPSID] in einem AdaptationSet-Element in einem MPD verwendet werden, um die Verfügbarkeit einer PlayReady-Lizenz anzugeben:
<ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95" value=”MSPR 2.0”/>
PlayReady unterstützt den Common Encryption [CENC]-Standard. Wenn die Metadaten für den Lizenzerwerb im Initialisierungssegment oder im Medieninhalt "pssh" gespeichert werden, sollte das PlayReady ContentProtection Descriptor-Element vorhanden sein.
Das folgende ContentProtection Descriptor-Element muss in jedem geschützten Anpassungssatz vorhanden sein, und eine einzelne Instanz gibt das Verschlüsselungsschema für alle DRMs an, die das Cenc-Schema unterstützen.
<ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc"/>
2.1.2 Einschließlich eines PlayReady-Objekts in der MPD
Es gibt mehrere Situationen, in denen das PlayReady-Objekt [PRO] möglicherweise im PlayReady ContentProtection Descriptor-Element enthalten sein muss. Zum Beispiel:
Eine Präsentation, in der das Feld "pssh" von PlayReady nicht vorhanden ist
Eine Präsentation, in der der PRO im Feld "Pssh" von PlayReady gefunden wird, muss überschrieben werden.
Um PlayReady als Inhaltsschutzschema zu identifizieren und das PRO in das ContentProtection Descriptor-Element einzuschließen, empfiehlt es sich, beide cenc:pssh-Syntax gemäß [CENC] und mspr:pro-Syntax aus Gründen der Abwärtskompatibilität wie folgt zu verwenden:
<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>
Die folgende Regel MUSS befolgt werden, wenn ein PlayReady -Feld "pssh" und ein PRO im PlayReady ContentProtection Descriptor-Element eingeschlossen werden:
Wenn cenc:pssh oder mspr:pro im PlayReady ContentProtection Descriptor-Element enthalten ist:
Wenn ein PRO in einem schutzsystemspezifischem Header ('pssh') in den Medieninhalten enthalten ist, muss ein BASE64-codierter KID-Zeichenfolgenwert (ein KID-Tagwert von [PRO]) in einem PRO, das sowohl in cenc:pssh als auch in mspr:pro enthalten ist, identisch zum KID BASE64-codierten Zeichenfolgenwert in diesem PRO sein, der im 'pssh'-Feld enthalten ist.
Wenn für die Darstellung ein Initialisierungssegment vorhanden ist, das einen PlayReady-"pssh" enthält, muss ein KID base64-codierter Zeichenfolgenwert in einem PRO, der sowohl in cenc:pssh als auch in mspr:pro für diese Darstellung enthalten ist, dem KID base64-codierten Zeichenfolgenwert in diesem PRO entsprechen, der im 'pssh'-Feld des Initialisierungssegments enthalten ist. Beachten Sie, dass ein Initialisierungssegment eine Kopie des Dateiheaders einer gespeicherten Medieninhaltsdatei sein kann, die in einem HTTP-Antworttext enthalten ist, aber es kann auch dynamisch generiert und nie als Datei gespeichert werden.
Wenn der Medieninhalt ein PlayReady -Feld "pssh" mit einem PRO mit einer LAURL enthält und diese LAURL von der LAURL im PRO im ContentProtection Descriptor-Element enthalten ist, hat das ContentProtection Descriptor-Element LAURL Vorrang.
2.1.3 einschließlich Der Felder zum Nachverfolgen von Verschlüsselungsfeldern im MPD
Die allgemeine Verschlüsselung gibt den Schlüssel an, der zum Verschlüsseln der einzelnen Medienbeispiele (oder nicht verwendet) mit Schlüssel-IDs (KID) in jedem Filmsegment verwendet wird. Einige Informationen, z. B. die default_KID im Feld "Nachverfolgen der Verschlüsselung" (tenc), sind hilfreich, um in der MPD zu signalisieren, um zu bestimmen, welche Lizenz erforderlich ist.
Es können Medienpräsentationsperioden vorhanden sein, die unverschlüsselt sind, gefolgt von Perioden, die verschlüsselt sind. Mediendateien und Datenströme können verschlüsselte und unverschlüsselte Abschnitte enthalten. Darüber hinaus kann sich der Schlüsselbezeichner (KEY Identifier, KID) von Punkt zu Punkt oder von Abschnitt zu Abschnitt ändern. Wichtige Änderungen in Abschnitten eines Titels werden mithilfe von ISO Media-Beispielgruppen und Beispielgruppenbeschreibungsfeldern in jedem Filmsegment signalisiert. Weitere Informationen zu Beispielgruppen sowie Zugriff auf Initialisierungsvektoren und Untersample-Verschlüsselungsbereiche finden Sie unter [CENC] durch die Verwendung von "saio"- und "saiz"-Boxen, die auf Beispiel-Hilfsinformationen verweisen.
Die Standardeinstellungen für allgemeine Verschlüsselungsinformationen werden im Feld "Track Encryption" ('tenc') (siehe [ISOBFF] und [CENC]) codiert, das in einer Track-Box ('trak') in einem ISO-Dateiheader und im Initialisierungssegment gespeichert ist. Der Standardschlüsselbezeichner (KID) im Feld "Verschlüsselung nachverfolgen" (default_KID Feld) SOLLTE auch im ContentProtection Descriptor-Element kommuniziert werden, das dem Medienpräsentationsanpassungssatz zugeordnet ist. Der cenc:default_KID kann verwendet werden, um eine Lizenz zu identifizieren, die die Mediensegmente entschlüsseln kann, auf die durch das übergeordnete AdaptationSet-Element verwiesen wird.
Um den Standardschlüsselbezeichner (KID) in das Common Encryption ContentProtection Descriptor-Element einzuschließen, verwenden Sie das folgende Cenc:default_KID-Attribut, das in [CENC] angegeben ist:
<ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="da9b5994-600c-2ad0-f96d-f12725780978"/>
Das feld "default_KID" in "tenc" ist ein großes Endianarray von 16 Byte und wird oben definiert, das im Attribut "cenc:default_KID" im Common Encryption ContentProtection Descriptor-Element als UUID-Zeichenfolge gespeichert werden soll.
Wenn sich ein ContentProtection Descriptor-Element auf mehrere Spuren bezieht und diese unterschiedliche Standardschlüsselbezeichner in verschiedenen "tenc"-Feldern verwenden, speichert das Attribut "cenc:default_KID" eine durch Leerzeichen getrennte Liste dieser verschiedenen default_KID Werte.
Das Attribut "cenc:default_KID" kann auch im PlayReady ContentProtection Descriptor-Element enthalten sein.
Tabelle 1 unten listet die felder auf, die im ISO Media Track Encryption Box ('tenc') angegeben sind (siehe Abschnitt 9.2, [CENC]). Die Elemente unter Tabelle 1 , die im Namespace "mspr" für die erste Edition von Common Encryption definiert sind (mspr:IsEncrypted, mspr:IV_size und mspr:kid), werden jedoch veraltet und funktionell durch "cenc:default_KID" ersetzt, die in der zweiten Edition von Common Encryption [CENC] angegeben sind. Die felder IV_size und IsEncrypted in the Track Encryption Box ('tenc') werden während der Entschlüsselung verwendet, sind jedoch in MPD ContentProtection Descriptor-Elementen nicht erforderlich.
Anmerkung DER KID-Wert in mspr:kid ist eine base64-codierte kleine endische GUID-Interpretation des "tenc"-default_KID Bytearrays, das zum Speichern einer big endian UUID definiert ist. Alle Felder aus dem Feld "Verschlüsselung nachverfolgen" können in die MPD kopiert werden, aber nur default_KID ist für den Lizenzerwerb erforderlich.
Tabelle 1 – Felder des Verschlüsselungsfelds nachverfolgen
Element | Vorgabe | Beschreibung |
---|---|---|
default_IsEncrypted | 1 | Flag, das den Verschlüsselungsstatus der Beispiele in der Beispielgruppe angibt. Zulässige Werte sind 0 (nicht verschlüsselt) und 1 (verschlüsselt). |
default_IV_size | 8 | Die Größe in Byte des Felds Initialisierungsvektor (IV). - PlayReady Version 1, 2, 3 Support 0 und 8. – PlayReady Version 4 und höher unterstützen 0, 8 und 16. Wenn default_IsEncrypted =1, darf default_IV_size NICHT auf 0 festgelegt werden. Da nicht alle PlayReady-fähigen Spieler 16 Byte Initialisierungsvektoren unterstützen, wird empfohlen, dass nur ein default_IV_size von 8 für verschlüsselte Inhalte verwendet werden, wenn der Dienst PlayReady Version 1/2/3 Spieler erreichen muss. |
default_KID | Nichts | 16-Byte-Schlüsselbezeichner (128-Bit), der den schlüssel eindeutig identifiziert, der zum Entschlüsseln der zugehörigen Beispiele erforderlich ist. Der Schlüsselbezeichner wird gemäß [CENC] als UUID behandelt. Beachten Sie, dass im Gegensatz zum KID im PlayReady-Header [PRH] „tenc“ default_KID als 16-Byte-Array gespeichert wird, das big-endian-byte-geordnet ist und ein 128-Bit-Ganzzahläquivalent zu binären (Abschnitt 6.2) und Zahlendarstellungen (Abschnitt 6.3) von UUID, wie in [X.667] angegeben, enthält. |
Anmerkung: Das Format der default_KID im Feld "Track Encryption Box" unterscheidet sich vom Format des in PRO eingebetteten KID-Werts in cenc:pssh, mspr:pro und mspr:kid. Einzelheiten finden Sie in Abschnitt 2.2.5, [CENC] und [PRO].
Verwenden Sie die folgende Syntax, um PlayReady als Inhaltsschutzschema zu identifizieren und die Felder "Verschlüsselungsfeld nachverfolgen" in die MPD einzuschließen:
<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>
Die folgenden Regeln MÜSSEN befolgt werden, wenn das Attribut "cenc:default_KID" im Common Encryption ContentProtection Descriptor-Element und im Feld "Verschlüsselungsfeld nachverfolgen" im Element "PlayReady ContentProtection Descriptor" eingeschlossen wird:
Die KID-Zeichenfolge im Attribut "cenc:default_KID" im Common Encryption ContentProtection Descriptor-Element muss dem default_KID UUID im Feld "Verschlüsselung nachverfolgen" für diesen Titel entsprechen.
Der Wert "mspr:IsEncrypted", "mspr:IV_size" und/oder "mspr:kid" im PlayReady ContentProtection Descriptor-Element muss default_IsEncrypted mit den Feldern "mspr:default_IV_size" oder "default_KID" im Feld "Nachverfolgen der Verschlüsselung" für diesen Titel übereinstimmen.
Falls mspr:pro und cenc:pssh im PlayReady ContentProtection Descriptor-Element (siehe Abschnitt 2.1.2) mit den Track Encryption Box-Feldern enthalten sind:
Das in PRO eingebettete KID in mspr:pro- und cenc:pssh-Elemente entspricht dem default_KID im Feld "Track Encryption Box" dieses Titels.
Das KID im Attribut "cenc:default_KID" im Element "Common Encryption ContentProtection Descriptor" und "mspr:kid" im Element "PlayReady ContentProtection Descriptor Descriptor" entspricht dem default_KID im Feld "Verschlüsselung nachverfolgen" dieses Titels.
Anmerkung Beachten Sie, dass default_KID im Verschlüsselungsfeld als binäre oder numerische UUID interpretiert wird, die als 16-Byte-Big-Endian-Bytearray gespeichert ist. Es wird als UUID-Trennzeichenzeichenfolge in cenc:default_KID und als Base64-Zeichenfolge, die aus der GUID-Darstellung im Little-Endian-Byte-Order kodiert wurde, in PRO und mspr:kid verwendet. Alle müssen alternative Darstellungen desselben UUID sein. Siehe Abschnitt 2.2.5.
2.2 Umsetzungsempfehlungen und -anforderungen
Das PlayReady-Objekt (PRO) [PRO] KANN im codierten "Protection System Specific Header"-Feld ('pssh') [ISOBFF] des Medieninhalts, im Initialisierungssegment oder direkt im MPD selbst enthalten sein.
Ein 'pssh'-Feld kann in das Filmfeld ('moov') oder das Filmfragmentfeld ('moof') eingefügt werden. Beispielsweise kann ein Feld "pssh" in das Feld "Moov" eingefügt werden, um die Verwendung von Initialisierungssegmenten ([DASH], Abschnitt 5.3.9.5.2) zu ermöglichen. Ein Feld "pssh" kann in jedes "moof"-Feld eingefügt werden, um Blattlizenzen zu vermitteln, die von KID für die Tastendrehung indiziert werden.
Beispielgruppen- und Beispielhilfsinformationen werden in jedem Filmsegment gespeichert, das darauf verweist. Ein Beispielgruppenbeschreibungsfeld ('sgdp') muss in jedem "moof"-Feld vorhanden sein, wenn ein Beispiel-zu-Gruppenfeld ('sbgp') vorhanden ist. Beispiel-Hilfsinformations-Offsetfeld ('saio') und 'Hilfsinformationsgröße' ('saiz') müssen in jedem Filmsegment jedes Titels vorhanden sein, der ein Track Encryption Box ('tenc') mit gültigen Zeigern auf Beispiel-Hilfsinformationen enthält.
2.2.1 Allgemein
Das PlayReady ContentProtection Descriptor-Element kann mit Anpassungssätzen oder deren Darstellungen verknüpft sein, aber für nahtlose adaptive Bitratewechsel und -konformität mit DENH-Anwendungsspezifikationen muss das PlayReady ContentProtection Descriptor-Element in einem AdaptationSet-Element und nicht in Representation-Elementen enthalten sein. Dadurch wird sichergestellt, dass eine einzelne Lizenz- und Entschlüsselungskonfiguration für alle Segmente in einem Anpassungssatz verwendet werden kann.
Es wird EMPFOHLEN, den PlayReady ContentProtection-Deskriptor und ERFORDERLICH einzuschließen, um den DASH MP4 ContentProtection Descriptor mit dem Wert "cenc" in die MPD einzuschließen.
Dies ermöglicht DRMs, die "cenc" fähig sind und Lizenzerwerbsinformationen in einer Anwendung oder im MPD oder in einem 'pssh' im Initialisierungssegment haben, um zu identifizieren, dass der Inhalt "Common Encrypted" ist, die erforderliche Lizenz (mit default_KID), eine Lizenz zu erwerben und die Medien zu entschlüsseln.
Es wird empfohlen, das @value Attribut zusätzlich zur UUID in den PlayReady ContentProtection Descriptor für die menschliche Erkennung mit Name und Version "MSPR 2.0" einzuschließen. Zum Beispiel:
<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 Rangfolge des PRO-Standorts
Wenn eine Clientanwendung ein PRO im MPD findet, hat sie Vorrang vor einem PRO im Initialisierungssegment (siehe zusätzliche Anforderungen des Initialisierungssegments PRO in 2.2.3).
Wenn eine Clientanwendung einen PRO im MPD findet, hat der Rechteverwaltungsheader, der darin enthalten ist, Vorrang vor dem Rechteverwaltungsheader in einem PRO, das in einem Feld "pssh" im Feld "moov" des Medieninhalts enthalten ist.
Wenn eine Clientanwendung ein PRO im Initialisierungssegment findet, hat sie Vorrang vor einem PRO, das in einem Feld "pssh" im Feldkopf "moov" des Medieninhalts enthalten ist (siehe zusätzliche Anforderungen des Initialisierungssegments PRO in 2.2.3).
2.2.3 Wo der PRO enthalten ist
Das PRO MUSS entweder im MPD- oder Initialisierungssegment vorhanden sein. Es kann in beiden vorhanden sein. Im MPD sollte es sowohl in einem mspr:pro-Element als auch in einem cenc:pssh-Element im PlayReady Content Protection Descriptor (mspr:pro für Legacyspieler) vorhanden sein.
Ein PRO im Initialisierungssegment oder mpD KANN einen Rechteverwaltungsheader enthalten.
Unabhängig davon, ob sie ein Initialisierungssegment verwenden oder nicht, wird empfohlen, dass die MPD das richtige PRO enthält, sodass die Rechteverwaltungsheaderinformationen ohne Herunterladen des Initialisierungssegments abgerufen werden können.
2.2.4 Was in das MPD PRO enthalten ist
Der PRO kann den Rechteverwaltungsheader und/oder einen eingebetteten Lizenzspeicher (EMBEDDED License Store, ELS) enthalten.
Es wird EMPFOHLEN, dass mpD PRO den Rights Management Header enthält.
Es wird NICHT EMPFOHLEN, ein ELS einzuschließen, es sei denn, es ist als Teil einer DRM-Domäne oder eines Lizenzkettenschemas erforderlich.
2.2.5 KID-Byte-Reihenfolge
Die Schlüsselbezeichner (KEY Identifiers, KIDs) in PlayReady werden in einem Bytearray gespeichert, das als GUID (DWORD, WORD, WORD, 8-BYTE-Array) in kleiner End-Bytereihenfolge formatiert ist, die dann base64 für den Speicher als Zeichenfolge im PRO codiert ist. Sowohl PlayReady-Lizenzserver als auch PlayReady-Clients in einem PlayReady-Ökosystem erwarten, dass die KID in der PRO- und PlayReady-Lizenz eine wenig endende Bytereihenfolgendarstellung von [GUID] ist.
Das entsprechende KID kann als UUID-Zeichenfolge ([X.667] Abschnitt 6.4) oder Bytearray dargestellt werden, das eine UUID in big endian byte order binary (Abschnitt 6.2) oder Zahl (Abschnitt 6.3) enthält, wie in [X.667] angegeben. Common Encryption [CENC] und DASH verwenden diese Darstellungen im cenc:default_KID-Attribut (6,4 Zeichenfolge), Track Encryption Box ('tenc') und 'seig' Sample Group Description Box ('sgpd') (6,2 binär oder 6,3 Zahlen-Byte-Array).
Daher muss der Client nicht die Endianität des KIDs-Bytearrays konvertieren, damit er mit der PlayReady-Lizenz übereinstimmt.
Verwenden Sie den folgenden Beispielcode, damit Sie die KIDs im "cenc:default_KID"-Attribut und in den [ISOBFF]-Boxen in PlayReady KID umwandeln können.
// 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;
}
Tabelle 2 – BEISPIEL für DIE KID-Darstellung
KID-Parameter | Typ | Vertretung |
---|---|---|
KIND | UUID BE HexNummer | f81d4fae7dec11d0a76500a0c91e6bf6 Abschnitt 6.3 von [X.667] |
cenc:default_KID-Attribut | UUID Hex String mit Bindestrichen | "f81d4fae-7dec-11d0-a765-00a0c91e6bf6" Abschnitt 6.4 von [X.667] |
KINDER in ISOBFF-Feldern | UUID BE Byte-Array | Hexdarstellung ist { 0xf8, 0x1d, 0x4f, 0xae, 0x7d, 0xec, 0x11, 0xd0, 0xa7, 0x65, 0x00, 0xa0, 0xc9, 0x1e, 0x6b, 0xf6 } Abschnitt 6.2 von [X.667] |
KID in PRO | Base64-codierte Zeichenfolge von GUID-LE-Byte-Array | "rk8d+Ox90BGnZQCgyR5r9g==" (Hexdarstellung der Daten vor der Base64-Codierung ist { 0xae, 0x4f, 0x1d, 0xf8, 0xec, 0x7d, 0xd0, 0x11, 0xa7, 0x65, 0x00, 0xa0, 0xc9, 0x1e, 0x6b, 0xf6 }) |
mspr:kid | Base64-Zeichenfolge von default_KID Bytearray im Feld "tenc" | "+B1Prn3sEdCnZQCgyR5r9g==" (Hexdarstellung der Daten vor der Base64-Codierung ist { 0xf8, 0x1d, 0x4f, 0xae, 0x7d, 0xec, 0x11, 0xd0, 0xa7, 0x65, 0x00, 0xa0, 0xc9, 0x1e, 0x6b, 0xf6 }) |
KID in PlayReady-Lizenz | GUID LE-Bytearray | Hexdarstellung ist { 0xae, 0x4f, 0x1d, 0xf8, 0xec, 0x7d, 0xd0, 0x11, 0xa7, 0x65, 0x00, 0xa0, 0xc9, 0x1e, 0x6b, 0xf6 } |
3. Beispiel für eine Medienpräsentationsbeschreibung
3.1 Korrigieren von PRO im Initialisierungssegment oder Medieninhalt
Siehe Abschnitt 2.1.1 oben.
<?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 Einschließlich eines PlayReady-Objekts (PRO) in der MPD
Siehe Abschnitt 2.1.2 oben.
<?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>