use o comando find para conversão recursiva usando ffmpeg

use o comando find para conversão recursiva usando ffmpeg

Como posso usar o seguinte script pararecursivamenteconverta um diretório contendo .mp4to .png(apenas 1 quadro).

No momento, ele apenas converte o diretório. Não é recursivo.

for i in *.mp4
do name=`echo "$i" | cut -d'.' -f1`
echo "$name"
ffmpeg -i "$i" -r 0.0033 -vf scale=-1:1024 -vcodec png "${name}.png"
done

Responder1

find . -type f -name '*.mp4' -exec sh -c '
    name="${1%.*}"
    echo "$name"
    ffmpeg -i "$1" -r 0.0033 -vf scale=-1:1024 -vcodec png "${name}.png"
' find-sh {} \;

Notas:

  • No seu código original name=`echo "$i" | cut -d'.' -f1`há um fragmento de qualidade bastante baixa. Corta no primeiro ponto, isso parece errado. Não é o único problema, mas não vou entrar em detalhes. Se você deseja remover uma extensão, o caminho certo é name="${i%.*}".
  • *.mp4é citado por causaesse.
  • Menteesse.
  • find-shé explicadoaqui.
  • finddesce para subdiretórios, mas não segue links simbólicos por padrão. Se todos os "subdiretórios" forem .links de fato para diretórios, você pode pensar erroneamente que a ferramenta não desce em geral. Verifique man 1 find, -Lopção.

informação relacionada