Blog

Cmaf - So Geht's

Written by

Peter Chave

October 20, 2020

Peter Chave has 22 years of industry experience, having held a number of positions at Akamai, Cisco, Scientific Atlanta and Barco including: principal architect, product manager, system engineer and software developer. His background is in internet video delivery, MPEG encoding, encryption, modulation, multiplexing and ad insertion systems. Peter has worked actively with SMPTE, DVB, SCTE and CableLabs working groups, he has written articles for Broadcast Engineering and other industry publications.

 

 Peter Chave Blog

Optimieren sie ihren streamingkatalog

Jetzt besteht kein Zweifel mehr. Das Common Media Application Format (CMAF) hat sein Versprechen erfüllt: Es bietet ein Paket für alle. Zwei der wichtigsten DTC-Streamingservices (Direct-to-Consumer) haben vor Kurzem die Markteinführung geschafft. Das zeigt, dass es an der Zeit für CMAF ist.

CMAF bietet eine Reihe von Vorteilen, die es für Videoservices attraktiv machen:

  • Geringere Kosten für die Vorbereitung, Speicherung und Bereitstellung von Inhalten
  • Verbesserte Cache-Effizienz und Ursprungsentlastung
  • Verbesserte Unterstützung für Livestreaming mit niedriger Latenz

Rückblick auf 2015

Vor CMAF war der Großteil der modernen Streamingwelt in Apple HTTP Live Streaming (HLS) und MPEG DASH aufgeteilt. Wie Sie wissen, ist CMAF ein Kapselungsformat - eine Möglichkeit, die Daten für den Transport zu packen. In der Vergangenheit verließ sich HLS auf MPEG-TS-Kapselung - eine einfache Umstellung von der alten Videoinfrastruktur des Senders. HLS war dadurch jedoch mit undurchsichtigen Datenstrukturen und unnötigen Kosten verbunden, weil es weiterhin den umfassenden Störungsschutz für die Funknetzwerke verwendete, für die MPEG-TS ursprünglich entwickelt wurde. 

Die Implementierung von MPEG DASH hingegen setzte eher auf die optimierte und IP-Netzwerk-freundliche Kapselung im ISO Base Media File Format (ISOBMFF) basierend auf fragmentiertem MP4. Doch DASH bietet nicht nur Vorteile: Der flexible und offene Ansatz der Technik kann zu komplexen Integrationen zwischen Komponenten führen.

CMAF ist im Vergleich zu ISOBMFF ein evolutionärer Schritt nach vorn und fügt wichtige Strukturen und Optionen hinzu, die es mit allen aktuellen und künftigen Datentypen kompatibel machen, die Inhaltsanbieter unterstützen möchten. Die Entscheidung von Apple, die Unterstützung von CMAF durch HLS zu ermöglichen, war der Auslöser für diese Änderung und verlangte von Betreibern mehrere wichtige Entscheidungen.

CMAF ist nur ein Container, in den wir Medien und Daten einfügen. Die meisten interessanten Dinge - wie das Einfügen von Werbung - finden auf Manifest- oder Anwendungsebene statt. Hier müssen wir entscheiden, ob wir die CMAF-Segmente aus einem HLS- und/oder DASH-Manifest behandeln möchten.

Wenn Sie den nativen Player von Apple verwenden möchten - und die meisten Menschen tun das -müssen Sie ein HLS-Manifest bereitstellen. Da andere Geräte weniger strenge Anforderungen haben, hat der Betreiber in der Praxis damit nur eine Wahl: überall HLS. Aber HLS ist nicht perfekt und einige seiner Ineffizienzen haben den ein oder anderen dazu bewegt, überall (außer bei Apple) eine reine DASH-Strategie zu implementieren. 

Die Bereitstellung von gleichzeitig zwei Manifesten erhöht den betrieblichen Overhead. Dies hat jedoch keine Auswirkungen auf die Speicher- oder Bereitstellungseffizienz. Die größten Vorteile werden durch eine gemeinsame Gruppe von Datenobjekten erzielt. Die Manifeste sind relativ kleine Textdateien, die voneinander abgeleitet werden können.

