Was ist M3U8?

M3U8 ist die UTF-8-Form des Multimedia-Playlist-Formats M3U und wird häufig für HTTP-Live-Streaming-Manifeste verwendet. Seine Texteinträge können Varianten, Segmente, Schlüssel und Metadaten zu Datumsbereichen beschreiben.

Multivarianten-Playlist: Variantenstreams und Medienvarianten
Über URIs abgerufene Mediensegmente und Schlüssel
Ein HLS-Client folgt den URIs von der Multivarianten-Playlist zur Medien-Playlist jeder für die Wiedergabe ausgewählten Medienvariante, etwa für separates Video und Audio, und anschließend zu den Mediensegmenten dieser Varianten.

So funktioniert M3U8

Ein M3U8-Dokument ist eine zeilenorientierte UTF-8-Textdatei. Jede Zeile ist eine URI, ist leer oder beginnt mit #. Zeilen, die mit #EXT beginnen, sind Tags; andere Zeilen mit # sind Kommentare. Bei HLS weist eine Multivarianten-Playlist Variantenstreams und alternative Medienvarianten aus, während eine Medien-Playlist die Mediensegmente einer Medienvariante auflistet. Clients wechseln je nach Netzwerkbedingungen zwischen Varianten und laden eine Medien-Playlist regelmäßig neu, sofern diese nicht erklärt, dass sie sich nicht mehr ändern wird, wie unten beschrieben. Packager schreiben diese Playlists nach dem Encoding und der Segmentierung der Medien.

Wichtige Fakten

  1. #EXTM3U muss die erste Zeile jeder HLS-Playlist sein. Manche Tags wie #EXT-X-VERSION und #EXT-X-TARGETDURATION gelten für die gesamte Playlist, während sich Mediensegment-Tags auf nachfolgende Einträge beziehen: #EXTINF ist für jedes Mediensegment erforderlich und gilt nur für die nächste Segment-URI. Einige andere Tags gelten für alle folgenden Segmente bis zur nächsten Instanz desselben Tags. Das Verschieben, Löschen oder Einfügen von Tag- und URI-Zeilen kann daher die Bedeutung ändern, selbst wenn das Ergebnis weiterhin gültiger Text ist.
  2. Eine Playlist gehört zu einer von zwei Arten, niemals zu beiden. Eine Multivarianten-Playlist, in RFC 8216 als Master-Playlist bezeichnet, beschreibt Variantenstreams und verweist auf andere Playlists. Eine Medien-Playlist listet die Segmente einer Medienvariante in Wiedergabereihenfolge auf. RFC 8216 verlangt, dass Clients beim Parsen einer Playlist mit einem Fehler abbrechen, wenn diese Mediensegment-Tags mit Master-Playlist-Tags mischt.
  3. Relative URIs werden anhand der URI der Playlist aufgelöst, die sie enthält. Das Verschieben einer Playlist kann daher ihre Zieladressen ändern. Behalten Sie die relative Anordnung der referenzierten Dateien bei oder aktualisieren Sie die URIs. Bei der standardmäßigen URI-Auflösung übernimmt eine relative Referenz mit eigenem Pfad nicht den Query-String der Basis-URI. Ein Token oder eine Signatur im Query-String der Playlist-URL wird daher nicht auf Anfragen für Segmente, Schlüssel oder untergeordnete Playlists übertragen. Ein Verfahren mit signierten URLs muss deshalb jede referenzierte URI signieren oder diese Anfragen auf andere Weise autorisieren.
  4. Benennen Sie eine Playlist oder liefern Sie sie so aus, dass Clients sie akzeptieren. RFC 8216 verlangt, dass eine HLS-Playlist entweder an einem URI-Pfad mit der Endung .m3u8 oder .m3u oder am HTTP-Content-Type application/vnd.apple.mpegurl oder audio/mpegurl erkennbar ist. Clients sollten demnach Playlists zurückweisen, die auf keine dieser Arten identifizierbar sind. Der Text muss UTF-8 ohne Byte-Reihenfolgemarkierung verwenden. Clients sollten beim Parsen einer Playlist mit einer solchen Markierung mit einem Fehler abbrechen.

Wann M3U8 relevant ist

M3U8 ist immer dann relevant, wenn Sie HLS erzeugen, hosten oder einlesen. Wer eine Playlist erzeugt, muss Tag-Reihenfolge, Dauern und URIs korrekt angeben, damit sie gültig ist. Wer sie hostet, muss jede darin enthaltene URI erreichbar halten, unabhängig davon, von wo die Playlist ausgeliefert wird. Behandeln Sie eine Playlist aus einer nicht vertrauenswürdigen Quelle als Liste von Abrufanweisungen: RFC 8216 weist darauf hin, dass Clients Netzwerkanfragen an beliebige Ziele stellen; die URIs der Playlist geben ihnen diese Ziele vor. Der HLS-Demuxer von FFmpeg beschränkt standardmäßig, welche Dateiendungen eine Playlist referenzieren darf.

Arbeiten mit M3U8

RFC 8216 verlangt, dass Clients eine Medien-Playlist regelmäßig neu laden, sofern sie nicht #EXT-X-PLAYLIST-TYPE:VOD oder #EXT-X-PLAYLIST-TYPE:EVENT zusammen mit #EXT-X-ENDLIST deklariert. Solange einer Medien-Playlist #EXT-X-ENDLIST fehlt, muss der Server zwischen 0,5 und 1,5 Zieldauern nach der vorherigen Version eine neue Version mit mindestens einem neuen Segment veröffentlichen. Fügen Sie #EXT-X-ENDLIST hinzu, sobald das letzte Segment aufgeführt ist, und verwenden Sie #EXT-X-PLAYLIST-TYPE:VOD, um zu erklären, dass die Playlist nicht mehr geändert werden kann. Eine wachsende Playlist ändert sich unter einer festen URL, ihre Segmente dagegen nicht. Richten Sie die Cache-Planung an dieser Eigenschaft aus.

So hilft Transloadit bei M3U8

Der Robot /video/adaptive von Transloadit erzeugt M3U8-Playlist-Dateien zusammen mit den Mediensegmenten, wenn sein Parameter technique den Wert hls hat, und eine HLS-Playlist neben dem MPEG-DASH-Manifest, wenn der Wert cmaf ist.

Laut Robot-Dokumentation enthalten die Ergebnisdateien die Metadateneigenschaft relative_path. Der Speicherpfad sollte daraus gebildet werden, damit die Playlist-Dateien weiter funktionieren. Dies setzt die oben beschriebene Regel für relative URIs praktisch um. Die Dokumentation nennt außerdem die CORS-Antwortheader, die für Browser-Player zu konfigurieren sind, wenn die Browser-Player Playlists und Segmente von einem anderen Ursprung abrufen.

Entdecken Sie Transloadits Möglichkeiten für Dateiformate & Komprimierung

Quellen

Machen Sie aus Medienwissen eine funktionierende Pipeline

Verbinden Sie Uploads, Verarbeitung, KI, Storage und Auslieferung über eine deklarative API – um Encoding-Stack, Skalierung und ständig wechselnde Formate müssen Sie sich nicht selbst kümmern.

Transloadit kostenlos ausprobieren