Erro ao usar o ffprobe [RESOLVIDO]

1. Erro ao usar o ffprobe [RESOLVIDO]

Andre Rissate
andre_rissate

(usa Linux Mint)

Enviado em 22/11/2018 - 19:41h

Boa noite, galera linux! Fiz um script para calcular os segundos de todos os vídeos de uma determinada pasta. Ele dá a soma de todos os vídeos no final. Mas tenho um problema: eles dá Sintax error por causa dos nomes dos arquivos.
Vou mandar um exemplo de nome de arquivo que ele dá erro: "1-1) MEDCURSO 2016 - Cirurgia - Trauma I - [PRIMEIRO ATENDIMENTO AO POLITRAUMATIZADO].mp4"
Se eu renomeio todos eles para, por exemplo, 1.mp4, 2.mp4, etc, ele calcula certinho sem dá erro.
Acontece que eu não quero ter que renomear os arquivos. Alguém sabe a solução? Vou anexar aqui o script para análise. Desde já agradeço.

Script:

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

extensao='mp4'
caminho='/path/videos'

soma=0
#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=$(ffprobe -show_format $arq 2>/dev/null | grep duration | cut -d'=' -f2)
soma=$(echo "$soma+$tempo" | bc)
# Imprimir nome do arquivo e duração
echo $arq "-" $tempo >> log.txt
done
echo $arq "-" $tempo "->" $soma
echo $arq "-" $tempo "->" $soma >> log.txt




  


2. Re: Erro ao usar o ffprobe [RESOLVIDO]

Fábio Berbert de Paula
fabio

(usa Debian)

Enviado em 22/11/2018 - 21:20h

Essa sintaxe aqui deve funcionar, botei o find e o while na mesma linha, já jogando cada arquivo para sua variável arq:

find . -maxdepth 2 -name "*.$extensao" -print0 | sort | while IFS= read -r -d '' arq; do 


Depois procure saber sobre a variável de ambiente IFS.


3. Re: Erro ao usar o ffprobe [RESOLVIDO]

Andre Rissate
andre_rissate

(usa Linux Mint)

Enviado em 22/11/2018 - 23:14h

Obrigado, Fábio. Vou arcar como resolvido
Um amigo meu tb me respondeu nesse intervalo. Vou deixar a solução dele aqui também, caso alguém queira.

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

extensao='mp4'
caminho='/path/videos'

tempos=$(find . -maxdepth 2 -name "*.$extensao" -exec ffprobe -show_format {} 2> /dev/null \; | grep duration | cut -d'=' -f2)
echo -e "$tempos" | awk '{ s+=$1 } END { print s }'






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts