Kategorien

Druckansicht des Beitrags Druckansicht des Beitrags

MP3-Dateien auf Fehler testen

Nachdem ich meine Daten von einer Festplatte retten konnte, bei der aber teilweise allerdings schon Sektoren überschrieben worden waren, wollte ich die geretteten MP3s auf Fehler testen. Dazu fand ich drei Programme – mp3check, checkmp3 und mp3val. Unter Ubuntu lassen sich diese mit

sudo apt-get install mp3check checkmp3 mp3val

installieren.
Ich wollte nun alle mp3s finden, bei denen keines der Programme einen Fehler meldete. Mit checkmp3 habe ich zunächst alle Dateien prüfen lassen und das Resultat in die Datei checkmp3.log schreiben lassen:

find /path/to/mp3s -type f -name '*.mp3' -print0 | xargs -0 -r -n 1 -i sh -c 'checkmp3 -p -a -e "{}" 2>/dev/null | grep FILE_NAME | tee -a checkmp3.log || /bin/true'

Anschließend kann man mit

cat checkmp3.log | grep -v 'BAD_FRAMES 0' | awk -F '\t' '{print $1}' | sed 's/FILE_NAME //g' > checkmp3_bad_frames.log

diejenigen Dateien filtern und in die Datei checkmp3_bad_frames.log schreiben, die fehlerhafte Frames aufweisen.
Analog bin ich mit mp3check und mp3val verfahren und habe die fehlerhaften Dateien in mp3check.log bzw. mp3val.log schreiben lassen:

find /path/to/mp3s -type f -name '*.mp3' -print0 | xargs -0 mp3check -e -g mp3check.log > /dev/null
find /path/to/mp3s -type f -name '*.mp3' -print0 | xargs -0 mp3val -si -lmp3val.log

Analog zu checkmp3.log habe ich mittels

awk -F '"' '!/No supported tags in the file/ {print $2}' mp3val.log > mp3val_filenames.log

aus der mp3val.log noch die Dateinamen herausgefiltert und in mp3val_filenames.log gespeichert. Für MP3-Dateien ohne Tags wird von mp3val eine Warnung ausgegeben, deswegen habe ich die Dateien ohne MP3-Tag herausgefiltert.
Nachdem man nun 3 Dateien mit fehlerhaften Dateiennamen hat, wollte ich diese konsolidieren und als Resultat die Datei failed_mp3s erhalten. Das habe ich so geschafft:

cat mp3val_filenames.log mp3check.log checkmp3_bad_frames.log | sort | uniq > failed_mp3s

Durch ein

find /path/to/mp3s -type f -name '*.mp3' > mp3files

erzeugt man eine Datei mit allen MP3s, die überprüft wurden und durch ein

cat mp3files failed_mp3s | sort | uniq -u > correct_mp3s

erhält man schließlich mit der Datei correct_mp3s eine Liste derjenigen Dateien, die von keinem der Testprogramme als fehlerhaft erkannt wurden.
Wenn man die fehlerfreien Dateien nun in ein Verzeichnis kopieren möchte kann man das am einfachsten mit

cd path/to/mp3s
cat /path/to/correct_mp3s | sed 's/\/path\/to\/mp3s/./g' | tr '\n' '\00' | cpio -0 -p -d /path/to/healthy_mp3s/

erledigen.
Mit dem Checkmate Tool mpck kann man übrigens auch noch fehlerhafte MP3-Dateien finden und auf bonzoli.com ist ebenfalls eine Anleitung zur „Reinigung“ der MP3-Sammlung.

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>