Estou executando o Debian GNU/Linux 11 (bullseye) x86_64 em um PC HP Compaq 8000 Elite CMT e ele tem uma CPU antiga (Intel Core 2 Duo E8400 (2) @ 3.000 GHz) e uma GPU (GeForce GT 730) que não 'não suporta codificação de vídeo, então nem considere o fato de eu ter uma GPU.
Tenho cento e nove imagens JPEG de 5184 * 3888px que desejo reduzir em FFmpeg. Executar este comando resulta em bugs do meu computador completamente:
ffmpeg -i *.JPG -vf scale=1296:972 *.JPG
Não consigo mexer o mouse, sair do programa, nada. Isso acontece depois que confirmo que desejo substituir arquivos com os mesmos nomes.
Como pude ver que nenhum arquivo foi alterado depois que reiniciei meu computador, estou assumindo que o FFmpeg não produziu nada antes de parar. Tentei o procedimento várias vezes e sempre travava o computador.
Como digo ao FFmpeg para "ir devagar" em vez de encher minha CPU e você poderia estimar uma boa configuração que devo usar para obter o desempenho ideal?
Use ImageMagic em vez de FFmpeg.
Por que você está usando o FFmpeg para processar imagens? Você está usando uma ferramenta usada principalmente para processar vídeo para processar imagens estáticas.
Sim, eu sei que o FFmpeg pode fazer o que você está tentando fazer, mas essa não é a ferramenta que muitos usariam em um caso como este.
Basta instalar o ImageMagick e executar este comando:
Este é um
find
script básico que uso para redimensionar imagens e funciona muito bem!E se esse script ainda sufocar seu sistema, use
sleep
para pausar cada loop do comando. Aqui está uma versão modificada do comando acima que adiciona uma pausa simples de 1 segundo entre cada loop.Ou, se esse material parecer muito complicado de usar - é simplesmente mais robusto e flexível na minha humilde opinião - você pode simplesmente usar esta variante do
for
loop que está usando, mas com o ImageMagick assim:Uma maneira de corrigir isso é usar um for-loop Bash simples de linha única, da seguinte maneira:
A
for i in *.JPG;
parte pode ser traduzida para o inglês como: "para todos os arquivos que terminam em '.JPG' (aliás, atribua o restante do nome à variável i )". Odo ffmpeg -i "$i"
pode ser traduzido como: "faça o seguinte: chame ffmpeg e insira todos os arquivos com um nome que corresponda ao valor de i , ou seja, todos os arquivos que terminam em .JPG." A-vf scale=1296:972
parte se traduz em: "aplique o filtro de vídeo 'escala', usando as dimensões 1296 por 972 (em pixels, por padrão)." A"$i"-scaled.jpg
parte se traduz em "todos os arquivos de saída devem ser nomeados com seu nome original, seguido pela string '-scaled.jpg'." A parte final,done
, não deve ser deixada de fora, pois é ela que encerra o loop for, resultando no término da execução do comando Bash.