Wie kann ich die falsche MP3-Dauer korrigieren?

22

Ich habe eine Reihe von Songs in meiner Musikbibliothek, die falsche Werte für die Dauer anzeigen und daher nur teilweise in Clementine abgespielt werden. In Banshee und einigen anderen Spielern zeigen sie unterschiedliche Dauerwerte und spielen manchmal das ganze Lied.

Gibt es eine Möglichkeit, das Problem zu beheben, ohne das Lied "neu codieren" zu müssen?

RolandiXor
quelle

Antworten:

24

MP3 Diags können falsche Laufzeiten (und andere Fehler) beheben. Es ist Open Source und in den Repositories. Es ist ein GUI-Tool.

Installation

sudo apt-get install mp3diags mp3diags-doc

Eine weitere Option ist MP3val , die entweder über die Kommandozeile oder über die GUI verwendet werden kann:

Installation

sudo apt-get install mp3val

Anwendungsbeispiel

mp3val damaged.mp3 -f -t

-f: Fehler beheben,: -tOriginal-Zeitstempel beibehalten

Phoibos
quelle
Das hat bei mir funktioniert. Ich verwende cat, um Hörbuchteile in einer Datei zu kombinieren ( cat 1.mp3 2.mp3 > out.mp3) und das funktioniert gut für die Wiedergabe, aber fast jeder Spieler wird mit den Zeitstempeln verrückt und mediainfozeigt sogar die Dauer von der ersten Datei anstatt der kombinierten.
Blockloop
catist weniger als ideal für Aufgaben wie das Kombinieren von MP3s. Ein besserer Weg: http://superuser.com/questions/314239/how-to-join-merge-many-mp3-files
phoibos
Warum denkst du, dass? MP3-Dateien sind nicht viel mehr als rohe Streams und sie sind fast der perfekte Kandidat für catnebenbei triviale Nebenwirkungen, die durch eine einfache Neubewertung der Xing-Header-Daten behoben werden. Auch ohne mp3val können die Dateien auf jedem Player abgespielt werden, den ich durchgesendet habe. catist extrem effizient und VIEL schneller als das Umcodieren mit ffmpeg. Auch mit dem hinzugefügten Befehl mp3val.
Blockloop
ffmpegmit concatund -acodec copywird nicht neu codiert - es kopiert nur die Streams (so ist es schnell), sondern erstellt an erster Stelle eine richtige Datei (ohne dass unnötige Header- und Tag-Daten mehrmals in den resultierenden Dateien erscheinen).
Phoibos
10

Wenn Sie nichts Neues installieren möchten, versuchen Sie es mit ffmpeg :

ffmpeg -i file_orig.mp3 -acodec copy file_fixed.mp3
Alcaro
quelle
Perfekte Lösung, funktioniert auch, wenn die falsche MP3-Datei von ffmpeg selbst erstellt wurde!
Pierpaolo Cira
Dies funktionierte tatsächlich für mich, als die mp3valund mp3checkLösungen nicht. (Nur um sicherzugehen, es wird nicht neu codiert, oder?)
Noldorin
Mit -acodec copy wird nicht neu codiert. Wenn Sie überprüfen möchten, versuchen Sie es mit und ohne und überprüfen Sie, wie schnell es geht.
Alcaro
1

Abgesehen von den VBR-Headern, die nicht mit dem tatsächlichen Audio übereinstimmen (das Sie mp3valwie in der anderen Antwort erwähnt korrigieren würden ), kann dies auch daran liegen, dass eine MP3-Datei mit einem ID3-Tag einen falschen Wert für das TLENTag aufweist. Sie können dies mit dem mid3v2Tool aus dem mutagenPaket beheben , um das Tag zu entfernen (anscheinend ist es optional):

$ mid3v2 --delete-frames=TLEN filename.mp3

Der Musik-Player Quodlibet verfügt auch über ein praktisches Plugin "Fix MP3 Duration", mit dem Sie dies tun können.

(Entnommen aus den häufig gestellten Fragen zu Quodlibet: http://quodlibet.readthedocs.org/en/latest/guide/faq.html )

nedned
quelle
1

mp3check hat bei mir auch mit wildcards perfekt geklappt.

sudo apt-get install mp3check

mp3check {filename or wildcard} --cut-junk-start --cut-junk-end --fix-headers
Dmitry Orlov
quelle
geholfen, wenn Windows Media Player falsche MP3-Datei Dauer zeigte
Mantas D
WARNUNG Wenn Sie ID3v2-Tags, Cover- Grafiken usw. haben, müssen Sie sich dieser Probleme sehr bewusst sein (ich habe es auf die harte Tour gelernt) source / mp3check / + bug / 1348223
digitaltoast