Ich hatte kürzlich einen Festplattenfehler und konnte meine Musikdateien nicht retten. Da mir nicht genügend Speicherplatz zur Verfügung stand, um eine vollständige Sicherung der Festplatte zu erstellen, habe ich es versucht cp
so viele Titel wie möglich, aber jetzt stehen mir einige Dateien zur Verfügung, die vorzeitig enden.
Habe ich schon gefunden diese Antwort um herauszufinden, "die Liedlänge" und dieses Werkzeug das tut das gleiche. Für eine defekte Datei bekomme ich folgende Ausgabe:
ffmpeg -i broken.mp3 2>&1 | grep Duration
Duration: 00:04:18.14, start: 0.025057, bitrate: 92 kb/s
mp3_check -a broken.mp3 2>&1| grep SONG
SONG_LENGTH 01:43.05
So ffmpeg
scheint auf einige Metadaten angewiesen zu sein (04:18 ist die Dauer, die auch in meinem Media Player angezeigt wird), während mp3_check
scheint tatsächlich die ganze Datei zu lesen. Ich könnte damit ein Skript schreiben, das mp3 abdeckt, aber:
Gibt es eine einfachere Lösung als einen Vergleich? ffmpeg
und mp3_check
Ausgabe, um defekte Dateien zu finden?
Wie würde ich das mit Ogg-Dateien machen, wo nein mp3_check
ist verfügbar?
Antworten:
Dies ist das Skript, das ich jetzt verwende:
Die Dauer wird von gemeldet
ffmpeg
ist immer länger als der vonmp3_check
undmp3info
. Manchmal gibt es auch einen Unterschied von 1 Sekunde.mp3info
ist als Paket für einige Linux-Distributionen verfügbar (Ubuntu, Arch, ...?),mp3_check
muss aus Quelle erstellt werden.quelle
mp3_check_dur
sollte durch ersetzt werdenmp3info_dur
im$((ffmpeg_dur - mp3_check_dur))