Tengo un montón de archivos mp3 con varias longitudes. Quiero reducirlo a 50% -60% de longitud. Dice, de 1 minuto a 30 segundos. Debería ser trivial usando ffmpeg. Pero no sé cómo determinar su longitud original como base para procesar usando ffmpeg.
¿Alguien tiene una idea?
\n
para imprimir nueva línea también.> mp3info -p "%S\n" sample.mp3
// tiempo total en segundosffmpeg
imprimirá todo lo que sabe sobre el archivo si no le da otros argumentos. Usegrep
para quitar todo menos la "Duración":También podrías usar
mplayer
. Grep para la línea "ID_LENGTH =":fuente
TOTLENGTH=0; for f in *.mp3; do LENGTH=$(mplayer -ao null -identify -frames 0 "$f" 2>&1 | awk -F= '/ID_LENGTH/ {print $2}' | awk -F. '{print $1}'); TOTLENGTH=$(($TOTLENGTH + $LENGTH)); done; echo $TOTLENGTH
imprimir la longitud total del audio en todos los archivos, en segundos. Probablemente se pueda hacer de manera más eficiente, pero desde que lo escribí como algo único, fue lo suficientemente bueno para mis necesidades. (La segunda invocación de awk elimina los decimales, por lo que el resultado no es 100% exacto, pero de nuevo, lo suficientemente bueno para mis necesidades.)Estimating duration from bitrate, this may be inaccurate
. Creo que esta respuesta solo es válida con MP3 de velocidad de bits constante .Curiosamente, la aplicación EXIFTool ofrece la duración de MP3 como la última línea.
fuente
Solo otra forma de obtener la duración solo usando
ffmpeg
ygrep
:fuente
Las soluciones que usan
ffmpeg
me parecen un poco frágiles, ya que analizan resultados que no están diseñados como una interfaz. Dicho esto, probablemente continuarán trabajando durante varios años independientemente.ffmpeg
viene con una herramientaffprobe
para obtener información sobre archivos de audio (muchos formatos, incluido mp3) y puede producir una salida legible por máquina. El siguiente comando obtiene la duración de la canción.fuente
ffprobe -show_entries stream=duration -of compact=p=0:nk=1 -v fatal song.mp3
Personalmente uso Mplayer para extraer la información, principalmente porque ya la tengo instalada y no me molesto en instalar un nuevo software innecesariamente. La ventaja de esto es que no está limitado a archivos mp3 en particular, y debería funcionar con cualquier archivo multimedia que Mplayer pueda manejar. El siguiente one-liner devolverá la longitud de la pista en segundos.
fuente
Puede usar ffmpeg para obtener la duración del archivo. Solo usa:
fuente
Tuve el mismo problema y encontré que el comando mplayer (goldPseudo) funcionó bien, pero luego descubrí que si abres un álbum en RhythmBox verás que su línea de estado proporciona la cantidad de pistas, el tiempo total de reproducción y el tamaño del disco.
fuente
Aquí está mi simple uso de la referencia anterior.
Envío ese valor a la variable mp3_full_length
Gracias por encima de la gente! Uso tus ideas y conocimientos Gracias por leer, ¡Que tengas un buen día! ;)
fuente