Einführung in m3u8
M3U8 Es handelt sich um die Unicode-Version M3U, kodiert in UTF-8. Sowohl „M3U“- als auch „M3U8“-Dateien bilden die Grundlage des von Apple verwendeten HTTP Live Streaming (HLS)-Protokollformats, das auf Geräten wie iPhones und MacBooks abgespielt werden kann.
Die obige Textdefinition stammt ausWikipediaWie Sie sehen, ist die m3u8-Datei tatsächlich Teil des HTTP Live Streaming-Protokolls (abgekürzt HLS), und HLS ist ein von Apple vorgeschlagenes HTTP-basiertes Streaming-Media-Netzwerkübertragungsprotokoll.
HLS funktioniert, indem der gesamte Stream in kleine HTTP-basierte Dateien aufgeteilt und jeweils nur wenige gleichzeitig heruntergeladen werden. Während der Medienstream abgespielt wird, kann der Client dieselbe Ressource von vielen verschiedenen alternativen Quellen mit unterschiedlichen Geschwindigkeiten herunterladen, sodass sich die Streaming-Sitzung an unterschiedliche Datenraten anpassen kann. Beim Starten einer Streaming-Sitzung lädt der Client eine erweiterte M3U-Wiedergabelistendatei (m3u8) mit Metadaten zum Auffinden verfügbarer Medienstreams herunter.
HLS fordert nur grundlegende HTTP-Nachrichten an. Im Gegensatz zum Real-Time Transport Protocol (RTP) kann HLS jede Firewall oder Firewall passieren, die HTTP-Daten durchlässt.SchauspielkunstServerAuch die Nutzung von Content Delivery Networks zur Übertragung von Medienströmen ist problemlos möglich.
Kurz gesagt: HLS ist ein Streaming-Medienübertragungsprotokoll der neuen Generation. Das grundlegende Implementierungsprinzip besteht darin, eine große Mediendatei zu segmentieren, den Ressourcenpfad der segmentierten Datei in der m3u8-Datei (d. h. der Wiedergabeliste) aufzuzeichnen und dem Client einige zusätzliche Beschreibungen (z. B. die Multibandbreiteninformationen der Ressource usw.) bereitzustellen. Der Client kann die entsprechende Medienressource basierend auf der m3u8-Datei abrufen und abspielen.
Daher erhält der Client die HLS-Stream-Datei hauptsächlich durch Parsen der m3u8-Datei.
Lassen Sie uns also kurz die m3u8-Datei vorstellen.
Einführung in die M3U8-Datei
Die m3u8-Datei ist eigentlich eine Wiedergabeliste, die eine Medienwiedergabeliste oder eine Masterwiedergabeliste sein kann. Unabhängig vom Typ der Wiedergabeliste ist der darin enthaltene Text in UTF-8 kodiert.
Wenn die m3u8-Datei als Medienwiedergabeliste verwendet wird, zeichnet sie in ihren internen Informationen eine Reihe von Mediensegmentressourcen auf. Durch die sequenzielle Wiedergabe der Segmentressourcen können die Multimediaressourcen vollständig angezeigt werden. Das Format lautet wie folgt:
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXTINF:9.009,
http://media.example.com/first.ts
#EXTINF:9.009,
http://media.example.com/second.ts
#EXTINF:3.003,
http://media.example.com/third.ts
Für die On-Demand-Wiedergabe muss der Client lediglich die oben genannten Segmentressourcen der Reihe nach herunterladen und nacheinander abspielen. Für das Live-Streaming muss der Client die m3u8-Datei in regelmäßigen Abständen erneut anfordern, um festzustellen, ob neue Segmentdaten heruntergeladen und abgespielt werden müssen.
Wenn m3u8 als Master-Wiedergabeliste verwendet wird, stellt es mehrere Streamlistenressourcen (Variantenstream) derselben Medienressource bereit. Das Format ist wie folgt:
#EXTM3U
#EXT-X-STREAM-INF:BANDBREITE=150000,AUFLÖSUNG=416x234,CODECS="avc1.42e00a,mp4a.40.2"
http://example.com/low/index.m3u8
#EXT-X-STREAM-INF:BANDBREITE=240000,AUFLÖSUNG=416x234,CODECS="avc1.42e00a,mp4a.40.2"
http://example.com/lo_mid/index.m3u8
#EXT-X-STREAM-INF:BANDBREITE=440000,AUFLÖSUNG=416x234,CODECS="avc1.42e00a,mp4a.40.2"
http://example.com/hi_mid/index.m3u8
#EXT-X-STREAM-INF:BANDBREITE=640000,AUFLÖSUNG=640x360,CODECS="avc1.42e00a,mp4a.40.2"
http://example.com/high/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=64000,CODECS="mp4a.40.5"
http://example.com/audio/index.m3u8
Die Backup-Stream-Ressource gibt eine Vielzahl von Medienwiedergabelisten mit unterschiedlichen Bitraten und Formaten an und kann außerdem gleichzeitig verschiedene Versionen von Ressourceninhalten bereitstellen, z. B. Audiodateien in unterschiedlichen Sprachen, aus unterschiedlichen Winkeln aufgenommene Videodateien usw. Kunden können je nach Netzwerkbedingungen Ressourcen mit geeigneten Bitströmen auswählen und es ist am besten, geeignete Ressourceninhalte entsprechend den Benutzerpräferenzen auszuwählen.
Das Obige ist der allgemeine Inhalt der m3u8-Datei. Als Nächstes erklären wir das Inhaltsformat von m3u8.
m3u8-Dateiformat
Das m3u8-Dateiformat umfasst hauptsächlich drei Aspekte:
Definition des Datei-Playlist-Formats: Der Inhalt der Playlist (auch als m3u8-Datei bezeichnet) muss die Anforderungen der Spezifikationsdefinition strikt erfüllen. Im Folgenden sind einige der wichtigsten Bedingungen aufgeführt, die zu beachten sind:
m3u8-Dateien müssen in UTF-8 codiert sein, dürfen nicht die Byte Order Mark (BOM)-Byte-Reihenfolge verwenden und dürfen keine UTF-8-Steuerzeichen (U+0000 ~ U_001F und U+007F ~ u+009F) enthalten.
Jede Zeile der m3u8-Datei ist entweder eine URI, eine Leerzeile oder beginnt mit #ZeichenfolgeEs dürfen keine Leerzeichen vorkommen, außer in expliziten Deklarationselementen.
Die Zeichenfolge, die in der m3u8-Datei mit # beginnt, ist entweder ein Kommentar oder ein Tag. Tags beginnen mit #EXT und unterscheiden zwischen Groß- und Kleinschreibung.
Attributlisten: Die Werte bestimmter Tags sind Attributlisten. Die Attributliste nach dem Tag verwendet Kommas als Trennzeichen, um mehrere Attribut-/Wertpaare ohne Leerzeichen zu trennen.
Die Syntax eines Attribut/Wert-Paares lautet wie folgt:
Attributname=Attributwert
In:
Das Attribut AttributeName ist eine Zeichenfolge ohne Anführungszeichen, bestehend aus [A..Z], [0..9] und -. Daher kann das Attribut AttributeName nur Großbuchstaben und keine Kleinbuchstaben enthalten, und zwischen AttributeName und = darf kein Leerzeichen stehen. Ebenso darf zwischen = und AttributeValue kein Leerzeichen stehen.
Der Wert von AttributeValue kann nur einen der folgenden Typen haben:
Dezimalzahl: eine Dezimalzeichenfolge ohne Anführungszeichen, bestehend aus [0..9], im Bereich von ~ (18446744073709551615), mit einer Zeichenlänge von 1 bis 20.
Hexadezimale Sequenz: Eine Zeichenfolge ohne Anführungszeichen, bestehend aus [0..9] und [A..F], mit dem Präfix 0x oder 0X. Die maximale Länge der Sequenz hängt vom Attributnamen AttributeNames ab.
Vorzeichenbehaftete Dezimal-Gleitkommazahlen: Eine nicht in Anführungszeichen gesetzte Zeichenfolge, bestehend aus [0..9], - und .
Zeichenfolge (Quoted-String): Eine Zeichenfolge in doppelten Anführungszeichen. 0xA, 0xD und doppelte Anführungszeichen ( ") dürfen nicht in der Zeichenfolge vorkommen. Die Zeichenfolge unterscheidet zwischen Groß- und Kleinschreibung.
Aufzählungszeichenfolge: Eine Reihe von Zeichenfolgen ohne Anführungszeichen, definiert durch AttributeName. Die Zeichenfolge darf keine doppelten Anführungszeichen, Kommas und Leerzeichen enthalten.
Dezimalauflösung: zwei Dezimalzahlen, getrennt durch das Zeichen x. Die erste Zahl stellt die horizontale Breite dar, die zweite die vertikale Höhe (Einheit: Pixel).
Tags: Tags werden verwendet, um die globalen Parameter der m3u8-Datei oder einige Informationen der folgenden Slice-Datei/Medienwiedergabeliste anzugeben.
Es gibt fünf Arten von Tags: Basis-Tags, Mediensegment-Tags, Medien-Playlist-Tags, Master-Playlist-Tags und Playlist-Tags. Die spezifischen Inhalte sind wie folgt:
Basis-Tags: Gilt sowohl für die Medien-Playlist als auch für die Master-Playlist. Die spezifischen Tags lauten wie folgt:
EXTM3U: Gibt an, dass es sich bei der Datei um eine m3u8-Datei handelt. Jede M3U-Datei muss dieses Tag in der ersten Zeile platzieren.
EXT-X-VERSION: Gibt die Protokollversionsnummer von HLS an. Dieses Tag bezieht sich auf die Kompatibilität von Streaming-Medien. Es ist global gültig und aktiviert die gesamte m3u8-Datei. Pro m3u8-Datei kann maximal eine Definition dieses Tags vorkommen. Enthält die m3u8-Datei dieses Tag nicht, wird standardmäßig die erste Version des Protokolls verwendet.
Mediensegment-Tags: Jedem Segment-URI geht eine Reihe beschreibender Mediensegment-Tags voraus. Manche Segment-Tags gelten nur für die folgenden Segmentressourcen; andere für alle nachfolgenden Segmente, bis ein weiteres solches Tag gefunden wird. Mediensegment-Tags können nicht in der Master-Playlist erscheinen. Die spezifischen Tags lauten wie folgt:
EXTINF: Gibt die Dauer (in Sekunden) des durch die folgende URL angegebenen Mediensegments an. Dieses Tag muss vor jedem URL-Mediensegment angegeben werden. Das Format dieses Tags lautet:
#EXTINF:,[]<br>
In:</p>
<p>Dauer: kann eine Dezimalzahl oder ein Gleitkommatyp sein und sein Wert muss kleiner oder gleich dem durch EXT-X-TARGETDURATION angegebenen Wert sein.<br>
Hinweis: Es wird empfohlen, für die Angabe von Dauern immer Gleitkommawerte zu verwenden. Dadurch können Clients Rundungsfehler bei der Positionierung von Streams reduzieren. Wenn die kompatible Versionsnummer EXT-X-VERSION jedoch kleiner als 3 ist, müssen ganzzahlige Werte verwendet werden.<br>
EXT-X-BYTERANGE: Dieses Tag gibt an, dass die nächste Slice-Ressource ein lokaler Bereich der durch die nachfolgende URI angegebenen Mediensegmentressource ist (d. h. der Inhalt der URI-Medienressource wird als nächster Slice abgefangen). Dieses Tag funktioniert nur für die nächste URI. Sein Format ist:</p>
<p>#EXT-X-BYTERANGE:<n>[@<o>]<br>
In:</p>
<p>n ist eine Dezimalzahl, die die Größe des abgefangenen Segments (in Bytes) angibt.<br>
Der optionale Parameter o ist ebenfalls eine Dezimalzahl, die die Startposition des Abfangens angibt (ausgedrückt in Bytes, das Abfangen wird durchgeführt, nachdem die Byteposition vom Anfang der durch die URI angegebenen Ressource verschoben wurde).<br>
Wenn o nicht angegeben ist, ist die Startposition der Interception das nächste Byte der vorherigen Tag-Interception (also das vorherige n+o+1).<br>
Wenn dieses Tag nicht angegeben ist, umfasst der Segmentierungsumfang das gesamte URI-Ressourcenfragment.<br>
Hinweis: Für die Verwendung des Tags EXT-X-BYTERANGE muss die kompatible Versionsnummer EXT-X-VERSION größer oder gleich 4 sein.<br>
EXT-X-DISCONTINUITY: Dieses Tag zeigt an, dass zwischen dem vorherigen und dem nächsten Slice eine Diskontinuität besteht. Das Format lautet:</p>
<p>#EXT-X-DISCONTINUITY<br>
Dieses Tag muss verwendet werden, wenn sich eine der folgenden Bedingungen ändert:</p>
<p>Dateiformat<br>
Anzahl, Art, Kennungen der Titel<br>
Zeitstempelsequenz<br>
Dieses Tag sollte verwendet werden, wenn sich eine der folgenden Bedingungen ändert:</p>
<p>Kodierungsparameter<br>
Codierungssequenz<br>
Hinweis: Ein klassisches Anwendungsszenario von EXT-X-DISCONTINUITY ist das Einfügen von Werbung in den Videostream. Da der Videostream und der Werbevideostream nicht dieselbe Ressource sind, wird EXT-X-DISCONTINUITY verwendet, um anzuzeigen, wann zwischen den beiden Streams umgeschaltet wird. Sobald der Client dieses Tag sieht, behebt er das Problem der Umschaltunterbrechung und sorgt so für ein besseres Erlebnis.<br>
Weitere Einzelheiten finden Sie unter: Anzeigen in eine Playlist integrieren</p>
<p>EXT-X-KEY: Das Mediensegment kann verschlüsselt werden und dieses Tag kann die Entschlüsselungsmethode angeben.<br>
Dieses Tag ist für alle Mediensegmente und alle Medieninitialisierungsblöcke (Media Initialization Section) um sie herum wirksam, die durch das Tag EXT-X-MAP deklariert sind, bis das nächste EXT-X-KEY gefunden wird (wenn die m3u8-Datei nur ein EXT-X-KEY-Tag hat, ist es für alle Mediensegmente wirksam).<br>
Mehrere EXT-X-KEY-Tags können auf dasselbe Mediensegment angewendet werden, wenn sie alle denselben Schlüssel generieren.<br>
Das Format dieses Tags ist:</p>
<p>#EXT-X-KEY:<attribute-list><br>
Die Eigenschaftenliste kann die folgenden Schlüssel enthalten:</p>
<p>METHODE: Dieser Wert ist eine aufzählbare Zeichenfolge, die die Verschlüsselungsmethode angibt.<br>
Dieser Schlüssel ist ein erforderlicher Parameter. Sein Wert kann NONE, AES-128 oder SAMPLE-AES sein.<br>
In:<br>
KEINE: zeigt an, dass der Slice nicht verschlüsselt ist (andere Attribute können zu diesem Zeitpunkt nicht angezeigt werden);<br>
AES-128: Gibt an, dass AES-128 zur Verschlüsselung verwendet wird.<br>
SAMPLE-AES: Das Mediensegment enthält Beispielmedien wie Audio oder Video, die mit AES-128 verschlüsselt sind. In diesem Fall kann das IV-Attribut vorhanden sein, muss aber nicht.</p>
<p>URI: Gibt den Schlüsselpfad an.<br>
Der Schlüssel besteht aus 16 Byte Daten.<br>
Dieser Schlüssel ist ein erforderlicher Parameter, sofern METHOD nicht NONE ist.</p>
<p>IV: Dieser Wert ist ein 128-Bit-Hexadezimalwert.<br>
AES-128 erfordert für Ver- und Entschlüsselung denselben 16-Byte-IV-Wert. Die Verwendung unterschiedlicher IV-Werte kann die Stärke der Verschlüsselung erhöhen.<br>
Wenn IV in der Attributliste erscheint, verwenden Sie diesen Wert. Wenn nicht, verwenden Sie standardmäßig die Sequenznummer des Mediensegments (d. h. EXT-X-MEDIA-SEQUENCE) als IV-Wert. Verwenden Sie dabei die Big-Endian-Bytereihenfolge und füllen Sie links mit 0 auf, bis die Sequenznummer 16 Bytes (128 Bits) erreicht.</p>
<p>KEYFORMAT: Eine in Anführungszeichen eingeschlossene Zeichenfolge, die angibt, wie der Schlüssel in der Schlüsseldatei gespeichert ist (der AES-128-Schlüssel in der Schlüsseldatei ist ein 16-Byte-Schlüssel, der im Binärformat gespeichert ist).<br>
Dieses Attribut ist optional und sein Standardwert ist „identity“.<br>
Die Verwendung dieses Attributs erfordert, dass die kompatible Versionsnummer EXT-X-VERSION größer oder gleich 5 ist.</p>
<p>KEYFORMATVERSIONS: Eine in Anführungszeichen gesetzte Zeichenfolge, die aus einem oder mehreren positiven Ganzzahlwerten besteht, die durch / getrennt sind (zum Beispiel: „1“, „1/2“, „1/2/5“).<br>
Wenn eine oder mehrere bestimmte KEYFORMT-Versionen definiert sind, kann dieses Attribut verwendet werden, um anzugeben, für welche bestimmte Version kompiliert werden soll.<br>
Dieses Attribut ist optional und sein Standardwert ist „1“.<br>
Die Verwendung dieses Attributs erfordert, dass die kompatible Versionsnummer EXT-X-VERSION größer oder gleich 5 ist.</p>
<p>EXT-X-MAP: Dieses Tag gibt die Methode zum Abrufen des Abschnitts zur Medieninitialisierung an.<br>
Dieses Tag ist für alle nachfolgenden Mediensegmente wirksam, bis ein weiteres EXT-X-MAP-Tag gefunden wird.<br>
Das Format ist:</p>
<p>#EXT-X-MAP:<attribute-list><br>
Der Wertebereich seiner Attributliste ist wie folgt:</p>
<p>URI: Eine in Anführungszeichen eingeschlossene Zeichenfolge, die den Pfad zur Ressource angibt, die den Medieninitialisierungsblock enthält. Dieses Attribut ist ein erforderlicher Parameter.</p>
<p>BYTERANGE: Eine in Anführungszeichen gesetzte Zeichenfolge, die den Speicherort (das Fragment) des Medieninitialisierungsblocks innerhalb der durch die URI angegebenen Ressource angibt.<br>
Der durch dieses Attribut angegebene Bereich sollte nur Medieninitialisierungsblöcke enthalten.<br>
Dieses Attribut ist ein optionaler Parameter. Wenn es nicht angegeben ist, bedeutet dies, dass die durch die URI angegebene Ressource der gesamte Medieninitialisierungsblock ist.</p>
<p>EXT-X-PROGRAM-DATE-TIME: Dieses Tag verwendet ein absolutes Datum/eine absolute Uhrzeit, um anzugeben, wann das erste Beispielsegment abgetastet wurde.<br>
Das Format ist:</p>
<p>#EXT-X-PROGRAMM-DATUM-ZEIT:<date-time-msec><br>
Unter ihnen ist date-time-msec ein <a href="https://uzbox.com/de/etikett/iso" class="st_tag internal_tag" rel="tag" title="iso">ISO</a>/Das in IEC 8601:2004 festgelegte Datumsformat lautet wie folgt: JJJJ-MM-TThh:mm:ss.SSSZ.</p>
<p>EXT-X-DATERANGE: Dieses Tag definiert einen Datumsbereich, der aus einer Reihe von Attribut-/Wertpaaren besteht.<br>
Das Format ist:</p>
<p>#EXT-X-DATERANGE:<attribute-list><br>
Die Werte der Attributliste lauten wie folgt:</p>
<p>ID: Eine eindeutige Kennung in Anführungszeichen, die den Datumsbereich angibt.<br>
Dieses Attribut ist ein erforderlicher Parameter.</p>
<p>KLASSE: Eine Reihe von Attributen und entsprechenden semantischen Werten, die vom Kunden definiert und in Anführungszeichen eingeschlossen sind.<br>
Alle Datumsbereiche mit demselben CLASS-Attribut müssen der entsprechenden Semantik entsprechen.<br>
Dieses Attribut ist optional.</p>
<p>STARTDATE: Der Startwert des Datumsbereichs in Anführungszeichen.<br>
Dieses Attribut ist ein erforderlicher Parameter.</p>
<p>ENDDATE: Der Endwert des Datumsbereichs in Anführungszeichen.<br>
Dieser Attributwert muss größer oder gleich START-DATE sein.<br>
Dieses Attribut ist optional.</p>
<p>DAUER: Die Dauer des Datumsbereichs ist ein dezimaler Gleitkommawert (Einheit: Sekunden).<br>
Dieser Eigenschaftswert darf nicht negativ sein.<br>
Wenn Sie die unmittelbare Zeit angeben, setzen Sie den Eigenschaftswert einfach auf 0.<br>
Dieses Attribut ist optional.</p>
<p>GEPLANTE DAUER: Dieses Attribut gibt die voraussichtliche Dauer des Datumsbereichs an.<br>
Sein Wert ist ein dezimaler Gleitkommawerttyp (Einheit: Sekunden).<br>
Dieser Eigenschaftswert darf nicht negativ sein.<br>
Wenn die tatsächliche Dauer nicht im Voraus bekannt ist, kann diese Eigenschaft als Schätzung der voraussichtlichen Dauer des Datumsbereichs verwendet werden.<br>
Dieses Attribut ist optional.</p>
<p>X-<client-attribute>: Das Präfix X- ist ein Namespace, der für clientdefinierte Eigenschaften reserviert ist.<br>
Wenn der Client den Attributnamen anpasst, wird der umgekehrte <a href="https://uzbox.com/de/etikett/dns" class="st_tag internal_tag" rel="tag" title="DNS">DNS</a>(Reverse-DNS)-Syntax, um Konflikte zu vermeiden.<br>
Der benutzerdefinierte Attributwert muss eine in Anführungszeichen eingeschlossene Zeichenfolge, eine hexadezimale Folge oder eine dezimale Gleitkommazahl sein, zum Beispiel: X-COM-EXAMPLE-AD-ID="XYZ123".<br>
Dieses Attribut ist optional.</p>
<p>SCTE35-CMD, SCTE35-OUT, SCTE35-IN: werden zum Übertragen von SCTE35-Daten verwendet.<br>
Dieses Attribut ist optional.</p>
<p>END-ON-NEXT: Dieser Attributwert ist eine aufzählbare Zeichenfolge und sein Wert muss JA sein.<br>
Dieses Attribut gibt an, dass das Ende des Bereichs erreicht ist, d. h., es entspricht der Startposition START-DATE des nachfolgenden Bereichs. Der nachfolgende Bereich bezieht sich auf den Datumsbereich mit dem frühesten START-DATE-Wert nach dem START-DATE des Tags mit derselben KLASSE.<br>
Dieses Attribut ist optional.</p>
<p>Tag des Medienwiedergabelistentyps: Der Tag der Medienwiedergabeliste ist die globale Parameterinformation der m3u8-Datei.<br>
Diese Tags können in einer m3u8-Datei höchstens einmal vorkommen.<br>
Das Tag „Media Playlist“ kann nicht in einer Master-Playlist erscheinen.<br>
Die spezifischen Tags der Medienwiedergabeliste lauten wie folgt:</p>
<p>EXT-X-TARGETDURATION: gibt die maximale Dauer jedes Videosegments (in Sekunden) an.<br>
Dieses Tag ist erforderlich.<br>
Das Format ist:</p>
<p>#EXT-X-TARGETDURATION:<s><br>
Dabei gilt: Der Parameter s stellt die Zieldauer dar (Einheit: Sekunden).</p>
<p>EXT-X-MEDIA-SEQUENCE: Gibt die Sequenznummer der ersten URL-Fragmentdatei in der Wiedergabeliste an.<br>
Jede Mediensegment-URL hat eine eindeutige ganzzahlige Sequenznummer.<br>
Die Sequenznummer jedes Mediensegments wird in der Reihenfolge seines Auftretens um 1 erhöht.<br>
Wenn dieses Tag nicht angegeben ist, beginnt die Standardsequenznummerierung bei 0.<br>
Die Sequenznummer des Mediensegments hat keine Beziehung zum Segmentdateinamen.<br>
Das Format ist:</p>
<p>#EXT-X-MEDIA-SEQUENZ:<number><br>
Darunter: Die Parameternummer ist die Slice-Sequenznummer.</p>
<p>EXT-X-DISCONTINUITY-SEQUENCE: Dieses Tag ermöglicht die Synchronisierung verschiedener Wiedergabeversionen desselben Streams und verschiedener Backup-Streams mit dem Tag EXT-X-DISCONTINUITY.<br>
Das Format ist:</p>
<p>#EXT-X-DISCONTINUITY-SEQUENCE:<number><br>
Darunter: Die Parameternummer ist ein dezimaler ganzzahliger Wert.<br>
Wenn die Playlist das Tag EXT-X-DISCONTINUITY-SEQUENCE nicht festlegt, SOLLTE die Interrupt-Sequenznummer für das erste Segment 0 sein.</p>
<p>EXT-X-ENDLIST: Zeigt das Ende der m3u8-Datei an.<br>
Dieses Tag kann an einer beliebigen Stelle in der m3u8-Datei erscheinen, normalerweise am Ende.<br>
Das Format ist:</p>
<p>#EXT-X-ENDLIST<br>
EXT-X-PLAYLIST-TYPE: Gibt den Streaming-Medientyp an. Die Gültigkeit ist global.<br>
Dieses Tag ist optional.<br>
Das Format ist:</p>
<p>#EXT-X-PLAYLIST-TYP:<type-enum><br>
Darunter sind die optionalen Werte von type-enum wie folgt:</p>
<p>VOD: Video on Demand, was bedeutet, dass der Videostream eine Video-on-Demand-Quelle ist, sodass der Server die m3u8-Datei nicht ändern kann;</p>
<p>EREIGNIS: Zeigt an, dass der Videostream<a href="https://uzbox.com/de/etikett/zhiboyuan" class="st_tag internal_tag" rel="tag" title="Live-Quelle">Live-Quelle</a>, sodass der Server keinen Teil der Datei ändern oder löschen kann (er kann jedoch am Ende der Datei neuen Inhalt hinzufügen).<br>
Hinweis: VOD-Dateien verfügen in der Regel über ein EXT-X-ENDLIST-Tag, da sie On-Demand-Quellen sind und sich nicht ändern. EVEVT-Dateien hingegen verfügen bei der Initialisierung in der Regel nicht über ein EXT-X-ENDLIST-Tag, was bedeutet, dass neue Dateien am Ende der Wiedergabeliste hinzugefügt werden. Daher muss der Client regelmäßig die m3u8-Datei abrufen, um neue Mediensegmentressourcen zu erhalten, bis auf das EXT-X-ENDLIST-Tag zugegriffen wird.</p>
<p>EXT-XI-FRAMES-ONLY: Dieses Tag gibt an, dass jedes Mediensegment ein I-Frame ist. Die Videokodierung von I-Frames hängt nicht von der Anzahl anderer Frames ab, sodass I-Frames für schnelle Wiedergabe, schnelles Umblättern usw. verwendet werden können.<br>
Dieses Tag ist weltweit gültig.<br>
Das Format ist:</p>
<p>#EXT-XI-FRAMES-ONLY<br>
Wenn die Wiedergabeliste auf EXT-XI-FRAMES-ONLY eingestellt ist, entspricht die Dauer des Slices (der Wert des EXTINF-Tags) der Dauer vom Beginn des aktuellen Slice-I-Frames bis zum Erscheinen des nächsten I-Frames.<br>
Wenn die Medienressource I-Frame-Slices enthält, muss ein Medieninitialisierungsblock bereitgestellt werden oder der Zugriff auf den Medieninitialisierungsblock muss über das EXT-X-MAP-Tag bereitgestellt werden, damit der Client diese I-Frame-Slices in beliebiger Reihenfolge laden und dekodieren kann.<br>
Wenn für den I-Frame-Slice EXT-BYTE_RANGE festgelegt ist, DARF KEIN Medieninitialisierungsblock bereitgestellt werden.<br>
Die Verwendung von EXT-XI-FRAMES-ONLY erfordert eine kompatible Versionsnummer EXT-X-VERSION größer oder gleich 4.</p>
<p>Tag des Master-Playlist-Typs: Die Master-Playlist definiert Backup-Streams, mehrsprachige Übersetzungs-Streams und andere globale Parameter.<br>
Das Master-Playlist-Tag DARF NICHT in einer Medien-Playlist erscheinen.<br>
Die spezifischen Tags lauten wie folgt:</p>
<p>EXT-X-MEDIA: Wird verwendet, um alternative Ressourcen für mehrsprachige Übersetzungswiedergabemedienlisten für denselben Inhalt anzugeben.<br>
Beispielsweise können drei EXT-X-MEIDA-Tags verwendet werden, um Audioressourcen mit demselben Inhalt auf Englisch, Französisch und Spanisch bereitzustellen, oder zwei EXT-X-MEDIA-Tags können verwendet werden, um Videoressourcen mit zwei verschiedenen Aufnahmewinkeln bereitzustellen.<br>
Das Format ist:</p>
<p>#EXT-X-MEDIA:<attribute-list><br>
Der Wertebereich der Attributliste ist wie folgt:</p>
<p>TYP: Der Attributwert ist eine aufzählbare Zeichenfolge.<br>
Es gibt vier Werte: AUDIO, VIDEO, UNTERTITEL und UNTERTITEL.<br>
Normalerweise werden Untertitel verwendet.<br>
Dieses Attribut ist ein erforderlicher Parameter.</p>
<p>URI: Der in doppelte Anführungszeichen eingeschlossene Pfad der Wiedergabeliste der Medienressource.<br>
Wenn der TYPE-Attributwert CLOSED-CATIONS lautet, darf keine URI angegeben werden.<br>
Dieses Attribut ist optional.</p>
<p>GROUP-ID: Eine in Anführungszeichen eingeschlossene Zeichenfolge, die die Gruppe angibt, zu der der mehrsprachige Übersetzungsfluss gehört.<br>
Dieses Attribut ist ein erforderlicher Parameter.</p>
<p>SPRACHE: Eine in Anführungszeichen gesetzte Zeichenfolge, die die vom Stream verwendete Sprache angibt.<br>
Dieses Attribut ist optional.</p>
<p>ASSOC-LANGUAGE: Eine Zeichenfolge in doppelten Anführungszeichen, die ein Sprach-Tag enthält, das eine der Sprachversionen eines mehrsprachigen Streams bereitstellt.<br>
Dieser Parameter ist optional.</p>
<p>NAME: Eine Zeichenfolge in doppelten Anführungszeichen, die eine für Menschen lesbare Beschreibung des Übersetzungsdatenstroms bereitstellt.<br>
Wenn das LANGUAGE-Attribut festgelegt ist, sollte auch das NAME-Attribut festgelegt werden.<br>
Dieses Attribut ist ein erforderlicher Parameter.</p>
<p>STANDARD: Der Eigenschaftswert ist eine aufzählbare Zeichenfolge.<br>
Mögliche Werte sind JA und NEIN.<br>
Der Standardwert, wenn dieses Attribut nicht angegeben ist, ist NEIN.<br>
Wenn diese Eigenschaft auf „JA“ gesetzt ist, SOLLTE der Client den übersetzten Stream abspielen, sofern keine anderen optionalen Informationen vorliegen.<br>
Dieses Attribut ist optional.</p>
<p>AUTOSELECT: Der Eigenschaftswert ist eine aufzählbare Zeichenfolge.<br>
Gültige Werte sind JA oder NEIN.<br>
Wenn nicht angegeben, ist die Standardeinstellung NEIN.<br>
Wenn diese Eigenschaft auf „JA“ gesetzt ist, kann der Client den Übersetzungsstream auch dann wiedergeben, wenn der Benutzer dies nicht ausdrücklich festlegt, da er die aktuelle Wiedergabeumgebung, beispielsweise die Auswahl der Systemsprache, konfigurieren kann.<br>
Wenn diese Eigenschaft festgelegt ist, muss sie auch auf JA gesetzt werden, wenn DEFAULT auf JA gesetzt ist.<br>
Dieses Attribut ist optional.</p>
<p>FORCED: Der Attributwert ist eine aufzählbare Zeichenfolge.<br>
Gültige Werte sind JA oder NEIN.<br>
Wenn nicht angegeben, ist die Standardeinstellung NEIN.<br>
Diese Eigenschaft kann nur festgelegt werden, wenn TYPE auf SUBTITLES eingestellt ist.<br>
Wenn diese Eigenschaft auf „Ja“ gesetzt ist, bedeutet dies, dass der Übersetzungsstream wichtige Inhalte enthält. Wenn diese Eigenschaft gesetzt ist, sollte der Client den Übersetzungsstream abspielen, der am besten zur aktuellen Wiedergabeumgebung passt.<br>
Wenn dieses Attribut auf „NEIN“ gesetzt ist, bedeutet dies, dass der Inhalt des Übersetzungsstreams zum Antworten auf Anzeigeanforderungen von Benutzern verwendet werden soll.<br>
Dieses Attribut ist optional.</p>
<p>INSTREAM-ID: Eine in Anführungszeichen eingeschlossene Zeichenfolge, die die Sprachversion (Wiedergabeversion) des Slice angibt.<br>
Dieses Attribut muss festgelegt werden, wenn TYPE auf CLOSED-CAPTIONS eingestellt ist.<br>
Die verfügbaren Werte sind: „CC1“, „CC2“, „CC3“, „CC4“ und „SERVICEn“ (der Wert von n ist 1–63).<br>
Für andere TYPE-Werte darf diese Eigenschaft nicht festgelegt werden.</p>
<p>MERKMALE: Eine Zeichenfolge, die aus einer oder mehreren durch Kommas getrennten UTIs besteht, die in Anführungszeichen eingeschlossen sind.<br>
Jede UTI stellt ein Merkmal eines Übersetzungsflusses dar.<br>
Dieses Attribut kann private Harnwegsinfektionen enthalten.<br>
Dieses Attribut ist optional.</p>
<p>KANÄLE: Eine Zeichenfolge, die aus einer geordneten Liste von Argumenten besteht, die durch Backslash / getrennt und in doppelte Anführungszeichen eingeschlossen sind.<br>
Bei allen Audio-EXT-X-MEDIA-Tags sollte das Attribut CHANNELS festgelegt sein.<br>
Wenn die Master-Wiedergabeliste zwei Übersetzungsströme mit derselben Kodierung, aber unterschiedlicher Kanalanzahl enthält, muss das Attribut CHANNELS festgelegt werden. Andernfalls ist das Attribut CHANNELS ein optionaler Parameter.</p>
<p>EXT-X-STREAM-INF: Dieses Attribut gibt eine Sicherungsquelle an. Der Attributwert liefert Informationen zur Sicherungsquelle.<br>
Das Format ist:</p>
<p>#EXT-X-STREAM-INF:<attribute-list><br>
<uri><br>
In:</p>
<p>Die durch die URI angegebene Medienwiedergabeliste enthält die durch dieses Tag angegebene Sicherungsquelle für die Übersetzung.<br>
URI ist ein erforderlicher Parameter.</p>
<p>Die Attributliste der Tag-Parameter EXT-X-STREAM-INF verfügt über die folgenden Optionen:</p>
<p>BANDBREITE: Dieses Attribut gibt die Anzahl der pro Sekunde übertragenen Bits an, auch Bandbreite genannt. Es stellt die Spitzenrate des Backup-Streams dar.<br>
Dieses Attribut ist ein erforderlicher Parameter.</p>
<p>DURCHSCHNITTLICHE BANDBREITE: Dieses Attribut ist die durchschnittliche Slice-Übertragungsrate des Backup-Streams.<br>
Dieses Attribut ist optional.</p>
<p>CODECS: Eine in Anführungszeichen gesetzte Zeichenfolge, die eine durch Kommas getrennte Liste von Formaten enthält.<br>
Jedes EXT-X-STREAM-INF-Tag SOLLTE ein CODECS-Attribut tragen.</p>
<p>AUFLÖSUNG: Dieses Attribut beschreibt die optimale Pixelauflösung der Backup-Stream-Videoquelle.<br>
Dieses Attribut ist ein optionaler Parameter, es wird jedoch empfohlen, diese Attributeinstellung für den Backup-Stream hinzuzufügen, der die Videoquelle enthält.</p>
<p>FRAME-RATE: Dieses Attribut verwendet einen dezimalen Gleitkommawert, um die maximale Bildrate aller Videos im Backup-Stream zu beschreiben.<br>
Für jede Videoquelle im Backup-Stream, deren Bildrate 30 Bilder pro Sekunde überschreitet, sollte diese Eigenschafteneinstellung erhöht werden.<br>
Dieses Attribut ist ein optionaler Parameter, es wird jedoch empfohlen, diese Attributeinstellung für den Backup-Stream hinzuzufügen, der die Videoquelle enthält.</p>
<p>HDCP-LEVEL: Dieser Attributwert ist eine aufzählbare Zeichenfolge.<br>
Gültige Werte sind TYPE-0 oder NONE.<br>
Der Wert TYPE-0 gibt an, dass die Wiedergabe des Backup-Streams möglicherweise fehlschlägt, sofern die Ausgabe nicht durch High-bandwidth Digital Content Protection (HDCP) geschützt ist.<br>
Der Wert NONE gibt an, dass für den Stream-Inhalt kein Kopierschutz für die Ausgabe erforderlich ist.<br>
Für Backup-Streams mit unterschiedlichen HDCP-Verschlüsselungsstufen sollten unterschiedliche Medienverschlüsselungsschlüssel verwendet werden.<br>
Dieses Attribut ist optional und sollte in Fällen bereitgestellt werden, in denen die Wiedergabe aufgrund fehlenden HDCP fehlschlagen könnte.</p>
<p>AUDIO: Der Attributwert ist in doppelte Anführungszeichen eingeschlossen und muss mit dem GROUP-ID-Attributwert eines EXT-X-MEDIA-Tags übereinstimmen, wobei das TYPE-Attribut auf AUDIO gesetzt ist und irgendwo in der Hauptwiedergabeliste definiert ist.<br>
Dieses Attribut ist optional.</p>
<p>VIDEO: Der Attributwert ist in doppelte Anführungszeichen eingeschlossen und muss mit dem GROUP-ID-Attributwert eines EXT-X-MEDIA-Tags übereinstimmen, wobei das TYPE-Attribut auf VIDEO gesetzt ist und irgendwo in der Hauptwiedergabeliste definiert ist.<br>
Dieses Attribut ist optional.</p>
<p>UNTERTITEL: Der Attributwert ist in doppelte Anführungszeichen eingeschlossen und muss mit dem Attributwert GROUP-ID eines EXT-X-MEDIA-Tags übereinstimmen, wobei das Attribut TYPE auf „UNTERTITEL“ gesetzt ist und irgendwo in der Hauptwiedergabeliste definiert ist.<br>
Dieses Attribut ist optional.</p>
<p>CLOSED-CAPTIONS: Dieser Attributwert kann eine Zeichenfolge in doppelten Anführungszeichen oder KEINE sein.<br>
Wenn der Wert eine Zeichenfolge ist, muss er mit dem Wert des GROUP-ID-Attributs eines EXT-X-MEDIA-Tags übereinstimmen, wobei das TYPE-Attribut auf CLOSED-CAPTIONS gesetzt ist und irgendwo in der Master-Wiedergabeliste definiert ist.<br>
Wenn der Wert NONE ist, müssen alle ext-x-stream-inf-Tags dieses Attribut ebenfalls auf NONE setzen. Dies bedeutet, dass keiner der Backup-Streams in der Hauptwiedergabeliste einen geschlossenen Titel hat. Wenn ein Backup-Stream einen geschlossenen Titel hat, hat der andere Backup-Stream möglicherweise keinen geschlossenen Titel, was zu einer Unterbrechung der Wiedergabe führen kann.<br>
Dieses Attribut ist optional.</p>
<p>EXT-XI-FRAME-STREAM-INF: Dieses Tag gibt an, dass die Medienwiedergabelistendatei I-Frame-Frames mehrerer Medienressourcen enthält.<br>
Das Format ist:</p>
<p>#EXT-XI-FRAME-STREAM-INF:<attribute-list><br>
Die Attributliste dieses Tags enthält die gleichen Optionen wie das Tag EXT-XI-FRAME-STREAM-INF, mit Ausnahme von FRAME-RATE, AUDIO, SUBTITLES und CLOSED-CAPTIONS. Darüber hinaus gibt es weitere Attribute:</p>
<p>URI: Dieser Attributwert ist eine in Anführungszeichen eingeschlossene Zeichenfolge, die den Pfad der I-Frame-Medienwiedergabelistendatei angibt. Die Medienwiedergabelistendatei muss das Tag „EXT-XI-FRAMES-ONLY“ enthalten.<br>
EXT-X-SESSION-DATA: Mit diesem Tag kann die Hauptwiedergabeliste beliebige Sitzungsdaten enthalten.<br>
Dieses Tag ist optional.<br>
Das Format ist:</p>
<p>#EXT-X-SESSION-DATA:<attribute-list><br>
Darunter sind die Wertoptionen für die Parameterattributliste wie folgt:</p>
<p>DATA-ID: Eine in Anführungszeichen eingeschlossene Zeichenfolge, die einen bestimmten Datenwert darstellt.<br>
Diese Eigenschaft sollte mithilfe von Reverse-DNS benannt werden, z. B. „com.example.movie.title“. Da es jedoch kein zentrales Register gibt, können Konflikte auftreten.<br>
Dieses Attribut ist ein erforderlicher Parameter.</p>
<p>WERT: Der Attributwert ist eine Zeichenfolge in doppelten Anführungszeichen, die den durch DATA-ID angegebenen Wert enthält.<br>
Wenn LANGUAGE festgelegt ist, sollte VALUE eine für Menschen lesbare Zeichenfolge in dieser Sprache enthalten.</p>
<p>URI: Eine in Anführungszeichen eingeschlossene URI-Zeichenfolge. Die durch die URI angegebene Ressource muss das JSON-Format verwenden, da sie sonst vom Client möglicherweise nicht analysiert werden kann.</p>
<p>SPRACHE: Eine in Anführungszeichen eingeschlossene Zeichenfolge mit einem Sprach-Tag, das die von VALUE verwendete Sprache angibt.</p>
<p>EXT-X-SESSION-KEY: Mit diesem Tag kann die Master-Playlist die Verschlüsselungsschlüssel der Medien-Playlist angeben. Dadurch kann der Client diese Schlüssel vorab laden, ohne sie aus der Medien-Playlist abrufen zu müssen.<br>
Dieses Tag ist optional.<br>
Das Format ist:<br>
#EXT-X-SESSION-KEY:<attribute-list><br>
Die Attributliste ist dieselbe wie für EXT-X-KEY, außer dass der Wert des METHOD-Attributs nicht NONE sein darf.<br>
Tags vom Typ der Wiedergabeliste: Die folgenden Tags können sowohl in der Master-Wiedergabeliste als auch in der Medien-Wiedergabeliste festgelegt werden.<br>
Allerdings sollten in der Master-Playlist gesetzte Tags nicht noch einmal in der Medien-Playlist gesetzt werden, auf die die Master-Playlist verweist.<br>
Dieselben Tags, die in beiden Playlists vorkommen, müssen denselben Wert haben. Diese Tags können nicht mehr als einmal in einer Playlist vorkommen (sie können nur einmal verwendet werden). Die spezifischen Tags lauten wie folgt:</p>
<p>EXT-X-INDEPENDENT-SEGMENTS: Dieses Tag gibt an, dass alle Medienbeispiele in einem Mediensegment unabhängig dekodiert werden können, ohne auf andere Mediensegmentinformationen angewiesen zu sein.<br>
Dieses Tag ist für alle Mediensegmente in der Liste gültig.<br>
Das Format ist:</p>
<p>#EXT-X-UNABHÄNGIGE-SEGMENTE<br>
Wenn dieses Tag in der Master-Wiedergabeliste erscheint, gilt es für alle Medienclips in allen Medienwiedergabelisten.</p>
<p>EXT-X-START: Dieses Tag gibt die Startposition der Wiedergabeliste an.<br>
Wenn ein Client eine Wiedergabesitzung startet, sollte er standardmäßig die durch dieses Tag angegebene Position für die Wiedergabe verwenden.<br>
Dieses Tag ist optional.<br>
Das Format ist:</p>
<p>#EXT-X-START:<attribute-list><br>
Der Wertebereich seiner Parameterattributliste ist wie folgt:</p>
<p>TIME-OFFSET: Dieser Attributwert ist eine vorzeichenbehaftete dezimale Gleitkommazahl (Einheit: Sekunden).<br>
Eine positive Zahl, die einen Zeitversatz vom Beginn der Wiedergabeliste darstellt.<br>
Eine negative Zahl stellt einen Zeitversatz vor der letzten Position eines Mediensegments in der Wiedergabeliste dar.<br>
Der absolute Wert dieses Attributs sollte die Dauer der Wiedergabeliste nicht überschreiten. Wenn er diese überschreitet, bedeutet dies, dass die Datei das Ende (positiver Wert) oder den Anfang (negativer Wert) erreicht hat.<br>
Wenn die Wiedergabeliste das Tag EXT-X-ENDLIST nicht enthält, sollte der Attributwert TIME-OFFSET nicht innerhalb von drei Slices vom Ende der Wiedergabedatei liegen.</p>
<p>PRÄZISE: Der Wert ist eine aufzählbare Zeichenfolge.<br>
Gültige Werte sind JA oder NEIN.<br>
Wenn der Wert JA lautet, SOLLTE der Client das Mediensegment mit dem ZEITVERSATZ abspielen, SOLLTE jedoch die Beispielblöcke innerhalb dieses Blocks, die dem ZEITVERSATZ vorausgehen, NICHT rendern.<br>
Wenn der Wert NEIN ist, SOLLTE der Client versuchen, alle Beispielblöcke innerhalb des Medienfragments zu rendern.<br>
Dieses Attribut ist optional und wird als NEIN betrachtet, wenn es nicht angegeben wird.</p>
<p>An diesem Punkt haben wir die m3u8-bezogenen Tags vollständig eingeführt.</p>
<p>Als Nächstes stellen wir kurz die spezifischen Vorgänge zum Abrufen von Ressourcendateien vor.</p>
<p>Wie bereits erwähnt, handelt es sich bei der m3u8-Datei entweder um eine Medien-Playlist oder eine Master-Playlist. Unabhängig vom Typ der Playlist besteht ihr gültiger Inhalt aus zwei Strukturen:</p>
<p>Die mit #EXT beginnenden Informationen sind die Tag-Informationen, die als weitere Beschreibung der Medienressource verwendet werden.<br>
Der Rest sind Ressourceninformationen, entweder der Pfad der Fragmentressource (Medienwiedergabeliste) oder der Pfad der m3u8-Ressource (Masterwiedergabeliste).<br>
Lassen Sie uns zunächst kurz die Darstellungsmethode von Medienfragmenten in M3U8-Dateien vorstellen:</p>
<p>In der m3u8-Datei kann das Mediensegment durch den vollständigen Pfad dargestellt werden. Wie unten gezeigt:<br>
#EXTINF:10.0,<br>
<a href="http://example.com/movie1/fileSequenceA.ts" rel="nofollow">http://example.com/movie1/fileSequenceA.ts</a><br>
Auf diese Weise ist der Pfad zum Abrufen des Ressourcenfragments der in der m3u8-Datei angegebene Pfad, d. h. http://example.com/movie1/fileSequenceA.ts</p>
<p>In m3u8-Dateien können Mediensegmente auch mithilfe relativer Pfade dargestellt werden, wie unten gezeigt:<br>
#EXTINF:10.0,<br>
fileSequenceA.ts<br>
Dies bedeutet, dass der Pfad der Fragmentdatei relativ zum Pfad der m3u8-Datei ist. Angenommen, der aktuelle Pfad von m3u8 lautet: https://127.0.0.1/hls/m3u8, dann lautet der Pfad der Fragmentdatei fileSequenceA.ts: https://127.0.0.1/hls/fileSequenceA.ts</p>
<p>Obwohl Sie absolute Pfade verwenden können, um Ressourcenpfade für Medienfragmente in m3u8-Dateien anzugeben, ist die Verwendung relativer Pfade die bessere Wahl. Relative Pfade sind kürzer als absolute Pfade und beziehen sich auf die URL der m3u8-Datei. Im Gegensatz dazu erhöhen absolute Pfade den Inhalt der m3u8-Datei (mehr Zeichen), den Dateiinhalt und erhöhen auch das Netzwerkübertragungsvolumen.</p>
<p>Einige weitere Anmerkungen<br>
Es gibt zwei Möglichkeiten, eine m3u8-Wiedergabeliste anzufordern: Eine Möglichkeit besteht darin, sie über die m3u8-URI anzufordern. Dann muss die Datei mit .m3u8 oder .m3u enden.<br>
Die zweite Möglichkeit besteht darin, eine Anfrage über HTTP zu stellen, dann den Anfrageheader<a href="https://uzbox.com/de/etikett/inhalt" class="st_tag internal_tag" rel="tag" title="Inhalt">Inhalt</a>-Der Typ muss auf application/vnd.apple.mpegurl oder audio/mpegurl eingestellt sein.</p>
<p>Leere Zeilen und Kommentarzeilen werden beim Parsen ignoriert.</p>
<p>Die Gesamtdauer der Streaming-Ressourcen in der Medienwiedergabeliste ist die Summe der Dauern der einzelnen Slice-Ressourcen.</p>
<p>Die Bitrate jedes Slices ist die Größe des Slices geteilt durch die entsprechende Dauer (die durch EXTINF angegebene Dauer).</p>
<p>Dasselbe Attribut AttributeName kann in der Attributliste eines Tags nur einmal vorkommen.</p>
<p>Die durch EXT-X-TARGETDURATION angegebene Dauer darf nicht geändert werden. Typischerweise gibt dieser Wert eine Dauer von 10 Sekunden an.</p>
<p>Für Slices, die EXT-X-FRAMES-ONLY angeben und deren Ressourcen nicht unmittelbar einen Medieninitialisierungsblock enthalten, sollte das Tag EXT-X-MAP hinzugefügt werden, um anzugeben, wie der Medieninitialisierungsblock abgerufen wird.</p>
<p>Die zur Verwendung des Tags EXT-X-MAP mit dem Tag EXT-XI-FRAMES-ONLY erforderliche Kompatibilitätsversionsnummer EXT-X-VERSION muss größer oder gleich 5 sein; die zur ausschließlichen Verwendung von EXT-X-MAP erforderliche Kompatibilitätsversionsnummer muss größer oder gleich 6 sein.</p>
<p>Der vom EXT-X-MAP-Tag deklarierte Medieninitialisierungsblock kann mit der AES-128-Methode verschlüsselt werden. In diesem Fall muss das auf das EXT-X-MAP-Tag wirkende EXT-X-KEY-Tag das IV-Attribut setzen.</p>
<p>Das EXT-X-DATERANGE-Tag mit dem Attribut END-ON-NEXT=YES muss das CLASS-Attribut enthalten, nicht jedoch die Attribute DURATION und END-DATE. Andere EXT-X-DATERANGE-Tags mit derselben CLASS dürfen keine überlappenden Datumsbereiche angeben.</p>
<p>Wenn für den Datumsbereich die Attribute DURATION, END_DATE und END-ON-NEXT=YES nicht angegeben sind, ist seine Dauer unbekannt, auch wenn das Attribut PLANNED-DURATION festgelegt ist.</p>
<p>Wenn eine Wiedergabeliste das Tag EXT-X-DATERANGE festlegt, muss sie auch das Tag EXT-X-PROGRAM-DATE-TIME festlegen.</p>
<p>Wenn eine Wiedergabeliste zwei EXT-X-DATERANGE-Tags mit demselben ID-Attributwert festlegt, müssen die entsprechenden Werte in den beiden EXT-X-DATERANGE-Tags für denselben Attributnamen konsistent sein.</p>
<p>Wenn EXT-X-DATERANGE sowohl das Attribut DURATION als auch das Attribut END-DATE festlegt, muss der Attributwert END-DATE dem Attributwert START-DATE plus dem Attributwert DURATION entsprechen.</p>
<p>Das Tag EXT-X-MEDIA-SEQUENCE MUSS vor dem ersten Segment einer Wiedergabeliste erscheinen.</p>
<p>Das Tag EXT-X-DISCONTINUITY-DEQUENCE MUSS vor dem ersten Segment einer Wiedergabeliste erscheinen.</p>
<p>Das Tag EXT-X-DISCONTINUITY-DEQUENCE MUSS vor jedem Tag EXT-X-DISCONTINUITY erscheinen.</p>
<p>Wenn das Tag EXT-X-PLAYLIST-TYPE in der m3u8-Datei nicht gesetzt ist, kann die Playlist jederzeit geändert werden. Beispielsweise können die Mediensegmente in der Playlist aktualisiert oder gelöscht werden.</p>
<p>Jedes EXT-XI-FRAME-STREAM-INF-Tag muss BANDWIDTH- und URI-Attribute enthalten.</p>
<p>Jedes EXT-X-SESSION-DATA-Tag muss entweder ein VALUE- oder ein URI-Attribut enthalten, aber nicht beides.</p>
<p>Eine Wiedergabeliste kann mehrere EXT-X-SESSION-DATA-Tags mit demselben DATA-ID-Attribut enthalten, sie kann jedoch nicht mehrere EXT-X-SESSION-DATA-Tags mit derselben DATA-ID und demselben LANGUAGE-Attribut enthalten.</p>
<p>Wenn EXT-X-SESSION-KEY festgelegt ist, MÜSSEN die Attributwerte METHOD, KEYFORMAT und KEYFORMATVERSIONS mit denen eines beliebigen EXT-X-KEY-Tags für dieselbe URI identisch sein.</p>
<p>Wenn mehrere alternative Streams oder Streams in mehreren Sprachen denselben Verschlüsselungsschlüssel und dasselbe Format verwenden, sollte das Tag EXT-X-SESSION-KEY gesetzt werden.</p>
<p>Eine Master-Wiedergabeliste DARF NICHT mehrere EXT-X-SESSION-KEY-Tags mit denselben Attributwerten METHOD, URI, IV, KEYFORMAT und KEYFORMATVERSIONS festlegen.</p>
<h3 class="typography-headline"><span id="HTTP"><a href="https://developer.apple.com/streaming/"><span>Verstehen Sie, was HTTP-Live-Streaming ist</span></a></span></h3><div class="kk-star-ratings kksr-auto kksr-align-center kksr-valign-bottom" data-payload="{"align":"center","id":"9800","slug":"default","valign":"bottom","ignore":"","reference":"auto","class":"","count":"0","legendonly":"","readonly":"","score":"0","starsonly":"","best":"5","gap":"5","greet":"评分","legend":"0\5 - (0 votes)","size":"24","title":"m3u8 格式是什么文件?","width":"0","_legend":"{score}\{best} ({count} {votes})","font_factor":"1.25"}">
<div class="kksr-stars">
<div class="kksr-stars-inactive">
<div class="kksr-star" data-star="1" style="padding-right: 5px"><div class="kksr-icon" style="width: 24px; height: 24px;"></div>
</div>
<div class="kksr-star" data-star="2" style="padding-right: 5px"><div class="kksr-icon" style="width: 24px; height: 24px;"></div>
</div>
<div class="kksr-star" data-star="3" style="padding-right: 5px"><div class="kksr-icon" style="width: 24px; height: 24px;"></div>
</div>
<div class="kksr-star" data-star="4" style="padding-right: 5px"><div class="kksr-icon" style="width: 24px; height: 24px;"></div>
</div>
<div class="kksr-star" data-star="5" style="padding-right: 5px"><div class="kksr-icon" style="width: 24px; height: 24px;"></div>
</div>
</div>
<div class="kksr-stars-active" style="width: 0px;">
<div class="kksr-star" style="padding-right: 5px"><div class="kksr-icon" style="width: 24px; height: 24px;"></div>
</div>
<div class="kksr-star" style="padding-right: 5px"><div class="kksr-icon" style="width: 24px; height: 24px;"></div>
</div>
<div class="kksr-star" style="padding-right: 5px"><div class="kksr-icon" style="width: 24px; height: 24px;"></div>
</div>
<div class="kksr-star" style="padding-right: 5px"><div class="kksr-icon" style="width: 24px; height: 24px;"></div>
</div>
<div class="kksr-star" style="padding-right: 5px"><div class="kksr-icon" style="width: 24px; height: 24px;"></div>
</div>
</div>
</div><div class="kksr-legend" style="font-size: 19.2px;">
<span class="kksr-muted">Punktzahl</span>
</div>
</div>