This page in English

Stand 28.09.03

MPEG Header Repair

 

Dieses Tool restauriert die Header von MPEG-Sequenzen, deren Dateinamen fortlaufend durchnummeriert sind. Solche durchnummerierten MPEG-Sequenzen werden z.B. von dem Hardware-Encoder WinTV-PVR von Hauppauge erzeugt, wenn man einstellt, dass die Aufnahme in Blöcke fester Größe unterteilt wird. In Verbindung mit dem Hardware-Decoder XCard von Sigma Designs kann man diese Blöcke zeitversetzt (Timeshift) abspielen, noch während die Aufnahme läuft.

Auch die meisten Hardware-Encoder bieten einen Timeshift-Modus; damit kann man das Video-Signal jedoch nicht auf dem TV-Ausgang der XCard ausgeben. Benutzt man dagegen für Aufnahme und Wiedergabe ver­schiedene Aplikationen, so besteht bei vielen MPEG/DVD-Playern das Problem, dass diese während der Aufnahme keinen Zugriff auf den MPEG-Stream haben.

Die Lösung ist, die Aufnahme nach z.B. 10 Minuten in einer neuen Datei fortzu­setzen. Damit können mit einem maximalen Zeitversatz von 10 Minuten alle bis­herigen Blöcke abgespielt werden. Für die Wiedergabe im Timeshift benötigt man hierbei einen MPEG/DVD-Player (wie z.B. die Xcard), der beim Öffnen einer Playlist nicht überprüft, ob die enthaltenen Dateien bereits existieren. So läuft mit einer entsprechend vorbereiteten Playlist die Wiedergabe ohne weitere Ein­griffe bis zum Ende durch.

Bei der WinTV-PVR kann man über den Registry-Key „File_Record_Size“ (REG_DWORD) - „HKEY_LOCAL_MACHINE\SOFTWARE\Hauppauge\hcwSlipWriter“ die Datei­größe in MByte einstellen, bei der ein neuer Block begonnen wird. Dabei gibt es aller­dings das Problem, dass der MPEG-Stream einfach nur in der nächsten Datei fortgesetzt, so dass die Blöcke, die auf den ersten folgen unter Umständen keinen korrekten MPEG-Header enthalten.

Dies führt dazu, dass viele MPEG/DVD-Player Probleme haben, diese Blöcke über­haupt zu öffnen. Mit einem Hex-Editor kann man diese Blöcke „reparieren“, indem man den korrekten MPEG-Header des ersten Blocks an den Anfang der Folgeblöcke kopiert. Die wenigen Bytes des MPEG-Streams, die dabei verloren gehen, kann man vernachlässigen.

HeaderRepair automatisiert diesen Vorgang, und prüft alle 200 ms, ob für den aktuellen Block Schreibzugriff besteht. Sobald dies der Fall ist, schreibt HeaderRepair einen korrekten MPEG-Header an den Anfang des aktuellen Blocks und geht zum nächsten Block über.

Den korrekten MPEG-Header lädt HeaderRepair aus der Datei „header.mpeg. Diesen kann man anpassen, indem man mit einem Hex-Editor die gewünschten Bytes in die Datei „header.mpeg” schreibt. HeaderRepair erwartet diese im selben Verzeichnis und liest den Header bis zum Ende der Datei (EOF). Der Header muß dabei jedoch größer gleich 64 Byte und keiner gleich 2048 Byte sein!

 

Download von HeaderRepair deutsch - 26,4 KByte

Download von HeaderRepair englisch - 26,4 KByte

 

Kommentare und Kritik bitte an Info@seconis.net.

 

© 2003, Hendrik Utsch