for file in *.avi; do ffmpeg -i "$file" "${file%.avi}".webm; done
Este é um Bash "for loop" e é ótimo para repetir tarefas. Seção a seção:
for file in *.avi;
file
se tornará a variável na próxima seção que se referirá a cada avi em particular no diretório atual para cada loop sucessivo.
O que personalizar:
-
file
pode ser renomeado para praticamente qualquer coisa:i
ef
parecem ser comumente usados. -
Você pode alterar
*.avi
para qualquer formato de entrada necessário, como*.mkv
.
do ffmpeg -i "$file" "${file%.avi}".webm;
Isso executará ffmpeg
para cada avi. A parte em chaves está usando expansão de parâmetro para remover a parte .avi
do nome do arquivo. Por exemplo, se um arquivo avi for denominado dog.avi
, a saída será denominada dog.webm
. Se você simplesmente usar "$file.webm"
para a saída, a saída terminará como dog.avi.webm
.
O que personalizar:
-
Você pode adicionar qualquer
ffmpeg
opções como de costume. -
A parte
%.
deve usar a mesma extensão da seçãofor file in
ou você pode alterar%.avi
para%.*
como curinga. -
.webm
pode ser alterado para qualquer formato de contêiner de saída necessário.
Se você deseja que os novos arquivos sejam enviados para um diretório denominado newvids
, crie o novo diretório e altere o comando para: "newvids/${file%.avi}.webm"
done
Isso diz ao loop que o comando terminou e agora $file
pode se referir ao próximo avi.