unix - tengo - verificar la duración de los archivos de audio en la línea de comandos
ver memoria ram linux terminal (10)
Además de la answer de cdosborn, calcular la longitud de todos los archivos .mp3
recursivamente en las subcarpetas del directorio actual y mostrar el resultado de la suma total en days:hours:minutes:seconds
formato:
En zsh:
afinfo **/*.mp3 | awk ''/estimated duration/ { print $3 }'' | paste -sd+ - | bc | awk ''{printf("%d:%02d:%02d:%02d/n",($1/60/60/24),($1/60/60%24),($1/60%60),($1%60))}''
En bash o sh:
find . -name "*.mp3" -exec afinfo {} /; | awk ''/estimated duration/ { print $3 }'' | paste -sd+ - | bc | awk ''{printf("%d:%02d:%02d:%02d/n",($1/60/60/24),($1/60/60%24),($1/60%60),($1%60))}''
El resultado es así (7 días, 5 horas, 6 minutos, 58 segundos):
$ afinfo **/*.mp3 | awk ''/estimated duration/ { print $3 }'' | paste -sd+ - | bc | awk ''{printf("%d:%02d:%02d:%02d/n",($1/60/60/24),($1/60/60%24),($1/60%60),($1%60))}''
7:05:06:58
$
Necesito verificar la duración de un grupo de archivos de audio. ¿Hay una manera simple de hacer esto en la línea de comandos de Unix?
> duration *
Tengo la asombrosa aplicación SoX que tiene una opción llamada estadísticas que genera un conjunto de información de audio, incluida la duración. Estoy buscando una forma de obtener solo duración. Soy flexible en el formato de salida, podría ser cualquier longitud de muestra, hh: mm: ss o segundos. Este último sería mi preferencia.
Otra respuesta basada en soxi incluye los nombres de los archivos y la duración en formato de horas, minutos y segundos.
$for f in *amr; do printf "$f "; soxi -d $f; done
DGT20161216.amr 00:22:04.62
DGT20170108.amr 00:28:22.80
DGT20170117.amr 00:20:05.18
Una solución basada en mplayer de commandlinefu por syssyphus que funciona con archivos de audio y video:
sudo apt-get install mplayer
find -type f -name "*.mp3" -print0 | xargs -0 mplayer -vo dummy -ao dummy -identify 2>/dev/null | perl -nle ''/ID_LENGTH=([0-9/.]+)/ && ($t +=$1) && printf "%02d:%02d:%02d/n",$t/3600,$t/60%60,$t%60'' | tail -n 1
Obtenga la longitud total de todos los videos / audios en el directorio actual (y abajo) en H: m: s
Cambia el
*.mp3
a lo que quieras emparejar (por ejemplo,*.avi
,*.wav
), puedes eliminarlo por completo si deseas verificar todos los archivos.
Ejemplo de salida: 00:00:37
mediainfo puede hacer esto, pero mediainfo es una de esas herramientas útiles que está tan mal documentada que casi necesita saber cómo usarla para aprender a usarla (sucede mucho en el mundo de Linux).
Después de horas de pruebas y lecturas altas y bajas, finalmente logré generar una lista recursiva de nombres de archivos separados por comas y su duración en milisegundos.
cd al directorio inicial y emita el siguiente comando:
find "$(pwd)" -type f -print0 | xargs -0 -I {} mediainfo --Inform="General;%CompleteName%,%Duration%" {} > list.txt
Los resultados se enviarán a list.txt.
mediainfo
le devolverá los milisegundos de un archivo de audio. Suponiendo que el directorio actual solo tiene archivos de audio, el siguiente
mediainfo --Inform="Audio;%Duration%" "Miley Cyrus - Wrecking Ball.mp3"
Para calcular la duración de todo el audio en el directorio local, esta esencia ayudará:
shopt -s nullglob
let playlist_duration_ms=0
for song_file in *.{mp3,ogg,m4a,flac,wav}; do
playlist_duration_ms=$(expr $playlist_duration_ms + $(mediainfo --Inform="Audio;%Duration%" "$song_file"))
done
shopt -u nullglob
let playlist_duration_secs=$(expr $playlist_duration_ms / 1000)
let playlist_duration_mins=$(expr $playlist_duration_ms / 60000)
let playlist_duration_remaining_secs=$(expr $playlist_duration_secs - $(expr $playlist_duration_mins /* 60))
echo $playlist_duration_mins minutes, $playlist_duration_remaining_secs seconds
en OSX
Imprime la longitud de cada archivo de audio en el directorio actual:
afinfo * | awk ''/estimated duration/ { print $3 }''
Incluye la ruta de archivo
afinfo * | awk ''/File:/ { song=$2 } /estimated duration/ { print song, $3 }''
ffmpeg -i <audiofile> 2>&1 | grep Duration
mp3info -p "%m:%s/n" filename
le da la longitud del archivo especificado.
sox --info -D file --> duration in seconds
sox --info -d file --> duration in HH:mm:ss.ss
sox --info file --> metadata
soxi -D filename
soxi -D *
Soxi consulta metadatos de archivos de audio; D es la opción de duración. Es compatible con globbing. El hermano mayor de sox hace el procesamiento de audio en línea de comandos.