So ermitteln Sie die tatsächliche Dauer einer MP3-Datei (VBR oder CBR) serverseitig

Früher habe ich die Dauer von MP3-Dateien serverseitig mit ffmpeg berechnet - was anscheinend gut funktioniert hat. Heute habe ich festgestellt, dass einige der Berechnungen falsch waren. Aus irgendeinem Grund berechnet ffmpeg die Dauer falsch, und dies scheint nur bei MP3-Dateien mit variabler Bitrate zu passieren.

Als ich dies lokal testete, bemerkte ich, dass ffmpeg zwei zusätzliche Zeilen in Grün druckte.

Befehl verwendet:

<code>ffmpeg -i song_9747c077aef8.mp3
</code>

ffmpeg sagt:

<code>[mp3 @ 0x102052600] max_analyze_duration 5000000 reached at 5015510
[mp3 @ 0x102052600] Estimating duration from bitrate, this may be inaccurate
</code>

Nach einer netten, warmen Google-Sitzung entdeckte ich einige Beiträge zu diesem Thema, aber es wurde keine Lösung gefunden.

Ich habe dann versucht, die maximale Dauer zu erhöhen:

<code>ffmpeg -analyzeduration 999999999 -i song_9747c077aef8.mp3
</code>

Danach gab ffmpeg nur die zweite Zeile zurück:

<code>[mp3 @ 0x102052600] Estimating duration from bitrate, this may be inaccurate
</code>

Aber in jedem Fall war die berechnete Dauer einfach falsch. Beim Vergleich mit VLC ist mir aufgefallen, dass dort die Dauer stimmt.

Nach weiteren Recherchen bin ich über mp3info gestolpert - welches ich installiert und benutzt habe.

<code>mp3info -p "%S" song_9747c077aef8.mp3
</code>

mp3info gab dann das zurückRICHTIG Dauer, aber nur als Ganzzahl, die ich nicht verwenden kann, da ich hier eine genauere Zahl brauche. Der Grund dafür wurde in einem Kommentar unten vom Benutzer erläutertblahdiblah - mp3info ruft einfach ID3-Informationen aus der Datei ab und führt keine Berechnungen durch.

Ich habe auch versucht, die Dauer mit mplayer abzurufen, aber genau wie ffmpeg gibt mplayer den falschen Wert zurück.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage