Converter vários vídeos em vários GIFs

1

Qual comando converterá vários arquivos de vídeo em vários GIFs?

Eu uso o seguinte comando para converter um vídeo em GIF:

ffmpeg -i input.flv -vf scale=320:-1 output.gif

Eu suponho que precisarei de um script bash ou algum comando com loop.

Este tópico está vagamente relacionado à minha pergunta.

    
por user8547 16.12.2014 / 15:07

1 resposta

3

Você pode usar o seguinte comando

for f in ./*.flv; do
    ffmpeg -i "$f" -vf scale=320:-1 "${f%.*}.gif"
done

Isso itera todos os arquivos que terminam com .flv no diretório atual, processando-os e alterando a extensão para .gif .

Observe que os nomes dos arquivos não devem conter espaços para isso funcionar.

Alternativamente, em um sistema GNU, você pode usar

find . -maxdepth 1 -name "*.flv" -print0 |
  sed 's/\.flv\x00/\x00/g' |
  xargs -r0 -I FILENAME ffmpeg -i FILENAME.flv -vf scale=320:-1 FILENAME.gif

Isso localizará todos os arquivos terminando com .flv (incluindo os ocultos) no diretório atual e imprimirá essa lista na saída padrão como uma string sed -delimited. Essa string é então filtrada através de xargs para remover as extensões e depois passada para ffmpeg -i FILENAME.flv -vf scale=320:-1 FILENAME.gif que executa o comando FILENAME , substituindo -maxdepth 1 pelo nome real do arquivo da lista.

Se você quiser converter todos os arquivos no diretório atual e em todos os subdiretórios (e seus subdiretórios e assim por diante), basta remover a parte %code% do comando.

    
por 16.12.2014 / 15:15