Was ist eine ASF-Datei?
Advanced Systems Format ist ein Multimedia-Container von Microsoft für synchronisierte Audioinhalte, Videoinhalte und Metadaten. Er wurde insbesondere für Streaming entwickelt und steht mit Windows-Media-Inhalten in Verbindung.
So funktionieren ASF-Dateien
Eine ASF-Datei besteht aus einer Folge von Objekten, die jeweils mit einer identifizierenden GUID und einer Größenangabe beginnen. Auf oberster Ebene gibt es drei Arten: ein obligatorisches Header Object am Dateianfang, ein obligatorisches Data Object direkt danach und optionale Index Objects am Ende. Der Header beschreibt die Datei und jeden Stream und kann außerdem die verwendeten Codecs, beschreibende Metadaten wie Titel und Autor sowie Informationen zum Inhaltsschutz aufführen. Das Data Object enthält die Medien als Pakete mit jeweils einem Präsentationszeitpunkt. Ein Paket kann Daten für einen oder mehrere Streams enthalten. Streams können jedes komprimierte oder unkomprimierte Format verwenden, und eine Datei kann mehrere enthalten, etwa mehrere Audiostreams oder Video mit mehreren Bitraten. Microsoft entwickelte das Format für die Wiedergabe von Medienservern und HTTP-Servern sowie aus lokalem Speicher.
Wichtige Fakten
.asf,.wmaund.wmvsind derselbe Container. Microsoft verwendet.wmaund.wmvfür ASF-Dateien, deren Inhalt mit Windows-Media-Audio- oder Windows-Media-Video-Codecs codiert ist. Die Library of Congress führt.asffür Dateien ohne Windows-Media-Bitstreams auf. FFmpeg identifiziert das Format durch einen Vergleich des Dateianfangs mit der GUID des Header Object, nicht anhand des Namens. Seine Konstante für diese GUID (geprüft in Release 8.0) lautet hexadezimal30 26 B2 75 8E 66 CF 11 A6 D9 00 AA 00 62 CE 6C. Das sind dieselben Bytes, die die Library of Congress als Signatur für.asfaufführt. Laut Microsoft ist das Header Object am Anfang jeder ASF-Datei vorgeschrieben. Daher gilt dieselbe Prüfung für Dateien mit den Endungen.wmaund.wmv.- Der Container legt den Codec nicht fest. Laut der Übersicht von Microsoft können ASF-Streams jedes komprimierte oder unkomprimierte Format verwenden. Daher können zwei gültige ASF-Dateien völlig unterschiedliche Decoder benötigen, und ein Name mit
.wmvoder.wmaist eine Konvention, keine Garantie. Analysieren Sie jeden Stream, bevor Sie zwischen Remuxing und Transkodierung wählen. - ASF kann DRM enthalten. Ein Content Encryption Object oder Extended Content Encryption Object im Header kennzeichnet Inhalte, die durch die Windows-Media-Rechteverwaltung geschützt sind. Für ihre Wiedergabe kann zunächst eine Lizenz mit einem Schlüssel erforderlich sein. Wird kein Entschlüsselungsschlüssel angegeben, erkennt der ASF-Demuxer von FFmpeg (geprüft in Release 8.0) beide Objekte und gibt lediglich Warnungen aus: „DRM protected stream detected, decoding will likely fail!“ für das erste und „Ext DRM protected stream detected, decoding will likely fail!“ für das zweite. Beide werden auf der Protokollierungsstufe
warningvon FFmpeg ausgegeben. Eine weniger ausführliche Stufe wieerrorblendet sie daher aus. Der Demuxer setzt die Metadatenencryptionnur für das Extended-Objekt. Beim ersten speichert er stattdessen nicht leere Werte vonASF_Protection_Type,ASF_Key_IDundASF_License_URLals Metadaten. Achten Sie auf jede der beiden Warnungen, nicht allein auf den Eintragencryption, und weisen Sie solche Uploads von vornherein zurück, statt eine Transkodierung zu erwarten. - Eine ASF-Datei, die sich öffnen lässt, ist nicht unbedingt vollständig oder indiziert. Das Index Object, das zeitbasierten Direktzugriff auf die Daten ermöglicht, ist optional und steht am Ende. Microsoft weist darauf hin, dass eine teilweise heruntergeladene Datei weiterhin gelesen werden kann, solange sie das Header Object und mindestens ein Data Object enthält. Prüfen Sie bei unvollständigen Downloads und unterbrochenen Aufnahmen die Dauer und das Verhalten beim Springen in der Zeitleiste.
Wann ASF-Dateien wichtig sind
Unterstützen Sie ASF beim Einlesen älterer Windows-Media-Dateien und Archive, die meist als .wmv, .wma oder .asf vorliegen. Prüfen Sie vor der Konvertierung zwei Dinge, die der Container allein nicht verrät: welche Codecs die Streams verwenden und ob die Datei DRM-geschützt ist. Geschützte Inhalte können vor der Wiedergabe eine Lizenz erfordern, und FFmpeg warnt, dass ihre Decodierung wahrscheinlich fehlschlägt. Planen Sie für die Auslieferung im Web einen anderen Container ein: Der MDN-Leitfaden zu Mediencontainern im Web enthält keinen ASF-Eintrag und nennt MP4 und WebM als in allen Browsern unterstützt. MDN weist darauf hin, dass diese Unterstützung nur für den Container gilt, nicht für einen bestimmten Codec. Die ermittelten Codecs entscheiden daher, ob die Streams in den neuen Container kopiert werden können oder transkodiert werden müssen.
So hilft Transloadit bei ASF-Dateien
Transloadits Audio-/Videoformattabelle gilt für FFmpeg-basierte Robots wie /video/encode und /audio/encode. Sie führt asf als Format auf, das diese Robots mit jedem aufgeführten FFmpeg-Stack lesen und schreiben können.
Die Tabelle gibt die Container-Unterstützung je Stack an, kein geprüftes Ergebnis für jeden Codec innerhalb eines ASF-Uploads. Sie sagt nichts über DRM-geschützte Dateien aus, bei denen FFmpeg selbst vor einem wahrscheinlichen Fehlschlag warnt. Testen Sie repräsentative Altdateien, bevor Sie sich darauf verlassen.
Entdecken Sie Transloadits Möglichkeiten für Dateiformate & Komprimierung
Quellen
- Microsoft Learn: Überblick über das ASF-Format (Windows Media Format SDK)
- Microsoft Learn: ASF-Dateistruktur (Media Foundation)
- Formatbeschreibung fdd000067 der Library of Congress: ASF (Advanced Systems Format)
- FFmpeg 8.0 asfdec_f.c, Zeilen 196–203: ASF-Erkennung anhand der GUID des Header Object
- FFmpeg 8.0 asf_tags.c, Zeilen 23–25: Bytes der GUID des Header Object
- FFmpeg 8.0 asfdec_f.c, Zeilen 765–796: Warnungen bei DRM-Erkennung im ASF-Demuxer
- FFmpeg-Formatdokumentation: asf-Demuxer (Abschnitt 3.4) und Muxer asf, asf_stream (Abschnitt 4.17)
- FFmpeg-Tooldokumentation: Streamcopy und die allgemeine Option -loglevel
- MDN: Mediencontainerformate (Verzeichnis der im Web verwendeten Container)