
Tenho um diretório cheio de arquivos de vídeo .MP4. Gostaria de ver uma lista que contenha o nome de cada arquivo e sua duração em minutos e segundos. Algo assim:
one.mp4 4:34
two.mp4 2:23
three.mp4 8:34
four.mp4 0:43
Eu tentei muitos gerenciadores de arquivos, mas não consigo encontrar um que me mostre essas informações.
Soluções que envolvem o terminal seriam adequadas.
Responder1
Experimente isto: (inspiração desuperusuário.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
No entanto, a saída estará no formato HH:MM:SS.MILLISECONDS. Se você deixar de fora a opção -sexagesimal, obterá a duração em segundos.
Para o formato de saída desejado HH:MM, você poderia fazer algo assim:
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
Responder2
avprobe
do pacote libav-tools
faz isso.
Exemplo de saída avprobe myfile.mp4
avprobe versão 10.1-6:10.1-1~bpo70+1, Copyright (c) 2007-2014 os desenvolvedores do Libav construído em 6 de junho de 2014 18:25:37 com gcc 4.7 (Debian 4.7.2-5) [mov,mp4,m4a,3gp,3g2,mj2 @ 0x90f4720] múltiplas entradas da lista de edição, pode ocorrer dessincronização de A/V, patch bem-vindo [mov,mp4,m4a,3gp,3g2,mj2 @ 0x90f4720] múltiplas entradas da lista de edição, pode ocorrer dessincronização de A/V, patch bem-vindo Entrada #0, mov,mp4,m4a,3gp,3g2,mj2, de 'Zieleinlauf_2013_1886.mp4': Metadados: marca_maior: isom versão_menor: 512 marcas_compatíveis: isomiso2avc1mp41 codificador: Lavf54.2.100 Duração: 00:00:14,09, início: 0,021995, taxa de bits: 4009 kb/s Stream #0.0(und): Vídeo: h264 (Alto), yuv420p, 534x300, 3854 kb/s, 25 fps, 25 tbn, 50 tbc (padrão) Stream #0.1(und): Áudio: aac, 22050 Hz, mono, fltp, 127 kb/s (padrão) #saída do avprobe