Exibir e somar o tempo de arquivos de vídeo e som

Considere que você tenha vários arquivos de vídeo ou de som distribuídos em diversas pastas localizadas em um mesmo diretório. Como fazer para saber quanto tempo tem cada arquivo? O script “exibe_tempo.sh” abaixo facilita esse trabalho. Ele lista todos esses arquivos e verifica a duração de cada um através do comando “avconv”, imprimindo os resultados na tela.

#!/bin/bash
## Script para exibir tempo dos vídeos de vários subdiretórios

extensao='MP4'
caminho='/path/videos'

cd $caminho
# Encontrar todos os arquivos com extensão informada no diretório informado e ordenar por nome
lista=$(find . -maxdepth 2 -name "*.$extensao" | sort)

for arq in $lista; do
	# Obter informação da duração do arquivo em HH:MM:SS.centésimos
	tempo=$(avconv -i $arq 2>&1 | grep "Duration"| cut -d ' ' -f 4 | sed s/,//)
	# Imprimir nome do arquivo e duração
	echo $arq "-" $tempo
done

Para somar o tempo de vários arquivos, pode ser feita uma adaptação no script acima para guardar em um vetor os tempos dos arquivos de uma mesma pasta. Esse vetor servirá de entrada para o script abaixo (soma_tempo.sh), que deverá somar o tempo de cada componente do vetor, informado em HH:MM:SS.

#!/bin/bash
## Script para somar os tempos de um vetor

EPOCH='jan 1 1970'
sum=0

vetor_tempo=(00:00:34 00:00:35 00:01:32)

LIMITE=`echo ${vetor_tempo[*]} | wc -w`
for ((i=0; i <= $LIMITE-1 ; i++)); do
	sum="$(date -u -d "$EPOCH ${vetor_tempo[$i]}" +%s) + $sum"
done
tempo_segundos=$(echo $sum|bc)
echo $tempo_segundos
date -d@$tempo_segundos -u +%H:%M:%S

A saída na tela será do total de segundos e o valor convertido em HH:MM:SS. Esse script é útil também para somar as horas trabalhadas em um mês, por exemplo.

Para fazer uso dos scripts, copie o conteúdo para um editor de texto simples (como o bloco de notas) e salve o arquivo com os nomes sugeridos (terminados com “.sh”). Coloque o arquivo na pasta onde estão os arquivos. Em um terminal Linux, execute o comando “bash NOME_DO_SCRIPT.sh” para ver a saída dos programas impressa na tela. Caso não tenha o programa avconv, ele pode ser instalado através do comando “sudo apt install libav-tools”.

4 comments

        1. Não, o cmd é o prompt de comandos do Windows. Esses scripts usam bash, que é uma linguagem que já vem junto com praticamente qualquer Linux. No Windows 10 tem como instalar Linux junto para usar o bash, mas aí eu nunca fiz isso.

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.