Mit MPlayer Fehler in Videos finden
am 21.07.2007 um 17:05
Ausgangslage
Ich hatte zwei AVI-Dateien, die aufs Byte genau gleich gross waren und den gleichen Film beinhielten (ui, das Wort ist ja ungewohnt so in der Vergangenheit). Die SHA1-Prüfsumme war aber nicht gleich, was heisst dass sich vermutlich bei der Übertragung einer der Dateien irgendwo ein kleiner Fehler eingeschlichen hatte. Wie weiss ich nun, welche Datei fehlerhaft ist, also welche ich löschen kann? Diese Frage ist natürlich nur wichtig, wenn man perfektionistisch veranlagt ist ;).
Lösung
MPlayer muss wieder mal her. Zuerst dachte ich daran, den Film einfach in höchster Geschwindigkeit abzuspielen, aber da Faktor 4,35 anscheinend das schnellste ist, geht das noch zu lange.
Zweiter Ansatz: Da beim Kodieren eines Videos dieses ja zuerst dekodiert werden muss, kann man den Film einfach mit einem möglichst schnellen Codec konvertieren und das Resultat verwerfen. Dazu noch stdout abschalten, damit nur die Dekodierfehler angezeigt werden. Mit mencoder geht das so:
mencoder video1.avi -ovc raw -oac pcm -o /dev/null > /dev/null
Beim zweiten Video gab’s einen Fehler von wegen ungültiges MP4-Frame, beim ersten nicht, also ist klar welches gelöscht werden kann. Vielleicht gibt es noch eine bessere Lösung, aber die funktionierte eigentlich ganz gut, obwohl sie nicht so elegant ist.

3 Kommentare
21.07.07 18:04
Haha.. auf so Ideen kommst nur du :D. Gut, das mplayer ziemlich bald bei Fehler meckert wusste ich eigentlich auch, da kanns sein, dass der Film wunderbar läuft und die Musik in perfekter Qualität aus den Boxen dröhnt und Mplayer etwa drei vier Fehler pro Sekunde ausgibt :).
13.08.07 16:27
Fragt sich mit was du files runterlädst… jedes einzelne ‘chunk’ hat doch eine checksumme für sich und wird verworfen und neu runtergeladen wenn diese nicht stimmt… ööh?
16.08.07 17:40
Es handelte sich dabei um einen Film, von dem ich mehrere verschiedene Versionen hatte. Nicht die Übertragung ging schief, sondern der einte Film war schon vor der Übertragung kaputt.