Ich wollte wissen warum sie identisch kodiert sein müssen, um die Technik dahinter zu verstehen.
Du meinst ja bestimmt nicht nur den gleichen Codec, sondern auch die identischen Einstellungen.
Du kannst nicht zwei unterschiedliche Schuhe tragen, würde ja doof aussehen. Du kannst aber 2 gleiche Schuhe tragen die zueinander passen.
Die zwei Schuhe haben an sich immer gleiche Charakteristika. z.B. die Schuhegröße ist identisch oder sie sind aus dem gleichen Material angefertigt. Aber sie können auch Unterschiede haben wie z.B. ein für Links, den anderen für rechts. Oder du läufst mit einem in eine Matschpfütze und der andere bleibt sauber.
So verhält es sich mit den Videocodecs auch.
Die Qualität ist wie mit der Matschpfütze und kann und darf sich auch unterscheiden. Sprich jedes Video darf eine Unterschiedliche Bitrate haben.
Wie der Schuh angefertigt wurde, ob nun für Links oder Rechts, ist bei nem Codec das Verfahren wie Encodiert wurde. Ob nun mit Mainconcept oder CRF etc.
Und dann gibt es die festen Charakteristika, wie z.B. Auflösung, FPS, Farbraum, Farbmatrix, usw.
Stimmen die nicht, passen sie einfach nicht zueinander.
Videos die du halt ohne erneutem Encodieren schneiden möchtest, müssen exakt identisch codiert werden, bis halt auf einige kleine Abweichungen wie Bitrate oder Verfahren. Die Hauptsache ist das alles andere identisch sein muss damit die beiden als ein Stream (ein Paar, aus der Seite der Schuhe ^^) fungieren. Denn dieser Stream wird später in einem Container wie MP4 oder MKV nur einen festen Header haben und nicht 2 oder mehr für diesen einen Stream.
Stell dir vor du würdest eine Musiksammlung auf deinen Rechner haben. Alles MP3 Dateien und 2 FLAC Dateien. Und jetzt kommst du auf die Idee alles zusammen zu wurschteln als eine Musikdatei.
Was brauchst du?
A) ein Decoder der alle Musikdaten entschlüsseln und dekomprimieren kann.
B) Frequenz, Sampletiefe und Kanalanzahl müssen identisch sein
Und erst dann kannst du sie alle zusammen encodieren lassen mit einen neuen Codec. Wie z.B. MP3 oder FLAC
Und das macht MKVMerge halt nicht. MKVMerge kopiert einfach. ![]()
Da kommt die Frage auf,
warum der Encoder nicht feststellen könnte, dass ab Frame X Video 2 beginnt, dessen Informationen ausliest und dann
1:1 wieder so herstellt.
Der Encoder stellt stellt gar nix fest, das macht dann wenn schon der Decoder.
Aber in deinem Falle wird ja nix kodiert, sondern kopiert. MKVMerge kann ja nur muxen, zusammensetzen und aufteilen. Da er aber nicht transkodieren kann, kopiert er halt nur.
Beim muxen fügt er mehrere Streams als Spur hinzu, beim Zusammensetzen kopiert er aus dem Video1 einen Stream aus dem Videocontainer mit der ID1 mit dem aus dem Video2 befindlichen Stream aus dem Videocontainer mit der ID1 zusammen. Dabei dürfen diese nicht unterschiedlich sein.
Wäre ja auch total bescheuert wenn dein Videoplayer auf einmal ein Video vor sich hat das erst 15min abspielt und auf einmal nicht mehr, weil ein anderer Codec übernimmt den du nicht hast oder dein Video wird deformiert, weil die Daten nicht mehr den aus dem Header entsprechen.
Und aufteilen kann MKVmerge auch noch. Einfach indem er an I-Frames (den Schlüsselbildern) auftrennt. Und diese I-Frames müssen im Video auch erst einmal in der GOP stehen.
Eine GOP die nicht aus Schlüsselbildern besteht kann niemals auf die ms genau geschnitten werden.