Warum ein MP4 nicht abspielt, und was ein Container wirklich ist

Wie sich Container wie MP4 und MKV von Codecs wie H.264 und AV1 unterscheiden und wie Bitrate, Keyframes, Tonspuren und Neucodierung darüber entscheiden, ob eine Datei abspielt und wie groß sie wird.

Ein MP4, das nicht abspielt, ist selten defekt. Die Dateiendung benennt nur den Container, die Hülle, die die Streams und ihre Zeitstempel enthält. Decodiert werden muss der Codec darin, und dieselbe .mp4 kann H.264 enthalten, das auf einem zehn Jahre alten Telefon läuft, oder AV1, das ein zwei Jahre alter Fernseher nicht anfassen kann. Deshalb spielt das eine MP4 und das andere nicht.

Bei jeder Videodatei stellen sich zwei Fragen: In welcher Schachtel steckt sie, und wie ist das Bild komprimiert. Die Schachtel zu wechseln ist meist umsonst; die Kompression zu wechseln nie.

Ein Container ist eine Schachtel, ein Codec ist das Bild

ContainerVideo-CodecsAudioUnterstützung
MP4H.264, H.265, teilweise AV1AAC, MP3Überall
WebMVP8, VP9, AV1Opus, VorbisNur Browser
MKVFast allesAC-3, DTS, allesDesktop-Player, keine Browser
MOVH.264, H.265, ProResAAC, PCMApple, Schnitt
AVIDivX, Xvid, MJPEGMP3, PCMAltes Windows

MKV ist der großzügige Container, gut für Archive und schlecht für die Auslieferung: Ein gültiges MKV kann eine Kombination enthalten, die kein Browser öffnet. MOV und MP4 teilen den größten Teil ihrer Struktur, zwischen beiden zu wechseln ist deshalb oft nur ein Neuschreiben des Index. Sieh dir die Datei an:

input.mp4
  Stream #0:0  Video  h264 (High)   1920x1080  30 fps  4200 kb/s
  Stream #0:1  Audio  aac  (LC)     48000 Hz   stereo   128 kb/s

Entscheidend ist das Wort nach „Video“. Das Wort „mp4“ sagt dir fast nichts.

Welcher Codec wo abspielt

CodecBits für gleiche QualitätLizenzierungUnterstützung
H.264 (AVC)Basislinie, sagen wir 100 %Patentpool, fast überall lizenziertUniversell
H.265 (HEVC)50 bis 65 %Konkurrierende Pools, teuer, ungeklärtApple ja, Browser lückenhaft
VP9Ähnlich wie H.265LizenzgebührenfreiChrome, Firefox, Edge, Android
AV130 bis 50 %LizenzgebührenfreiAktuelle Browser, neuere Hardware

H.265 ist technisch stark und kommerziell heikel, die Unterstützung verläuft deshalb entlang von Herstellergrenzen statt entlang technischer. AV1 komprimiert am besten und codiert weit langsamer, manchmal um eine Größenordnung, es passt also zu Video, das einmal codiert und oft gesehen wird. Für ein unbekanntes Publikum bleibt H.264 in MP4 die Antwort, und Compress Video zielt darauf.

Bitrate, Auflösung und Bildrate

Die Bitrate sind die Bits pro Sekunde Ausgabe, und sie allein bestimmt die Dateigröße: mit der Dauer multiplizieren, und du hast die Datei.

1920 x 1080 x 30 fps x 3 bytes = about 186 MB per second raw
delivered at 4 Mb/s            = about 0.5 MB per second

Die Auflösung zu verdoppeln vervierfacht die Pixelzahl, aber nicht die nötigen Bits, denn benachbarte Pixel in einem größeren Bild ähneln sich stärker und komprimieren besser. Rechne mit dem Zwei- bis Dreifachen, Breite und Höhe zu halbieren gehört also zu den günstigsten Wegen, eine Datei zu verkleinern: Das ist Resize Video, und Crop Video wirft Pixel ganz weg. Die Bildrate ist sanfter und legt von 30 auf 60 nur 20 bis 40 % zu statt 100 %, und Change Video Speed kürzt stattdessen die Zeitachse.

Drei Wege, die Rate zu steuern:

  • Konstante Bitrate hält durchgehend eine Rate: Statische Einstellungen verschwenden Bits, schnelle Bewegung bricht auseinander. Sie passt zu Leitungen mit einer harten Obergrenze.
  • Variable Bitrate mit Zielwert mittelt sich aus und lässt Szenen voneinander borgen. Die Größe ist vorhersagbar, nimm sie also, wenn die Ausgabe in eine Grenze passen muss.
  • Konstante Qualität, meist ein CRF-Wert, legt die Qualität fest und lässt die Bitrate dorthin gehen, wo sie gebraucht wird. Die Größe ist unvorhersehbar, die Qualität gleichmäßig, und das ist der Standard für alles, was angesehen und nicht gestreamt wird.

