ChillClip hat geschrieben:Ok. Warum aber haben dann diverse Schnittprogramme mit den Teildateien ein Problem und verschlucken zu Beginn ein paar Frames? Soweit ich mich erinnere war es sogar so, dass bei Ton- und Audiospur unterschiedlich viele Frames verschluckt wurden ...
Dazu muss ich etwas weiter ausholen.
Ein Transportdatenstrom (TS) enthält verschiedene logische Datenkanäle, auf denen parallel unterschiedliche Informationen transportiert werden. Jeder Datenkanal wird durch einen sog. Packet Identifier (PID) eindeutig gekennzeichnet. Grundsätzlich werden sog. Service Informationen (SI) und Packetized Elementary Streams (PES) unterschieden. Die SI-Datenstrukturen enthalten Informationen über die im TS befindlichen Dienste und deren Datenströme. Auf PID 0 befindet sich der sog. Program Allocation Table (PAT) und dieser verweist auf die PID des Program Map Table (PMT). Im PMT sind die PIDs der PES abgelegt. Die PES enthalten die eigentlichen Audio und Videodatenströme.
Damit also ein Dekoder (z.B. eine Schnittsoftware) in einer MTS-Datei irgendetwas finden kann, müssen zuerst die PAT, dann die PMT ausgelesen und letztendlich die Audio- und Videodatenströme dekodiert und zusammengeführt werden. Damit das gelingt, enthält der PES-Header einen Zeitstempel, den Presentation Time Stamp (PTS). Der Dekoder fügt also nun die Audio und Videodaten so zusammen, dass der PTS des Audiosignals im Intervall zweier angrenzender Video-Pakete liegt (AV-Synchronisation).
Die 192 Bytes langen TS-Pakete des Datenstroms enthalten maximal 184 Bytes Nutz- oder Fülldaten (Padding Bytes). Die syntaktische Struktur der darüber liegenden SI- und PES-Datenstrukturen ist in der Regel jedoch länger als 184 Bytes, wodurch ein Dekoder immer einen kontinuierlichen Datenstrom erwartet, aus dem er die größeren Datenstrukturen zusammensetzen kann. Wird nun ein Transportdatenstrom in einer Datei unterbrochen und in einer neuen Datei fortgesetzt, so laufen die SI- und PES-Datenstrukturen selbstverständlich dort kontinuierlich weiter.
Würde ein Dekoder nach der Unterbrechung ohne Kenntnis der vorangegangenen Pakete die Dekodierung beginnen, so würde er so lange Daten verwerfen, bis neue SI- und PES-Daten signalisiert werden. Dies führt zu unvollständig dekodierten Daten, die am Ende der alten Datei begannen, jedoch nicht fertig dekodiert werden konnten. Die Daten der neuen Datei stehen dann erst wieder nach dem Auslesen von PAT und PMT, sowie nach der A/V-Synchronisation zur Verfügung. Hierdurch entsteht eine Lücke, da einerseits Daten verloren gegangen sind und andererseits die AV-Synchronisation so lange Daten verwirft, bis der PTS wieder passt.
So einfach ist das.
Deti