in Sonstiges

Wieso kann man bei manchen Videos nicht an eine bestimmte Position springen?

Das Phänomen kennen bestimmt einige unter den Lesern. Man schaut ein Video, unterbricht es aus irgendeinem Grund (wenn das Real Life ruft, oder so ähnlich 😉 ) und möchte später wieder an die Stelle springen. Obwohl das Video bisher einwandfrei abgespielt wurde, weigert sich der Videoplayer nun vehement an eine bestimmte zeitliche Position zu springen. Ist mir auch schon mehrfach passiert, meist bei Videos im Matroska-Containerformat („mkv“). Heute wurde die Problematik zufällig in einer Vorlesung zum Thema Streaming an der HdM Stuttgart aufgegriffen. Dabei wurde das Verhalten anhand des Matroska-Containerformats erklärt – inwieweit es sich auf andere Formate übertragen lässt, kann ich nicht sagen.

Videos enthalten im Header eine sogenannte Queue-Table. Diese Tabelle verknüpft die Byte-Daten des Videos mit den zeitlichen Angaben. D.h. diese Tabelle besteht prinzipiell aus den Spalten Zeit (z.B. Sekunden) und gegenüber gestellt die dazugehörige Position innerhalb der Byte-Daten. Man kann sich also viele kleine Zeiger (in der Skizze blau) vorstellen, welche an die entsprechende Position im Video zeigen.
Kann man im Video nicht springen, ist daher mit hoher Wahrscheinlichkeit die Queue-Table des Videos beschädigt.

Video Container

Video Container

Noch ein weiteres Phänomen lässt sich aufgrund einer fehlerhaften Queue-Table beobachten.
Dazu sollte man wissen, dass die Videospur immer wieder aus sogenannten Keyframes besteht (in der Skizze K genannt). Diese enthalten Informationen über das vollstände Bild, während die darauffolgenden Frames nur Änderungen gegenüber des Keyframes enthalten (-> Komprimierung). Springt man nun an eine Position in der Videospur, sollte der Videoplayer eigentlich den naheliegendsten Keyframe laden. Unter fehlerhaften Umständen verweist die Queue-Table aber auf einen differentiellen Frame, anstatt auf einen Keyframe. Daher kann man beobachten, dass für eine sehr kurze Dauer das Bild aus vielen Klötzchen besteht, bevor es schließlich durch einen Keyframe wieder vollständig geladen wird.

Fehlerhafte Ausgabe nach Sprung im Video

Fehlerhafte Ausgabe nach Sprung im Video

Schreibe einen Kommentar

Kommentar

  1. Das deckt sich dann auch mit der Beobachtung, dass man in manchen Videos an eine bestimmte Stelle springen will (z.b. Sekunde 7), das Video springt aber dennoch zu Sekunde 5 (bspw). Da dachte ich schon öfter, dass das Video in Abschnitte gemappt wird.