Premiuminhalte 

Ein wichtiger Knackpunkt betrifft allerdings Inhaber von Premiuminnhalten. Apple unterstützt nun zwar CMAF, bleibt aber bei seinem bevorzugten Ansatz der AES128-Verschlüsselung: dem CBCS-Modus (Cipher Block Chaining Sample). Über den inkrementellen Nutzen im Vergleich zur Zählermethode (CTR) wird zwar noch viel diskutiert werden. Die bittere Wahrheit ist jedoch, dass die Menschen zwei Gruppen von Geräten verwenden, die entweder auf die eine oder die andere Methode hartcodiert sind.

Die gute Nachricht ist, dass nun, nachdem etwas Zeit vergangen ist, die Entwickler die Unterstützung von CBCS auf allen neuen Geräten implementiert haben. Zumindest ab jetzt unterstützen sie CBCS. Meine Damen und Herren, jetzt ist es so weit. 

Wenn Sie keine Premiuminnhalte haben, sind Sie jetzt bereit für die Paketierung! 

Sehen wir uns nun einige der Schlüsselfaktoren für Besitzer von Premiuminnhalten an: Smart-TVs von vor 2020 und die PlayStation 4 (PS4).

Smart-vs von vor 2020

Die beiden größten Anbieter im Smart-TV-Segment sind Samsung und LG, die laut dem Conviva-Bericht „State of Streaming" zum Q2 2020 11 % der Wiedergabezeit ausmachen.

In den letzten zwei Jahren sind die Zuschauerzahlen aufgrund des Komforts für den Endnutzer bei nativen Smart-TV-Apps explodiert. Das Absurde daran: Hierdurch haben Zuschauer von Plattformen mit CBCS-Unterstützung zu einem Flickenteppich von TV-Plattformen ohne entsprechende Unterstützung gewechselt.

Samsung und LG definieren wie andere Branchenunternehmen die Firmware des Fernsehers nach dem Jahresmodell und bieten vor allem keine Upgrades an. Bis 2019 haben sowohl Tizen (Samsung)- als auch WebOS (LG)-Versionen bis 2019 PlayReady-Versionen bis 3.x unterstützt. Erst ab PlayReady 4.0 war der CBCS-Modus in die Unterstützung integriert. Ab dem 2020er Modell werden also die beiden großen Player (75 % der Smart-TV-Zuschauerzahlen) PlayReady 4.x und damit CBCS unterstützen.

Wenn wir uns an der Vergangenheit orientieren, ist zu erwarten, dass Smart-TV-Apps nach drei Jahren keine Upgrades und keinen Support mehr erhalten und nach fünf Jahren nicht mehr verwendet werden können. Die Browser-Kerntechnologie der LG-TVs von 2017 basiert beispielsweise auf Chromium 38! Möchten Sie Webanwendungen für Chromium 38 schreiben? Ohne ECMAscript?

Ist das ein großes Problem? In nächster Zeit können ältere, weniger smarte Fernseher mit einem kostengünstigen Stick intelligenter gemacht werden. Diese Sticks wurden von Streamingdiensten mit Mindestlaufzeiten von nur drei Monaten verschenkt. Alle Sticks/Plattformen (mit Ausnahme der wirklich alten) unterstützen CBCS.

Spielekonsolen

Spielekonsolen entwickeln sich anders als Fernseher. Die PS4 unterstützt CBCS nicht - auch hier aufgrund eines älteren PlayReady-Ports. Sie ist jedoch zum jetzigen Zeitpunkt sieben Jahre alt. Im Winter wird die PS5 in den Regalen stehen. Hierzu ein Rückblick auf den PS4-Launch: Die PS4 überholte innerhalb von zwei Jahren, in denen Nutzer langsam wechselten, die PS3. Anders als beim Übergang von PS3 auf PS4 wird die PS5 ab dem ersten Tag mit PS4-Spielen abwärtskompatibel sein, sodass wir erwarten, dass sich die PS5 schneller verbreiten wird.

Wo stehen wir jetzt?