Bei H.264 reicht die CRF-Skala von 0 bis 51, niedriger ist besser: 18 ist von der Quelle kaum zu unterscheiden, 23 ein vernünftiger Standardwert, jenseits von 28 bricht Bewegung auseinander. Die Skala ist zwischen Codecs nicht dieselbe.

Keyframes, und warum ein Schnitt manchmal umsonst ist

Ein I-Frame, also ein Keyframe, ist ein vollständiges Bild, das für sich allein decodiert. Ein P-Frame speichert nur, was sich gegenüber einem früheren Bild geändert hat. Ein B-Frame sagt sowohl aus einem früheren als auch aus einem späteren Bild voraus, was am besten komprimiert und der Grund dafür ist, dass Decoder Bilder vor der Anzeige manchmal zurückhalten.

Ein Keyframe samt seiner abhängigen Bilder ist eine Group of Pictures, und Web-Encoder setzen etwa alle zwei Sekunden eine. Schneidest du mitten in eine Gruppe, verweisen die überlebenden Bilder auf ein Bild, das nicht mehr in der Datei ist; deshalb gibt es beim Schneiden zwei Modi. Streams zu kopieren ist sofort fertig und verlustfrei, landet aber nur auf einem Keyframe, der Anfang kann also um bis zu einer Gruppenlänge abweichen; die Neucodierung setzt einen Keyframe dorthin, wo du ihn angefordert hast, und kostet Zeit und Qualität. Trim Video bietet beides; kopiere, sofern nicht das exakte Einzelbild zählt.

Die Neucodierung kostet Qualität, weil jeder verlustbehaftete Durchgang das verwirft, was das Modell für am wenigsten sichtbar hält. Codierst du erneut, behandelt der zweite Durchgang die Artefakte des ersten als echtes Detail, erhält sie und fügt eigene hinzu, der Fehler summiert sich also über die Generationen. Kopiere die Streams, wenn sich nur der Container ändert, und kopiere das Bild, wenn nur der Ton verschwindet, genau das tut Mute Video. Rotate Video kann ein Rotationsflag setzen, statt Pixel zu drehen, doch Player, die es ignorieren, zeigen die ursprüngliche Ausrichtung. Wenn Pixel sich ändern müssen, ändere alles in einem Durchgang.

Die Tonspur ist die andere Hälfte

Ton ist ein eigener Stream mit eigenem Codec, eigener Abtastrate und eigenem Kanallayout und ein häufiger Grund dafür, dass eine Datei nicht abspielt. Ein Browser, der das H.264-Bild anstandslos decodiert, decodiert womöglich kein AC-3 oder DTS-Surround, was Stille oder ein hartes Scheitern der gesamten Datei hinterlässt. Disc-Rips in MKV scheitern ständig auf diese Weise.

Die Abtastrate gibt an, wie oft die Wellenform gemessen wurde: 44100 Hz von der CD, 48000 Hz der Videostandard. AAC mit 48000 Hz in Stereo ist die sichere Wahl für die Auslieferung, etwa 128 kb/s für Sprache und 192 kb/s für Musik. Extract Audio zieht eine Spur als MP3, WAV, AAC oder Opus heraus.

Video in ein GIF verwandeln

GIF ist ein Standbildformat von 1987, dem Animation angeflanscht wurde und dem echte Bewegungskompensation fehlt. Jedes Einzelbild wird weitgehend für sich komprimiert, fünf Sekunden können also mehrere Megabyte ergeben, wo derselbe Clip als stummes MP4 ein paar hundert Kilobyte groß ist. Es ist auf 256 Farben pro Einzelbild begrenzt, hat ein Bit Transparenz und keinen Ton.

An der Farbgrenze wird die Qualität gewonnen oder verloren. Eine generische feste Palette erzeugt Streifen in Verläufen und erzwingt kräftiges Dithering, und dieses Rauschen ist nahezu zufällig, komprimiert also schlecht und bläht die Datei auf. Eine Palette aus dem Clip selbst zu bauen und die Einzelbilder darauf abzubilden ergibt ein besseres Bild und oft eine kleinere Datei; Video to GIF macht genau diesen Durchgang. Halte GIFs kurz und schmal: zwei oder drei Sekunden, 480 bis 640 Pixel breit, 10 bis 15 Bilder pro Sekunde. Wenn das Ziel Video akzeptiert, schick ein stummes MP4.

Einstellungen, die im Web funktionieren

  • H.264 in MP4 mit AAC-Ton für alles, was einfach nur abspielen muss.
  • CRF um 23, herunter auf 20 für Bildschirmaufnahmen mit feinem Text, hinauf auf 26 für Hintergrundmaterial.
  • Skaliere auf die Breite, in der es angezeigt wird, und zwar vor dem Komprimieren statt danach.
  • Aktiviere faststart, damit der Index vorne sitzt und die Wiedergabe beginnt, bevor der Download fertig ist.

All das läuft im Browser auf deiner eigenen Maschine, es wird also nichts hochgeladen, und die Grenze ist der Arbeitsspeicher, kein Serverkontingent. Die Decode-Puffer für eine lange 4K-Datei können einen Tab erschöpfen, schneide also zuerst zu und skaliere danach.