Solía calcular la duración de los archivos MP3 en el servidor utilizando ffmpeg, lo que parecía funcionar bien. Hoy descubrí que algunos de los cálculos eran incorrectos. De alguna manera, por alguna razón, ffmpeg calculará mal la duración y parece suceder solo con archivos mp3 de tasa de bits variable.Cómo obtener la duración real y real de un archivo MP3 (VBR o CBR) del lado del servidor
Al probar esto localmente, noté que ffmpeg imprimía dos líneas adicionales en verde.
Comando utilizado:
ffmpeg -i song_9747c077aef8.mp3
ffmpeg dice:
[mp3 @ 0x102052600] max_analyze_duration 5000000 reached at 5015510
[mp3 @ 0x102052600] Estimating duration from bitrate, this may be inaccurate
Después de una buena sesión, Google cálido, he descubierto algunos puestos en este, pero no se encontró una solución.
Luego trató de aumentar la duración máxima:
ffmpeg -analyzeduration 999999999 -i song_9747c077aef8.mp3
Después de esto, ffmpeg regresó sólo la segunda línea:
[mp3 @ 0x102052600] Estimating duration from bitrate, this may be inaccurate
Pero en cualquier caso, la duración calculada era simplemente errónea. Al compararlo con VLC noté que la duración es correcta.
Después de más investigación tropecé con la información mp3 que instalé y usé.
mp3info -p "%S" song_9747c077aef8.mp3
MP3Info luego regresó a la duración CORRECTO, pero sólo como un entero, que no puedo utilizar como necesito un número más exacto aquí. La razón de esto fue explicada en un comentario más abajo, por usuario blahdiblah - mp3info simplemente está extrayendo la 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.
http://www.id3.org/ –
Gracias, pero no puedo suponer la información de duración adecuada en los encabezados MP3s/etiquetas ID3, incluso si quisiera. Tengo que calcularlo para obtener un resultado 100% preciso. – SquareCat
Ahh, entonces creo que tendrías que ir a través del mp3, y encontrar cada fotograma, luego calcular una duración de eso. –