Was ist das M4S-Format?

M4S ist eine gängige Dateiendung für fragmentierte MP4-Mediensegmente, die MPEG-DASH und modernes HLS verwenden. Ein Segment benötigt in der Regel ein Initialisierungssegment für die Konfiguration der Spuren und des Decoders.

Initialisierungssegment: ftyp und moov mit Spur- und Sample-Beschreibungen
Decoder-Konfiguration und codierte Samples für eine Variante
Ein Mediensegment lässt sich nur zusammen mit dem Initialisierungssegment decodieren, das das Manifest oder die Playlist dafür angibt. Selbst dann können Videoframes vor dem ersten Direktzugriffspunkt des Segments von früheren Segmenten abhängen.

So funktioniert das M4S-Format

M4S-Mediensegmente sind kurze Ressourcen im fragmentierten MP4-Format, die entstehen, nachdem die Ausgabe eines Encoders für adaptives Streaming aufgeteilt wurde. Ihre Movie-Fragment-Metadaten ordnen Samples Zeitangaben und Speicherorte zu, während die zugehörigen Mediendaten-Boxen die codierten Samples enthalten. Spurdefinitionen und Decoder-Konfiguration befinden sich normalerweise in einer Initialisierungsressource, auf die das Manifest verweist und die manche Packager ebenfalls mit .m4s benennen. Ein Player kombiniert diese Konfiguration beim Puffern und Wechseln zwischen Repräsentationen mit aufeinanderfolgenden Fragmenten.

Wichtige Fakten

  1. Ein Mediensegment besteht aus einem oder mehreren Movie-Fragmenten: einer Box moof, die die Samples beschreibt, gefolgt von einer oder mehreren Boxen mdat, die deren codierte Bytes enthalten. Optional steht davor eine Segmenttyp-Box styp. Es enthält keine Box moov, daher befinden sich die Spur- und Sample-Beschreibungen, die ein Decoder benötigt, nicht in der Datei.
  2. Das Initialisierungssegment liefert, was den Mediensegmenten fehlt: eine Box ftyp, gefolgt von einer Box moov mit Spur- und Sample-Beschreibungen, aber ohne Samples. In HLS muss für jedes fragmentierte MP4-Mediensegment ein passendes Tag EXT-X-MAP gelten, dessen URI die Ressource mit diesen Initialisierungsdaten angibt. Ein Tag gilt für jedes folgende Segment bis zum nächsten EXT-X-MAP. In Media Source Extensions muss ein Mediensegment ohne Segmenttyp-Box den im Initialisierungssegment deklarierten Brands entsprechen.
  3. Die Dateiendung verrät nicht, um welchen der beiden Dateitypen es sich handelt. .m4s ist bei der IANA als Dateiendung des Medientyps video/iso.segment registriert, doch die Dateinamen bestimmt der Packager: Wenn der DASH-Muxer von FFmpeg MP4-Segmente als separate Dateien schreibt, erhalten standardmäßig sowohl Initialisierungs- als auch Mediensegmente die Dateiendung .m4s (für Streams mit VP8, VP9, Vorbis oder Opus verwendet er standardmäßig WebM-Segmente namens .webm). Der HLS-Muxer nennt die fragmentierte MP4-Initialisierungsdatei dagegen standardmäßig init.mp4. Bestimmen Sie die Rolle einer Datei anhand des Manifests oder ihrer Boxen auf oberster Ebene.
  4. Ein Name mit .m4s belegt keine CMAF-Konformität. CMAF ist ein stärker eingeschränktes Profil von fragmentiertem MP4, und FFmpeg behandelt CMAF-kompatible und DASH-kompatible Ausgaben als separate Muxer-Modi. Die tatsächlichen Anforderungen hängen vom Zielprotokoll ab: HLS verlangt beispielsweise eine Box tfdt in jedem Spurfragment sowie eine Adressierung relativ zum Movie-Fragment und weist darauf hin, dass ein CMAF-Segment diese Anforderungen erfüllt.

Wann das M4S-Format relevant ist

M4S ist relevant, wenn Sie segmentierte Streams paketieren, hosten, verschieben oder deren Fehler analysieren. Ein Mediensegment ist keine eigenständige Videodatei: Ein Parser benötigt die passenden Initialisierungsdaten, bevor er das Segment lesen kann, und ein Player findet beides über das Manifest oder die Playlist. Wenn Sie einen Stream verschieben, bereinigen oder zwischenspeichern, müssen die Verweise im Manifest gültig und alle darin genannten Initialisierungs- und Mediensegmente verfügbar bleiben. Ein einzelnes Mediensegment mit .m4s eignet sich allein nicht als Eingabe für einen allgemeinen Konverter.

So hilft Transloadit beim M4S-Format

Transloadits Robot /video/adaptive dokumentiert für seinen Parameter technique den Wert cmaf, der MPEG-DASH- und HLS-Manifeste erzeugt, die auf dieselben fragmentierten MP4-Segmente verweisen.

Die Robot-Dokumentation spricht von Segmenten und Initialisierungssegmenten, nennt aber keine Dateiendungen. Bauen Sie Ihre Werkzeuge daher nicht auf der Annahme auf, dass der Name .m4s verwendet wird. Sie besagt jedoch, dass jede Ergebnisdatei die Metadateneigenschaft relative_path enthält, damit die Dateien dort gespeichert werden können, wo die Manifeste sie erwarten.

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