Quantas instâncias de comandos do FFmpeg posso executar em paralelo?

14

Eu me cansei de executar 8 comandos em paralelo para utilizar completamente a CPU e acelerar as conversões de vídeo, algo assim:

ffmpeg -i input.mp4 -t 60 -f mp4 /mnt/a.mp4 > /dev/null 2>&1 &
ffmpeg -i input.mp4 -t 60 -f mp4 /mnt/b.mp4 > /dev/null 2>&1 &
ffmpeg -i input.mp4 -t 60 -f mp4 /mnt/c.mp4 > /dev/null 2>&1  &
ffmpeg -i input.mp4 -t 60 -f mp4 /mnt/d.mp4 > /dev/null 2>&1 &
ffmpeg -i input.mp4 -t 60 -f mp4 /mnt/e.mp4 > /dev/null 2>&1 &
ffmpeg -i input.mp4 -t 60 -f mp4 /mnt/f.mp4 > /dev/null 2>&1 &
ffmpeg -i input.mp4 -t 60  -f mp4 /mnt/g.mp4 > /dev/null 2>&1 &
ffmpeg -i input.mp4 -t 60 -f mp4  /mnt/h.mp4 > /dev/null 2>&1 &

2 a 3 deles são parados. Por que isso acontece? Esta é uma limitação do FFmpeg? Eu tentei isso em 16 máquinas core e 4 core, EC2 c1.xlarge e cc2.8xlarge. Mesmo comportamento. Eu tentei comandos complicados e simples, ainda assim, 2 ou 3 são parados.

    
por d33pika 18.01.2013 / 11:52

2 respostas

18

Ao responder a pergunta original, por que alguns dos trabalhos param, o ffmpeg na linha de comando é interativo. Está constantemente lendo entrada na linha de comando. Para que você execute todos eles em segundo plano, você deve mudar isso:

ffmpeg -i input.mp4 -t 60 -f mp4 /mnt/a.mp4 > /dev/null 2>&1 &

para isso:

ffmpeg -i input.mp4 -t 60 -f mp4 /mnt/a.mp4 </dev/null > /dev/null 2>&1 &

a adição de </dev/null diz ao ffmpeg para não procurar por entrada, e todos os seus trabalhos devem ser executados em segundo plano.

    
por 02.04.2013 / 23:04
7

Apenas pense no seu comando: uma maneira muito mais fácil de martelar a máquina com um único comando é concatenar tudo em uma única linha:

ffmpeg -i input.mp4 -t 60 -f mp4 /mnt/a.mp4 \
 -f mp4 /mnt/b.mp4 \
 -f mp4 /mnt/c.mp4 \
 -f mp4 /mnt/d.mp4 \
 -f mp4 /mnt/e.mp4 \
 -f mp4 /mnt/f.mp4 \
 -f mp4 /mnt/g.mp4 \
 -f mp4  /mnt/h.mp4 > /dev/null 2>&1

Você pode querer adicionar (dependendo da sua versão do ffmpeg) um sinalizador para dizer ao servidor para usar todos os processadores disponíveis

-threads 0

Para referência: link

    
por 06.02.2013 / 12:08