
Tengo un directorio lleno de archivos de video .MP4. Me gustaría ver una lista que tenga el nombre de cada archivo y su duración en minutos y segundos. Algo como esto:
one.mp4 4:34
two.mp4 2:23
three.mp4 8:34
four.mp4 0:43
He probado muchos administradores de archivos pero no encuentro ninguno que me muestre esta información.
Las soluciones que involucren a la terminal estarían bien.
Respuesta1
Prueba esto: (inspiración desuperusuario.com)
for f in *.mp4
do
echo -n "$f "
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 -sexagesimal "$f"
done
Sin embargo, la salida tendrá el formato HH:MM:SS.MILLISECONDS. Si omite la opción -sexagesimal, obtendrá la duración en segundos.
Para el formulario de salida deseado HH:MM, podrías hacer algo como esto:
for f in *.mp4
do
echo -n "$f "
dur=`ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$f"`
min=`echo "$dur/60" | bc`
sec=`echo "$dur%60/1" | bc`
echo "$min:$sec"
done
Respuesta2
avprobe
del paquete libav-tools
hace esto.
Salida de muestra avprobe myfile.mp4
avprobe versión 10.1-6:10.1-1~bpo70+1, Copyright (c) 2007-2014 los desarrolladores de Libav construido el 6 de junio de 2014 18:25:37 con gcc 4.7 (Debian 4.7.2-5) [mov,mp4,m4a,3gp,3g2,mj2 @ 0x90f4720] múltiples entradas de la lista de edición, puede ocurrir desincronización a/v, parche bienvenido [mov,mp4,m4a,3gp,3g2,mj2 @ 0x90f4720] múltiples entradas de la lista de edición, puede ocurrir desincronización a/v, parche bienvenido Entrada #0, mov,mp4,m4a,3gp,3g2,mj2, de 'Zieleinlauf_2013_1886.mp4': Metadatos: marca_mayor: isom versión_menor: 512 marcas_compatibles: isomiso2avc1mp41 codificador: Lavf54.2.100 Duración: 00:00:14.09, inicio: 0.021995, tasa de bits: 4009 kb/s Transmisión #0.0(und): Vídeo: h264 (Alto), yuv420p, 534x300, 3854 kb/s, 25 fps, 25 tbn, 50 tbc (predeterminado) Transmisión #0.1(und): Audio: aac, 22050 Hz, mono, fltp, 127 kb/s (predeterminado) # salida de sonda av