Ich transkodiere derzeit Videodaten von einer Video-DVD in x264 MP4-Dateien, aber die ursprünglichen MPEG-2-Streams scheinen seltsame Probleme zu haben. Diese Video-DVD ist eine hausgemachte digitale TV-Aufnahme (DVB-S) mit einem PVR und wird anschließend auf eine Standard-DVD-R gebrannt. Die aufgenommenen Programme werden in meinem Standalone-DVD-Player einwandfrei wiedergegeben.
Nachdem ich eine der transkodierten MP4-Dateien überprüft hatte, stellte ich fest, dass das Video an bestimmten Stellen - unabhängig vom Bereich des von mir kodierten Originalvideos - ein seltsames Ruckeln aufweist. Ein Bild friert etwa eine Sekunde lang ein. Die Anzahl der Frames bleibt korrekt, sodass es keine Probleme mit der Audiosynchronisation gibt. Es werden lediglich etwa 20 Frames durch Duplikate eines bestimmten Frames ersetzt. Dies scheint unabhängig von der von mir verwendeten Software zu geschehen. Ich habe Avidemux 2.6.3 mit nativem MPEG-2-Dekodieren oder Bereitstellen von Frames über Avisynth 2.6.0 und VirtualDub 1.9.11 mit dem MPEG-2-Plugin ausprobiert. Alle drei Methoden führten jedes Mal dieselbe Anzahl von Duplikaten desselben Rahmens an derselben Position ein.
Beim Untersuchen des Quell-VOBs habe ich diesen bestimmten Abschnitt des Streams überprüft und festgestellt, dass auch bei der Wiedergabe ein leichtes Ruckeln auftritt (getestet mit Windows Media Player, VideoLAN, MPlayer und der internen Vorschau von AviDemux), aber es ist nicht genau dasselbe Standbild . Es passiert ungefähr eine Sekunde früher im Stream als in der transkodierten Datei und friert ungefähr halb so lange ein (~ 10 Frames). Dies geschah auch unabhängig davon, ob ich das Originalvideo direkt von der DVD-R abgespielt habe oder nach dem Kopieren der VOB-Datei auf die Festplatte. Es liegt also nicht am Laufwerk.
Auf Anregung eines Freundes habe ich das VOB in seine elementaren M2V- und AC3-Streams demultiplext und die beiden dann direkt in eine neue MPEG-PS-Datei remultiplext. In der Tat verschwand das Ruckeln sowohl bei der direkten Wiedergabe der Remux-Datei als auch bei den Transcodes, die ich daraus generiere.
Das Symptom des Problems ist also gelöst, aber ich frage mich, warum das einfache Demuxen und Remuxen des Originalvideos ausreicht. Wird dabei eine Art Index neu erstellt, um ein den Originaldaten inhärentes Problem zu lösen? Aber warum ist das Einfrieren nach dem Transcodieren anders, selbst bei verschiedenen Decodierern und Codierern? und warum merke ich kein Einfrieren, wenn ich es auf einem Standalone-TV-DVD-Player wiedergebe?