Abbildung 1 zeigt den aktuellen und prognostizierten Trend für Zielgruppen auf Geräten, die CBCS unterstützen, basierend auf der Wiedergabezeit pro Gerät. Die blaue Linie ist eine absolute Zahl und sollte als sehr konservativ betrachtet werden, da dadurch versucht wird, alle Geräte zu erfassen. Die grüne Linie ist ein aggressiveres Model, bei dem wir nur Betreiber berücksichtigen, die die beliebtesten Plattformen nutzen: die drei wichtigsten Smart-TV- und Mobilgeräte sowie die vier am häufigsten verwendeten Browser. Wie Sie sehen können, liegen wir bei diesem Modell bereits im 96. Perzentil, sodass die Änderung keine großen Probleme verursachen sollte.

Wenn Ihr Zielpublikum keine Smart-TV-Apps für Modelle vor 2020 und keine PS4 nutzt, sind Sie möglicherweise schon bereit, sofort mit CMAF/CBCS zu packen. Aber es gibt auch einige Nuancen des lokalen Marktes, die man beobachten muss. 

Zum Beispiel, wenn Sie ein Publikum mit Apple TVs der dritten Generation haben - das macht zwar nur einen sehr kleinen Prozentsatz des weltweiten Gesamtbildes aus, ist aber vielleicht für Sie ein wichtiger Punkt. Das Problem besteht hier darin, dass nur Apple TVs ab der vierten Generation tvOS 10 ausführen können und daher CMAF unterstützen. Ähnlich verhält es sich, wenn Sie ein Publikum mit individuellen Android-Tablets haben, die eine Version vor Nougat (7.1) verwenden, die noch keine CBCS-Unterstützung bietet.

Mut zum wechsel

An diesem Punkt sollten Sie wohl überzeugt sein. Aber Sie müssen den CTR-Modus möglicherweise noch ein paar Jahre lang unterstützen. Wie sollten Sie damit umgehen? Die Antwort lautet: Stellen Sie ein CBCS-Asset für alle Komponenten bereit, die es annehmen können. Im Hinblick auf die Bereitstellungsperformance gilt: Je mehr Geräte CBCS auswählen, desto höher ist die Wahrscheinlichkeit, dass sich das Objekt im Cache befindet, und desto besser die Leistung.

Mit der Zeit - während die Nutzung der CTR-Version eines Assets immer weiter abnimmt - können Sie diese einfach vom Ursprung entfernen und sie nur für CBCS-Geräte verfügbar machen. Wie sollten Sie hierbei am besten vorgehen? Im Folgenden möchte ich drei Ansätze beschreiben: Lookup, Testen und Ermitteln.

Lookup

Beim Lookup wird ein Backend-Managementprozess oder eine ähnliche Technik verwendet, die anhand der App-Version oder des UserAgent des Kunden entscheidet, ob die CBCS- oder CTR-Version an den Client gesendet wird. Wenn der Client beispielsweise Safari ist, senden Sie CBCS, bei Chrome senden Sie CTR, bei Roku CTR, bei Apple TV CBCS usw.

Der Lookup deckt den kleinsten gemeinsamen Nenner ab. Das ist die sicherste Option, führt jedoch dazu, dass eine Minderheit älterer Geräte eine ganze Klasse definiert - und diese Minderheit könnte aus einem einzigen Gerät bestehen. Mit diesem Ansatz wird die Kurve viel flacher gezogen als der tatsächliche Nutzerstamm, wodurch sich die Zeit bis zur Konvergenz verlängert und zwei Workflows und der doppelte Speicher erforderlich sind. Während der UserAgent mittlerweile für die Browserlogik unerlässlich ist, wird er in Zukunft weniger zuverlässig sein, da Apple und andere den Agent aufgrund von Fingerabdruck- und Datenschutzanliegen verschleiern.

Mit Hardwarereversionen wird dieser Prozess beschleunigt:

Beispiel: Bei LGs von vor 2020 wird CTR gesendet, bei LGs ab 2020 CBCS.

Dadurch wird eine optimale Aufteilung erreicht. Das Problem bei diesem Ansatz besteht darin, dass täglich neue Versionen hinzugefügt werden, was zu Verwaltungsaufwand führt.

