Cómo obtener la duración real y real de un archivo MP3 (VBR o CBR) del lado del servidor

Solía ​​calcular la duración de los archivos MP3 del lado del servidor usando ffmpeg, que parecía funcionar bien. Hoy descubrí que algunos de los cálculos estaban equivocados. De alguna manera, por alguna razón, ffmpeg calculará mal la duración y parece que solo ocurre con archivos mp3 de velocidad de bits variable.

Al probar esto localmente, noté que ffmpeg imprimió dos líneas adicionales en verde.

Comando utilizado:

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

ffmpeg dice:

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

Después de una sesión de Google agradable y cálida, descubrí algunas publicaciones sobre esto, pero no se encontró ninguna solución.

Entonces traté de aumentar la duración máxima:

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

Después de esto, ffmpeg devolvió solo la segunda línea:

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

Pero en cualquier caso, la duración calculada era simplemente errónea. Comparándolo con VLC noté que allí la duración es correcta.

Después de más investigaciones, me topé con mp3info, que instalé y usé.

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

mp3info luego devolvió elCORRECTO duración, pero solo como un número entero, que no puedo usar porque necesito un número más preciso aquí. La razón de esto fue explicada en un comentario a continuación, por usuarioblahdiblah - mp3info simplemente está extrayendo información ID3 del archivo y no está realizando ningún cálculo.

También intenté usar mplayer para recuperar la duración, pero al igual que ffmpeg, mplayer está devolviendo el valor incorrecto.

Respuestas a la pregunta(4)

Su respuesta a la pregunta