Skip to content

Latest commit

 

History

History
94 lines (57 loc) · 9.39 KB

HardLinking_ger.md

File metadata and controls

94 lines (57 loc) · 9.39 KB

Matroska Hard-Linking

Hard-Linking ist die "schwächste" Art von Verknüpfung, um Matroska Dateien virtuell und nahtlos miteinander zu verbinden. Für dieses Verfahren werden die Elemente PrevUID und NextUID genutzt. Diese Elemente befinden sich in der Segment/Info Sektion einer Matroska Datei.

Beim Laden einer Matroska Datei muss ein Player diese Elemente untersuchen und prüfen, ob im Element PrevUID oder NextUID eine SegmentUID angegeben ist, welche zu einer anderen Matroska Datei gehört, die sich im selben Ordner befinden muss.

Schwaches Hard-Linking

Wenn eine reihenfolgentreue Version mit Reihenfolgentreuen Kapiteln verwendet wird, dann muss das Hard-Linking ignoriert werden.

Hard-Linking "Schwach" Test Dateien

Kapitel und Hard-Linking

Wenn in den Matroska Dateien Kapitel enthalten sind, dann müssen die Kapitelzeiten für die Kapitelmarker angepasst/verschoben werden. Es werden nur die Startzeiten der Kapitel verwendet.

Welche Kapitel, aus welcher Version sollten verwendet werden?

Es kann vorkommen, dass mehrere Versionen in der geöffneten Datei vorhanden sind. Wie schon erwähnt darf die Version nicht reihenfolgentreu sein. Sagen wir mal die 2.Version muss vom Player verwendet werden. Dann sollte der Player auch aus allen verknüpften Dateien die 2.Version benutzen. Falls es aber keine 2.Version in einer der verknüpften Dateien gibt, dann werden auch keine Kapitelmarker für diese Datei erstellt.

Wie und welche Kapitel von den verknüpften Dateien genutzt werden, handhaben die aktuellen Player sehr unterschiedlich. Der LAV-Splitter zum Beispiel nutzt immer die 1.Version aus den verknüpften Dateien. Gibt es eine Version mit dem EditionFlagDefault Element, dann werden die Kapitel dieser Version verwendet.

Die erste Test Datei hat 2 Versionen und die 2. ist die Standard Version. Ebenso hat die zweite und letzte Test Datei 2 Versionen, aber keine ist als Standard defniert. Die anderen Test Dateien haben nur eine Version.

Hard-Linking mehrere Versionen Test Dateien

Matroska Specs

Die Matroska Specs besagen, dass die 1. Matroska Datei keine PrevUID haben darf und die letzte Matroska Datei darf keine NextUID haben. Alle "zwischen liegenden" Dateien müssen beide Elemente verwenden. Dadurch wird sichergestellt, dass egal welche Datei man im Player öffnet, der gesamte Inhalt aller verknüpften Dateien abgespielt wird.

Zu beachten ist, dass man keine Endlos-Schleifen Verknüpfung erzeugen darf/sollte. Theoretisch könnte ein Player das erkennen, und beim Einlesen der Daten abbrechen, wenn die verknüpfte Datei schon einmal in die virtuelle Zeitleiste aufgenommen wurde.

Hard-Linking Specs Test Dateien

Hard-Linking in der Praxis

Zuerst einmal ein paar Überlegungen zum System Hard-Linking. Ein Player untersucht die Matroska Datei und findet dabei ein PrevUID Element mit einer SegmentUID. Das führt dazu, dass eine "Rückwärts Suche" gestartet werden muss. Weiterhin muss das NextUID Element untersucht werden, wodurch dann eine "Vorwärts Suche" gestartet werden muss.

Rückwärts Suche

Zuerst sucht der Player nach dieser Datei im Ordner. Wenn die Datei vorhanden ist, wird wiederum das PrevUID Element untersucht, aber NICHT das NextUID Element. Dies wiederholt sich solange bis die "erste" Matroska Datei erreicht ist, bei der es keine PrevUID gibt, oder die zuverlinkende Datei nicht vorhanden ist.

Vorwärts Suche

Der Vorgang ist ähnlich wie bei der "Rückwärts Suche". Allerdings muss immer das NextUID Element untersucht werden.

Endlos Schleife

Es ist möglich(und sehr leicht) mit Hard-Linking eine Endlosschleife zu erzeugen. Dazu verlinkt man einfach eine Datei die bereits in der entsprechenden Suchrichtung enthalten ist.

Hard-Linking mit Endlosschleife Test Dateien

Weitere Hard-Linking Möglichkeiten

Alle Player die ich getestet habe, scheinen nach diesem Prinzip zu arbeiten. Daher habe ich mir weitere Hard-Linking Möglichkeiten einfallen lassen. In meinem chapterEditor Projekt kann man sehr bequem diese verschiedenen Varianten einrichten.

Hard-Linking nur mit dem NextUID Element