Testen

Laden Sie das CBCS-Asset, aber nehmen Sie bei einem Fehler einen Catch/Fallback auf CTR vor. Es lohnt sich, diesen Schritt jedem Client als allgemeines Sicherheitsnetz hinzuzufügen. Verbinden Sie dies mit aussagekräftigem Reporting, damit Entwickler erkennen können, ob der Fehler ein echtes Problem mit dem Client oder ein Implementierungsproblem ist.

Der Vorteil dabei, den meisten Nutzern CBCS-Assets bereitzustellen, liegt darin, dass Sie schrittweise umstellen können. Wenn es Clients mit Randgruppen von Implementierungen gibt, können sie immer auf die CTR-Version zurückgreifen. Dem Pool der CBCS-Viewer werden jedoch neue Geräte hinzugefügt, ohne dass explizite Änderungen an Client- oder Backendsystemen vorgenommen werden.

Ermitteln

Ermitteln Sie Funktionen des Clients, der beim Start oder bei der Initialisierung ausgeführt wird. Bei guter Durchführung wird der Aufwand des oben beschriebenen Lookups vermieden - und wenn neue Geräte erscheinen, sucht der Client nach Features und wählt aus, welche funktionieren. Dieser Ansatz sucht eine neue Version des Betriebssystems und verursacht damit ein Problem, wo vorher keines war.

Es gibt einige Fallstricke, auf die Sie achten müssen, wenn unvollständige Ermittlungsimplementierungen vorliegen. Hier finden Sie eine einfache Webseite, die grundlegende Entschlüsselungs- und Decodierungsfunktionen prüft, wie sie von den MSE-/EME-APIs eines Browsers angezeigt werden. Die Aufrufe geben möglicherweise keine umfassenden Daten zurück, insbesondere auf älteren Plattformen. Daher lohnt es sich, umfangreich zu prüfen, wie genau die angegebenen Funktionen sind.

Zukünftiges manifest

Um einen optimalen Ansatz zu erreichen, stellen Sie sicher, dass das CBCS-Manifest eine Obermenge der DRMs darstellt, die unterstützt werden müssen. Hierzu ein Beispiel:

Der CBCS-Modus ist möglicherweise nicht die Standardauswahl für Widevine und PlayReady in Ihrem Packager. Einige zeigen die Option möglicherweise nicht an. Erkundigen Sie sich bei Ihrem Paketierungspartner, ob eine entsprechende Option verfügbar ist und stellen Sie sie idealerweise als Standard ein. 

Der weitere weg

Wenn Sie keine Verschlüsselung benötigen, sollten Sie Ihre Inhalte bereits in CMAF packen. Wenn Sie Premiuminnhalte haben, die DRM benötigen, untersuchen Sie Ihre Kundenlandschaft, um zu sehen, ob Sie die Unterstützung von CTR von jetzt an umgehen können. Wenn Sie es wirklich nicht vermeiden können, erstellen Sie Ihre CBCS-Manifeste so, dass alle DRMs einbezogen werden und fordern Sie Clients auf, zu ermitteln, ob sie CBCS wiedergeben können. Und wenn das nicht möglich ist, verwenden Sie CTR.

Lenken Sie möglichst viele Ihrer Nutzer schnellstmöglich auf Ihr zukünftiges Paketierungsformat. Damit schlagen Sie den optimalen Weg ein, um die Bereitstellungskomplexität Ihres Workflows zu reduzieren. So können Sie sich auf andere Funktionen konzentrieren, die den Mehrwert für Ihre Zielgruppe erhöhen und die Zuschauerzahlen steigern.

So wird's gemacht.



Written by

Peter Chave

October 20, 2020

Peter Chave has 22 years of industry experience, having held a number of positions at Akamai, Cisco, Scientific Atlanta and Barco including: principal architect, product manager, system engineer and software developer. His background is in internet video delivery, MPEG encoding, encryption, modulation, multiplexing and ad insertion systems. Peter has worked actively with SMPTE, DVB, SCTE and CableLabs working groups, he has written articles for Broadcast Engineering and other industry publications.