significa que mejor kbps diferencias cual calidad 70k ffmpeg mp3 duration

ffmpeg - que - mejor calidad de audio mp3



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

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 ocurrir solo con archivos mp3 de velocidad de bits variable.

Al probar esto localmente, noté que ffmpeg imprimió 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 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:

ffmpeg -analyzeduration 999999999 -i song_9747c077aef8.mp3

Después de esto, ffmpeg devolvió solo 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. Comparándolo con VLC noté que allí la duración es correcta.

Después de más investigación, tropecé con mp3info, que instalé y usé.

mp3info -p "%S" song_9747c077aef8.mp3

mp3info luego devolvió la duración CORRECTA , pero solo como un número entero, que no puedo usar porque necesito un número más preciso aquí. La razón para esto fue explicada en un comentario a continuación, por el usuario blahdiblah - 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.


Extendiendo la solución de LordNeckbeard. Para obtener solo estadísticas puedes agregar flags -v quiet -stats

ffmpeg -v quiet -stats -i input.mp3 -f null -


Finalmente encontré una solución adecuada para este problema utilizando sox, que devuelve la información correcta.

sox file.mp3 -n stat Samples read: 19321344 Length (seconds): 219.062857 Scaled by: 2147483647.0 Maximum amplitude: 1.000000 Minimum amplitude: -1.000000 Midline amplitude: -0.000000 Mean norm: 0.141787 Mean amplitude: 0.000060 RMS amplitude: 0.191376 Maximum delta: 0.947598 Minimum delta: 0.000000 Mean delta: 0.086211 RMS delta: 0.115971 Rough frequency: 4253 Volume adjustment: 1.000

Duración (segundos): 219.062857


Puedes decodificar el archivo completamente para obtener la duración real:

ffmpeg -i input.mp3 -f null -

La segunda a la última línea de la salida de la consola mostrará algo como:

size=N/A time=00:03:49.12 bitrate=N/A

Donde el time es la duración real. En este ejemplo, todo el proceso tomó aproximadamente 0,5 segundos.