Ein Player wird somit immer nur in der Lage sein eine "Vorwärts Suche" zu starten. Nur wenn man die erste Matroska Datei öffnet, wird der gesamte Inhalt aller verknüpften Dateien abgespielt.

Zum Beispiel für eine Serie, bei der jede Folge als erstes, immer den gleichen Vorspann hat, und anschließend einen Rückblick. Vorspann, Rückblick und der Episodenteil liegen separat als Matroska Datei vor. Möchte man die komplette Folge sehen, dann startet man die Vorspann-Datei. Möchte man keinen Vorspann sehen aber den Rückblick, dann startet man die Rückblick-Datei. Und möchte man nur den Episodenteil sehen, dann eben diese Datei starten.

Hard-Linking NextUID Test Dateien

Hard-Linking nur mit dem PrevUID Element

Ein Player wird somit immer nur in der Lage sein eine "Rückwärst Suche" zu starten. Nur wenn man die letzte Matroska Datei öffnet, wird der gesamte Inhalt aller verknüpften Dateien abgespielt.

Nutzen wir wieder unser Serien Beispiel, nur das wir diesmal einen Episodenteil und einen Abspann als separate Dateien haben. Wenn man die Abspann Datei startet, dann wird die gesamte Folge abgespielt. Startet man nur die Episodenteil-Datei, dann wird die Abspann Datei nicht verwendet.

Hard-Linking PrevUID Test Dateien

Hard-Linking gemischtes Nutzen der NextUID und PrevUID Elemente

Die folgenden drei Varianten nutzen auf sehr unterschiedliche Weise diese beiden Matroska Elemente. Es kommt dabei vor, dass eine Datei selbst keines der beiden Elemente nutzt, aber dennoch Bestandteil der Verknüpfungskette ist. Diese Varianten sind sehr hilfreich für Serien, bei denen die Folgen immer den gleichen Vor- und/oder Abspann haben.

Episoden mit Vorspann

Es gibt nur eine Vorspann Datei und viele weitere Episoden Dateien. Jede Episoden Datei nutzt die PrevUID, um die Vorspann Datei zu verknüpfen. Die Vorspann Datei nutzt keine Verknüpfungen und wird daher immer nur alleine abgespielt. Man könnte natürlich eine NextUID zuweisen, aber eben nur zu einer Episoden Datei.

Hard-Linking Serien-Vorspann Test Dateien

Episoden mit Abspann

Es gibt nur eine Abspann Datei und viele weitere Episoden Dateien. Jede Episoden Datei nutzt die NextUID, um die Abspann Datei zu verknüpfen. Die Abspann Datei nutzt keine Verknüpfungen und wird daher immer nur alleine abgespielt. Man könnte natürlich eine PrevUID zuweisen, aber eben nur zu einer Episoden Datei.

Hard-Linking Serien-Abspann Test Dateien

Episoden mit Vorspann und Abspann

Bei dieser Variante gibt es eine Vorspann und eine Abspann Datei, sowie auch weitere Episoden Dateien. Jede Episoden Datei nutzt die NextUID, um die Abspann Datei zu verknüpfen. Jede Episoden Datei nutzt die PrevUID, um die Vorspann Datei zu verknüpfen. Die Vor- und Abspann Datei haben keine Verknüpfungen und werden daher immer nur alleine abgespielt.

Hard-Linking Serien-Vorspann-Abspann Test Dateien

Probleme beim Hard-Linking

Die Test Dateien wurden mit mkvmerge aus einer "großen" Datei aufgeteilt. Mkvmerge kann nur an den Schlüsselbildern "schneiden". Weiterhin unterliegt Matroska einer Beschränkung, was dass Speichern der Audio Daten angeht. Daher ist bei sehr vielen Matroska Dateien die längste Spur-Spieldauer, die einer Audiospur.

Fast alle Player die ich getestet habe verknüpfen die Matroska Dateien so, dass alle Daten bis zum Ende verwendet werden. Das führt aber dazu, dass das Video dann "hängen" bleibt. Nur der Lav-Splitter (und Haali-Splitter) arbeiten hier besser. Ich kann es nicht genau bestätigen, aber es werden anscheinden nur solange Daten von einer Datei verwendet, solange es auch Videodaten gibt.

Das Matroska Dateien nicht richtig miteinander verknüpft sind, sieht man in den Playern sehr gut an der gesamt Spieldauer. Diese war dann immer ein paar Sekunden zu hoch. Die Test Dateien sind aber sehr gut "geschnitten", denn auch VLC kann die richtig abspielen(allerdings funktioniert die Zeitleiste nicht richtig ->VLC.bug).

Ich hatte vor einiger Zeit bereits Test Dateien für VLC mal hochgeladen. Bei diesen Dateien sind die Audiodaten länger als die Videodaten und daher "hängt" das Bild immer ein wenig.

Hard-Linking Problem Test Dateien 1

Hard-Linking Problem Test Dateien 2