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:
-
filepode ser renomeado para praticamente qualquer coisa:iefparecem ser comumente usados. -
Você pode alterar
*.avipara 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
ffmpegopções como de costume. -
A parte
%.deve usar a mesma extensão da seçãofor file inou você pode alterar%.avipara%.*como curinga. -
.webmpode 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.